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