Тема: Sigel
Показать сообщение отдельно
Старый 18.03.2009, 01:51   #538
jimon
 
Сообщений: n/a
Ответ: Sigel

MoKa
да,но тебе так хочется иметь отдельную технику RenderZToTexture ?

HolyDel
в принципе можно, но тогда еще большая нагрузка на код шейдера

вот дефолтовый шейдер :
void DefaultMaterial_VS(in float4 Position : POSITION,in float2 UV : TEXCOORD0,out float4 oPosition : POSITION,out float2 oUV : TEXCOORD0,uniform float4x4 ProjMat,uniform float4x4 TexMat)
<
	string VL0 = "Position";
	string VL2 = "UV";
>
{
	oPosition = mul(ProjMat,Position);
	oUV = mul(TexMat,float4(UV.x,UV.y,0,1)).xy;
}
void DefaultMaterial_FS(in float2 UV : TEXCOORD0,out float4 oColor : COLOR,uniform sampler2D Diff : TEX0)
{
	oColor = tex2D(Diff,UV);
}
float4x4 ProjViewModelMatrix;
float4x4 TexMatrix;
sampler2D DiffuseTexture;
technique DefaultMaterial
<
	string PROJMAT = "ProjViewModelMatrix";
	string TEXMAT = "TexMatrix";
	string TEX0 = "DiffuseTexture";
>
{
	pass
	{
		VertexProgram = compile latest DefaultMaterial_VS(ProjViewModelMatrix,TexMatrix);
		FragmentProgram = compile latest DefaultMaterial_FS(DiffuseTexture);
	}
}"
VL0-VL4 это слои данных вертексов (position,normal,uv,color но можно и свои данные пихать)
TEX0-TEX8 слои текстур (до 32, ограничено настройками при компиляции)
техники могут быть разного уровня качества графики, тогда надо задать имя техники так DefaultMaterial__Q3 (где может быть Q0,Q1,Q2,Q3,Q4 от самого низкого до самого высокого качества) и двиг тогда выберет оптимальную технику

как видим уже тут у меня далеко не упрёшь, надо соблюдать формат аннотаций
 
Ответить с цитированием