Seite 2 von 2

Verfasst: 01.07.2009 14:15
von dllfreak2001
Wenn man genau hinschaut, sieht man das es unter den schwarzen Flecken vernünftig berechnet wird.
Sieht irgendwie aus als ob da Variablen zu hohe Werte bzw. irgendeine komische Klamotte mit der Präzision.

Also, dieser "Fehler" ist auf allen Karten mit R300 / R350 rekonstruierbar und das auch unter verschiedenen Treiberversionen.

Verfasst: 01.07.2009 16:03
von DarkDragon
dllfreak2001 hat geschrieben:Wenn man genau hinschaut, sieht man das es unter den schwarzen Flecken vernünftig berechnet wird.
Sieht irgendwie aus als ob da Variablen zu hohe Werte bzw. irgendeine komische Klamotte mit der Präzision.

Also, dieser "Fehler" ist auf allen Karten mit R300 / R350 rekonstruierbar und das auch unter verschiedenen Treiberversionen.
Kannst du mal "data/normalmap.material" mit dem hier überschreiben:

Code: Alles auswählen

vertex_program normalVS/HLSL hlsl
{
   source normalmap_vs.hlsl
   entry_point main
   target vs_1_1
   
   default_params
   {
	param_named_auto worldViewProj      worldviewproj_matrix
	param_named_auto worldView          worldview_matrix
        param_named_auto view               view_matrix
	param_named_auto lightPosition      light_position 0
   }
}
fragment_program normalPS/HLSL hlsl
{
   source normalmap_ps.hlsl
   entry_point main
   target ps_2_0

   default_params
   {
	param_named_auto lightColorDiffuse  light_diffuse_colour 0
	param_named_auto lightColorSpecular light_specular_colour 0
	param_named      shininess          float                 127.0
   }
}

vertex_program normalVS unified
{
   delegate normalVS/HLSL
}
fragment_program normalPS unified
{
   delegate normalPS/HLSL
}


material Normalmap
{
	technique
	{
		// Draw it black
		pass
		{
			depth_write off
			lighting off
			scene_blend zero zero
		}
		
		// For the lights
		pass
		{
			depth_write off
			iteration once_per_light
			scene_blend add
			lighting on

			texture_unit
			{
				texture normalmap.png -1
			}
			
			vertex_program_ref normalVS
			{
			}

			fragment_program_ref normalPS
			{
			}
		}

		// For the original textures
		pass
		{
			depth_write on
			scene_blend modulate
			lighting off

			texture_unit
			{
				texture texture.png -1
			}
		}
	}

}
Vielleicht geht das jetzt. :freak:

Verfasst: 01.07.2009 16:55
von dllfreak2001
:allright: Jetzt läufts einwandfrei :)

Verfasst: 01.07.2009 18:15
von Thalius
:oops: ah fuck .. habs mir auch angesehen ... lag tatsächlich nur am depth-write .. gaah!

Verfasst: 01.07.2009 19:14
von DarkDragon
Thalius hat geschrieben::oops: ah fuck .. habs mir auch angesehen ... lag tatsächlich nur am depth-write .. gaah!
Naja, nach dem
Wenn man genau hinschaut, sieht man das es unter den schwarzen Flecken vernünftig berechnet wird.
Wars ja kein Rätsel mehr. :freak:

Ich erkenn in den Artefakten aber meistens Streifen und nicht solche Muster wie bei den gezeigten Screenshots :lol: . Liegt vermutlich daran, dass sich die Streifenmuster der Passes überlagern und somit eher "grieselige" Rechtecke fehlen.

Plattformunabhängigkeit

Verfasst: 29.07.2011 08:48
von Vermilion
Gestern Abend habe ich festgestellt, dass man auf Mac OS X nichts außer einer glatten Kugel sieht. Dann bin ich darauf gekommen, das HLSL DirectX spezifisch ist und auf Mac OS X sowie Linux nur OpenGL verfügbar ist und OGRE auch mit dem OpenGL Rendersystem läuft. Dementsprechend sind für diese Betriebssysteme GLSL Programme nötig. Diese lassen sich aber nicht unter Windows benutzen. Das heißt, dass man letztendlich alle Materials bzw. Shader zwei mal erstellen muss, ein Mal für Windows als HLSL und ein Mal als GLSL für andere Betriebssysteme, die von PureBasic unterstützt werden.

Ich wollte nur neu gewonnenes Wissen bezüglich des Themas teilen.