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 от самого низкого до самого высокого качества) и двиг тогда выберет оптимальную технику
как видим уже тут у меня далеко не упрёшь, надо соблюдать формат аннотаций