|
|

楼主 |
发表于 2006-11-23 23:23:00
|
显示全部楼层
Re:shader 能实现FLAT着色的效果吗?
[em10] [em4]
"设置D3DSHADE_FLAT,然后在shader里用color0/1 "
哎~搞了一晚上,还是没搞出来,这个COLOR0怎么用?`
下面是GROUND效果的基础代码,大侠们能帮我改一下,让它能实现FLAT的效果吧``,好吗?`
// variables that are provided by the application
float4x4 matWorldViewProj;
float4x4 matWorld;
float4 vecLightDir;
// Output channels
struct VS_OUTPUT
{
float4 Pos : POSITION;
float3 Light : TEXCOORD0;
float3 Norm : TEXCOORD1;
};
// vertex shader function (input channels)
VS_OUTPUT VS(float4 Pos : POSITION, float3 Normal : NORMAL)
{
VS_OUTPUT Out = (VS_OUTPUT)0;
Out.Pos = mul(Pos, matWorldViewProj); // transform Position
Out.Light = normalize(vecLightDir); // output light vector
Out.Norm = normalize(mul(Normal, matWorld)); // transform Normal and normalize it
return Out;
}
// Pixel Shader (input channels) utput channel
float4 PS(float3 Light: TEXCOORD0, float3 Norm : TEXCOORD1) : COLOR
{
float4 diffuse = { 1.0f, 0.0f, 0.0f, 1.0f};
float4 ambient = {0.1, 0.0, 0.0, 1.0};
return ambient + diffuse * saturate(dot(Light, Norm));
}
// -------------------------------------------------------------
technique TShader
{
pass P0
{
// compile shaders
VertexShader = compile vs_1_1 VS();
PixelShader = compile ps_1_4 PS();
}
}
|
|