|
|
????例是Introduction to 3D Game porgramming with DirectX9.0的Chapter 19\CartoonEffect
我想改成XFile的模型也可以用Cartoon Shaderinng
可是Vertex Shader如何用???Texture,一??是Cartoon Shadering,一??是XFile的Texture
???混合是否要用到Pixel Shader?
我???如何改? "XFile的模型才可以用Cartoon Shaderinng"?
PS:附件是Source code.
//#define XFILENAME "bigship1.x"
#define XFILENAME "tank.X"
content in "tooneffect_xfile.txt"
extern texture ColorMap;
struct VS_INPUT
{
vector position : POSITION;
vector normal : NORMAL;
float2 uvTex_color : TEXCOORD1;//add
};
struct VS_OUTPUT
{
vector position : POSITION;
float2 uvCoords : TEXCOORD;
float2 uvTex_color : TEXCOORD1;//add
vector diffuse : COLOR;
};
VS_OUTPUT Main(VS_INPUT input)
{
// zero out each member in output
VS_OUTPUT output = (VS_OUTPUT)0;
output.uvTex_color=input.uvTex_color;//add
//content in tooneffect.cpp
//boundingSphere;
float scale;
scale=2.5f/boundingSphere._radius;
D3DXMatrixScaling(&scaleMatrix,scale,scale,scale);//0.02f
D3DXMATRIX translateMatrix;
D3DXMatrixTranslation(&translateMatrix, 5.0f, 0.0f, 0.0f);
D3DXMatrixMultiply(&translateMatrix,&scaleMatrix,&translateMatrix);
WorldView = translateMatrix * view;
WorldViewProj = translateMatrix * view * ProjMatrix;
ToonEffect_XFile->SetTechnique( ToonTechHandle_XFile );
ToonEffect_XFile->SetMatrix(WorldViewHandle_XFile,&WorldView);
ToonEffect_XFile->SetMatrix(WorldViewProjHandle_XFile,&WorldViewProj);
ToonEffect_XFile->Begin(&numPasses, 0);
for(int i = 0; i < numPasses; i++)
{
for(int i = 0; i < Mtrls.size(); i++)
{
D3DXVECTOR4 tmpColor;
tmpColor=D3DXVECTOR4(Mtrls.Diffuse.r,Mtrls.Diffuse.g,Mtrls.Diffuse.b,Mtrls.Diffuse.a);
ToonEffect_XFile->SetVector(ColorHandle_XFile, &tmpColor);
//Device->SetMaterial( &Mtrls );
//Device->SetTexture(0, Textures);
///if (Textures)
// ToonEffect_XFile->SetTexture(ColorTexHandle_XFile, Textures);
ToonEffect_XFile->BeginPass(0);
Mesh->DrawSubset(i);
ToonEffect_XFile->EndPass();
}
}
Device->EndScene();
Device-> resent(0, 0, 0, 0);
ToonEffect->End();
ToonEffect_XFile->End();
|
|