1
안녕하세요 쉐이더를 통해 텍스처를 렌더링하는 데 문제가 있습니다. 왜 그런지 모르겠지만 셰이더 파일은 단순한 phong 조명을 구현하고 간단한 쿼드에서는 텍스처를 보간합니다. 그러나 텍스처와 텍스처가없는 것처럼 조명과 재질 색을 모두 얻습니다. (텍스처는 스톤 텍스처입니다. (PS : WHITE = D3DXCOLOR (1.0F, 1.0F, 1.0F하지만 난 점점 오전 모든 화이트 색상) 여기Direct3D의 텍스처 매핑 문제
다음과 같이
//------------------------------------
uniform extern float4x4 matWVP;
uniform extern float4x4 matITW;
uniform extern float4x4 matW;
uniform extern float4 DiffMatr;
uniform extern float4 DiffLight;
uniform extern float4 AmbLight;
uniform extern float4 SpecLight;
uniform extern float4 AmbMatr;
uniform extern float3 LightPosW;
uniform extern float4 SpecMatr;
uniform extern float SpecPower;
uniform extern float3 EyePos;
uniform extern texture Tex;
//------------------------------------
sampler sTex = sampler_state
{
Texture = <Tex>;
Minfilter = LINEAR;
Magfilter = LINEAR;
Mipfilter = POINT;
AddressU = WRAP;
AddressV = WRAP;
};
struct vOut {
float4 posH : POSITION0;
float3 posW : TEXCOORD0;
float3 normW: TEXCOORD1;
float2 cTex : TEXCOORD2;
};
//------------------------------------
vOut VS_Def(float3 posL : POSITION0
, float3 normL : NORMAL0
, float2 cTex : TEXCOORD0)
{
vOut V = (vOut)0;
V.posH = mul(float4(posL, 1.0f), matWVP);
V.posW = mul(float4(posL, 1.0f), matW).xyz;
V.normW = mul(float4(normL, 1.0f), matITW).xyz;
V.normW = normalize(V.normW);
V.cTex = V.cTex;
return V;
}
float4 PS_Def(float3 posW : TEXCOORD0
,float4 normW : TEXCOORD1
,float2 cTex : TEXCOORD2): COLOR
{
float3 LightVec = LightPosW - posW;
LightVec = normalize(LightVec);
float3 RefLightVec = reflect(-LightVec, normW);
float3 EyeVec = EyePos - posW;
EyeVec = normalize(EyePos - posW);
float d = max(0.0f, dot(normW, LightVec));
float s = pow(max(dot(RefLightVec, EyeVec), 0.0f), SpecPower);
float3 Diff = d * (DiffMatr * DiffLight).rgb;
float3 Amb = (AmbMatr * AmbLight).rgb;
float3 Spec = s * (SpecMatr * SpecLight).rgb;
float3 TexColor = tex2D(sTex, cTex.xy).rgb;
float3 color = Diff + Amb;
return float4(color * TexColor + Spec, DiffMatr.a);;
}
//-----------------------------------
technique DefTech
{
pass p0
{
VertexShader = compile vs_2_0 VS_Def();
PixelShader = compile ps_2_0 PS_Def();
}
}
조명 및 재질 색상은 쉐이더 파일입니다 , 1.0f))
확산 재료 = 백색; 주변 재질 = 흰색; 경면 재질 = 흰색 * 0.5f;
확산 조명 = 흰색 * 0.8f; 주변 조명 = 흰색 * 0.8f; 경면 조명 = 흰색 * 0.5f; Specular Power = 48.0f; 정점 셰이더에서
도움을 감사합니다, 여러분
이놈이어야한다
이 이 모든 시간. 감사 – DBoxer