Once more thing to check is that you executable is added to the list of applications to use the Debug runtime in the DirectX Control Panel.
How do I do that ? And is it necessary when I debug with visual studio 2013 ?
The shader may be ok. But may be I am setting up the variables in the shader in a wrong way I guess. Here is the shader code.
# include "LightHelper.fx"
cbuffer cbPerFrame
{
DirectionalLight gDirLights[3];
float3 gEyePosW;
float gFogStart;
float gFogRange;
float4 gFogColor;
};
cbuffer cbPerObject
{
float4x4 gWorld;
float4x4 gWorldInvTranspose;
float4x4 gWorldViewProj;
float4x4 gTexTransform;
Material gMaterial;
};
cbuffer cbSkinned
{
float4x4 gBoneTransforms[96];
};
Texture2D gDiffuseMap;
SamplerState samAnisotropic
{
Filter = ANISOTROPIC;
MaxAnisotropy = 4;
AddressU = WRAP;
AddressV = WRAP;
};
struct VertexIn
{
float3 PosL : POSITION;
float3 NormalL : NORMAL;
float2 Tex : TEXCOORD;
};
struct SkinnedVertexIn
{
float3 PosL : POSITION;
float3 NormalL : NORMAL;
float2 Tex : TEXCOORD;
float3 Weights : WEIGHTS;
uint4 BoneIndices : BONEINDICES;
};
struct VertexOut
{
float4 PosH : SV_POSITION;
float3 PosW : POSITION;
float3 NormalW : NORMAL;
float2 Tex : TEXCOORD;
};
VertexOut VS(VertexIn vin)
{
VertexOut vout;
vout.PosW = mul(float4(vin.PosL, 1.0f), gWorld).xyz;
vout.NormalW = mul(vin.NormalL, (float3x3) gWorldInvTranspose);
vout.PosH = mul(float4(vin.PosL, 1.0f), gWorldViewProj);
vout.Tex = mul(float4(vin.Tex, 0.0f, 1.0f), gTexTransform).xy;
return vout;
}
VertexOut SkinnedVS(SkinnedVertexIn vin)
{
VertexOut vout;
float weights[4] = { 0.0f, 0.0f, 0.0f, 0.0f };
weights[0] = vin.Weights.x;
weights[1] = vin.Weights.y;
weights[2] = vin.Weights.z;
weights[3] = 1.0f - weights[0] - weights[1] - weights[2];
float3 posL = float3(0.0f, 0.0f, 0.0f);
float3 normalL = float3(0.0f, 0.0f, 0.0f);
for (int i = 0; i < 4; i++)
{
posL += weights[i] * mul(float4(vin.PosL, 1.0f), gBoneTransforms[vin.BoneIndices[i]]).xyz;
normalL += weights[i] * mul(vin.NormalL, (float3x3)gBoneTransforms[vin.BoneIndices[i]]).xyz;
}
vout.PosW = mul(float4(posL, 1.0f), gWorld).xyz;
vout.NormalW = mul(normalL, (float3x3)gWorldInvTranspose);
vout.PosH = mul(float4(posL, 1.0f), gWorldViewProj);
vout.Tex = mul(float4(vin.Tex, 0.0f, 1.0f), gTexTransform).xy;
return vout;
}
float4 PS(VertexOut pin, uniform int gLightCount, uniform bool gUseTexure, uniform bool gAlphaClip, uniform bool gFogEnabled) : SV_Target
{
// Interpolating normal can unnormalize it, so normalize it.
pin.NormalW = normalize(pin.NormalW);
// The toEye vector is used in lighting.
float3 toEye = gEyePosW - pin.PosW;
// Cache the distance to the eye from this surface point.
float distToEye = length(toEye);
// Normalize.
toEye /= distToEye;
// Default to multiplicative identity.
float4 texColor = float4(1, 1, 1, 1);
if (gUseTexure)
{
// Sample texture.
texColor = gDiffuseMap.Sample(samAnisotropic, pin.Tex);
if (gAlphaClip)
{
// Discard pixel if texture alpha < 0.1. Note that we do this
// test as soon as possible so that we can potentially exit the shader
// early, thereby skipping the rest of the shader code.
clip(texColor.a - 0.1f);
}
}
//
// Lighting.
//
float4 litColor = texColor;
if (gLightCount > 0)
{
// Start with a sum of zero.
float4 ambient = float4(0.0f, 0.0f, 0.0f, 0.0f);
float4 diffuse = float4(0.0f, 0.0f, 0.0f, 0.0f);
float4 spec = float4(0.0f, 0.0f, 0.0f, 0.0f);
// Sum the light contribution from each light source.
[unroll]
for (int i = 0; i < gLightCount; ++i)
{
float4 A, D, S;
ComputeDirectionalLight(gMaterial, gDirLights[i], pin.NormalW, toEye,
A, D, S);
ambient += A;
diffuse += D;
spec += S;
}
// Modulate with late add.
litColor = texColor*(ambient + diffuse) + spec;
}
//
// Fogging
//
if (gFogEnabled)
{
float fogLerp = saturate((distToEye - gFogStart) / gFogRange);
// Blend the fog color and the lit color.
litColor = lerp(litColor, gFogColor, fogLerp);
}
// Common to take alpha from diffuse material and texture.
litColor.a = gMaterial.Diffuse.a * texColor.a;
return litColor;
}
technique11 Light1
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, false, false, false)));
}
}
technique11 Light2
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, false, false, false)));
}
}
technique11 Light3
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, false, false, false)));
}
}
technique11 Light0Tex
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, false, false)));
}
}
technique11 Light1Tex
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, false, false)));
}
}
technique11 Light2Tex
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, false, false)));
}
}
technique11 Light3Tex
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, false, false)));
}
}
technique11 Light0TexAlphaClip
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, true, false)));
}
}
technique11 Light1TexAlphaClip
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, true, false)));
}
}
technique11 Light2TexAlphaClip
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, true, false)));
}
}
technique11 Light3TexAlphaClip
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, true, false)));
}
}
technique11 Light1Fog
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, false, false, true)));
}
}
technique11 Light2Fog
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, false, false, true)));
}
}
technique11 Light3Fog
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, false, false, true)));
}
}
technique11 Light0TexFog
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, false, true)));
}
}
technique11 Light1TexFog
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, false, true)));
}
}
technique11 Light2TexFog
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, false, true)));
}
}
technique11 Light3TexFog
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, false, true)));
}
}
technique11 Light0TexAlphaClipFog
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, true, true)));
}
}
technique11 Light1TexAlphaClipFog
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, true, true)));
}
}
technique11 Light2TexAlphaClipFog
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, true, true)));
}
}
technique11 Light3TexAlphaClipFog
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, true, true)));
}
}
technique11 Light1Reflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, false, false, false)));
}
}
technique11 Light2Reflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, false, false, false)));
}
}
technique11 Light3Reflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, false, false, false)));
}
}
technique11 Light0TexReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, false, false)));
}
}
technique11 Light1TexReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, false, false)));
}
}
technique11 Light2TexReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, false, false)));
}
}
technique11 Light3TexReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, false, false)));
}
}
technique11 Light0TexAlphaClipReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, true, false)));
}
}
technique11 Light1TexAlphaClipReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, true, false)));
}
}
technique11 Light2TexAlphaClipReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, true, false)));
}
}
technique11 Light3TexAlphaClipReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, true, false)));
}
}
technique11 Light1FogReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, false, false, true)));
}
}
technique11 Light2FogReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, false, false, true)));
}
}
technique11 Light3FogReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, false, false, true)));
}
}
technique11 Light0TexFogReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, false, true)));
}
}
technique11 Light1TexFogReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, false, true)));
}
}
technique11 Light2TexFogReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, false, true)));
}
}
technique11 Light3TexFogReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, false, true)));
}
}
technique11 Light0TexAlphaClipFogReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, true, true)));
}
}
technique11 Light1TexAlphaClipFogReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, true, true)));
}
}
technique11 Light2TexAlphaClipFogReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, true, true)));
}
}
technique11 Light3TexAlphaClipFogReflect
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, true, true)));
}
}
technique11 Light1Skinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, false, false, false)));
}
}
technique11 Light2Skinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, false, false, false)));
}
}
technique11 Light3Skinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, false, false, false)));
}
}
technique11 Light0TexSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, false, false)));
}
}
technique11 Light1TexSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, false, false)));
}
}
technique11 Light2TexSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, false, false)));
}
}
technique11 Light3TexSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, false, false)));
}
}
technique11 Light0TexAlphaClipSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, true, false)));
}
}
technique11 Light1TexAlphaClipSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, true, false)));
}
}
technique11 Light2TexAlphaClipSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, true, false)));
}
}
technique11 Light3TexAlphaClipSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, true, false)));
}
}
technique11 Light1FogSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, false, false, true)));
}
}
technique11 Light2FogSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, false, false, true)));
}
}
technique11 Light3FogSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, false, false, true)));
}
}
technique11 Light0TexFogSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, false, true)));
}
}
technique11 Light1TexFogSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, false, true)));
}
}
technique11 Light2TexFogSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, false, true)));
}
}
technique11 Light3TexFogSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, false, true)));
}
}
technique11 Light0TexAlphaClipFogSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, true, true)));
}
}
technique11 Light1TexAlphaClipFogSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, true, true)));
}
}
technique11 Light2TexAlphaClipFogSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, true, true)));
}
}
technique11 Light3TexAlphaClipFogSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, true, true)));
}
}
technique11 Light1ReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, false, false, false)));
}
}
technique11 Light2ReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, false, false, false)));
}
}
technique11 Light3ReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, false, false, false)));
}
}
technique11 Light0TexReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, false, false)));
}
}
technique11 Light1TexReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, false, false)));
}
}
technique11 Light2TexReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, false, false)));
}
}
technique11 Light3TexReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, false, false)));
}
}
technique11 Light0TexAlphaClipReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, true, false)));
}
}
technique11 Light1TexAlphaClipReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, true, false)));
}
}
technique11 Light2TexAlphaClipReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, true, false)));
}
}
technique11 Light3TexAlphaClipReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, true, false)));
}
}
technique11 Light1FogReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, false, false, true)));
}
}
technique11 Light2FogReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, false, false, true)));
}
}
technique11 Light3FogReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, false, false, true)));
}
}
technique11 Light0TexFogReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, false, true)));
}
}
technique11 Light1TexFogReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, false, true)));
}
}
technique11 Light2TexFogReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, false, true)));
}
}
technique11 Light3TexFogReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, false, true)));
}
}
technique11 Light0TexAlphaClipFogReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(0, true, true, true)));
}
}
technique11 Light1TexAlphaClipFogReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(1, true, true, true)));
}
}
technique11 Light2TexAlphaClipFogReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(2, true, true, true)));
}
}
technique11 Light3TexAlphaClipFogReflectSkinned
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, SkinnedVS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_5_0, PS(3, true, true, true)));
}
}
I modified the original skin.fx from Frank D Luna . I tried to set the variables this way.
The function declarations :
void SetWorldViewProj(CXMMATRIX M) { WorldViewProj->SetMatrix(reinterpret_cast<const float*>(&M)); }
void SetWorld(CXMMATRIX M) { World->SetMatrix(reinterpret_cast<const float*>(&M)); }
void SetWorldInvTranspose(CXMMATRIX M) { WorldInvTranspose->SetMatrix(reinterpret_cast<const float *> (&M)); }
void SetBoneTransforms(const XMFLOAT4X4 *M, int cnt) { BoneTransforms->SetMatrixArray(reinterpret_cast<const float*>(M), 0, sizeof(M)*cnt); }
void SetTexTransform(CXMMATRIX M) { TexTransform->SetMatrix(reinterpret_cast<const float *> (&M)); }
void SetEyePosW(const XMFLOAT3 &v) { EyePosW->SetRawValue(&v,0,sizeof(XMFLOAT3)); }
void SetFogColor(const FXMVECTOR v) { FogColor->SetFloatVector(reinterpret_cast<const float *>(&v)); }
void SetFogStart(float f) { FogStart->SetFloat(f); }
void SetFogRange(float f) { FogRange->SetFloat(f); }
void SetDirLights(const DirectionalLight* lights) { DirLights->SetRawValue(lights, 0, 3 * sizeof(DirectionalLight)); }
void SetMaterial(const Material& mat) { Mat->SetRawValue(&mat, 0, sizeof(Material)); }
void SetDiffuseMap(ID3D11ShaderResourceView *tex) { DiffuseMap->SetResource(tex); }
And using the functions:
mModel.meshGeo.d3dContext->IASetInputLayout(InputLayouts::PosNormalTexSkin);
Effects::SkinFX->SetWorld(World);
Effects::SkinFX->SetWorldInvTranspose(worldInvTranspose);
Effects::SkinFX->SetWorldViewProj(worldViewProj);
Effects::SkinFX->SetTexTransform(XMMatrixIdentity());
Effects::SkinFX->SetDirLights(&dirLight[0]);
Effects::SkinFX->SetBoneTransforms(mBones.mBoneTransforms, 96);
I declared nBoneTransforms as a pointer
mBoneTransforms = new XMFLOAT4X4[96];
Initially I am setting this to an identity matrices array.