2 registered members (Hanky27, AndrewAMD),
1,266
guests, and 1
spider. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Shader Optimieren
#35334
10/26/04 00:11
10/26/04 00:11
|
Joined: Jan 2004
Posts: 513
mpde
OP
User
|
OP
User
Joined: Jan 2004
Posts: 513
|
Hallo! eine kleine frage an die profis unter euch, nach dem ich es nun endlich doch geschafft habe einen dx9 shader auf die levelgeometrie zu legen wollte ich mal fragen ob es eine möglichkeit gibt, diesen zu opimieren in punkto framrate weil diese recht langsam ist. mfg mpde
|
|
|
Re: Shader Optimieren
[Re: Joey]
#35336
10/28/04 06:25
10/28/04 06:25
|
Joined: Jan 2004
Posts: 513
mpde
OP
User
|
OP
User
Joined: Jan 2004
Posts: 513
|
ja danke dir aber bitte ein tip was sollt ich hier umschreiben damit die framrate nicht so absackt, funktioniert tuts ja auf levelblocks aber so langsam... wäre für tips dankbar
//**************************************************************// // SpotlightWithBump //--------------------------------------------------------------// float4x4 matWorldViewProj : ViewProjection;//view_proj_matrix : ViewProjection; float4 matWorld;//view_position : ViewPosition; float4 lightDir = { 0.9f, 0.9f, 0.9f, 0.9f }; // Min/Max -10 <> 10 { 0.80f, -1.40f, 0.38f, 1.00f } float spread = {25.00f}; // Min/Max 0.00 <> 100.00 default 23.00 float sharpness = {0.25f}; // Min/Max 0.00 <> 50.00 default 26.00
struct Lit_object_Vertex_Shader_VS_OUTPUT { float4 Pos: POSITION; float2 texCoord: TEXCOORD0; float3 lightVec: TEXCOORD1; float3 lightDir: TEXCOORD2; float3 viewVec: TEXCOORD3; };
Lit_object_Vertex_Shader_VS_OUTPUT Lit_object_Vertex_Shader_main (float4 Pos: POSITION, float3 normal: NORMAL, float2 texCoord: TEXCOORD0, float3 binormal: BINORMAL, float3 tangent: TANGENT) { Lit_object_Vertex_Shader_VS_OUTPUT Out;
Out.Pos = mul( Pos, matWorldViewProj); Out.texCoord = texCoord;
float3 lightVec = lightDir - Pos.xyz; // Transform light vector into tangent-space Out.lightVec.x = dot(lightVec, tangent); Out.lightVec.y = dot(lightVec, binormal); Out.lightVec.z = dot(lightVec, normal);
// Transform light direction into tangent-space Out.lightDir.x = dot(lightDir, tangent); Out.lightDir.y = dot(lightDir, binormal); Out.lightDir.z = dot(lightDir, normal);
float3 viewVec = matWorld - Pos; // Transform view vector into tangent-space Out.viewVec.x = dot(viewVec, tangent); Out.viewVec.y = dot(viewVec, binormal); Out.viewVec.z = dot(viewVec, normal);
return Out; }
texture entSkin1; sampler BaseMap = sampler_state { Texture = (entSkin1); //// ADDRESSU = WRAP; //// ADDRESSV = WRAP; //// MAGFILTER = LINEAR; //// MINFILTER = ANISOTROPIC; //// MIPFILTER = LINEAR; //// MAXANISOTROPY = 16; };
texture mtlSkin1; sampler BumpMap = sampler_state { Texture = (mtlSkin1); //// ADDRESSU = WRAP; //// ADDRESSV = WRAP; //// MAGFILTER = LINEAR; //// MINFILTER = ANISOTROPIC; //// MIPFILTER = LINEAR; //// MAXANISOTROPY = 16; }; float4 Lit_object_Pixel_Shader_main (float2 texCoord: TEXCOORD0, float3 lightVec: TEXCOORD1, float3 lightDir: TEXCOORD2, float3 viewVec: TEXCOORD3) : COLOR { float4 base = tex2D(BaseMap, texCoord); float3 bump = tex2D(BumpMap, texCoord) * 2 - 1;
// Standard lighting float3 lVec = normalize(lightVec); float diffuse = saturate(dot(lVec, bump)); float specular = pow(saturate(dot(reflect(normalize(-viewVec), bump), lVec)), 16);
// The angle between light vector and spotlight direction // defines the spot. float spot = saturate(sharpness * pow(saturate(dot(lVec, -lightDir)), spread));
return (diffuse * base + specular) * spot + 0.25 * base; }
//--------------------------------------------------------------// // Technique Section for HLSL Illumination Effects //--------------------------------------------------------------// technique SpotlightWithBump {
pass Lit_object { VertexShader = compile vs_1_1 Lit_object_Vertex_Shader_main(); PixelShader = compile ps_2_0 Lit_object_Pixel_Shader_main(); }
}
mindestens shader 2.0
mfg
mpde
|
|
|
Re: Shader Optimieren
[Re: Joey]
#35338
10/29/04 00:13
10/29/04 00:13
|
Joined: Jan 2004
Posts: 513
mpde
OP
User
|
OP
User
Joined: Jan 2004
Posts: 513
|
In Antwort auf:
... was macht dein shader denn überhaupt?
spotlicht das auf metalflächen einen richtig toole glanzeeffect zaubert, und dazu ganz normales bumpmapping... bei ganz normalen modellen geht es eigentlich noch mit der framerate aber auf levelblocks ist es einfach zu langsam... schade das keiner ne lösung weiss
mfg
mpde
|
|
|
Re: Shader Optimieren
[Re: Christoph_B]
#35342
10/30/04 17:28
10/30/04 17:28
|
Joined: Jan 2004
Posts: 513
mpde
OP
User
|
OP
User
Joined: Jan 2004
Posts: 513
|
In Antwort auf:
Aber das bumpmapping an sich ist gar nicht sichtbar irgendwie, oder?
Hallo !
Stelle mal die textur im WED die Du dem block zugewiesen hast auf flat dann wirst Du es auch bumpen sehn.
Warum es nur dann funzt wäre meine nächste frage gewesen.
Ich habe auch noch andere Shader ausprobiert und irgendwie... bin mir jetzt nicht sicher sind nur die HLSL Shader so langsam. Die ASM Shader sind wesentlich schneller.
mfg
mpde
|
|
|
|