КРУУТААА!!!
Всё работает!!
СПАСИБО ВСЕМ ОГРОМНОЕ ЗА ПОМОЩЬ!!!!!
оказалось все просто
Vertex shader
float4x4 matViewProjection;
void vs_main(
in float4 iPOS : POSITION,
in float2 iTC : TEXCOORD,
out float4 oPOS : POSITION,
out float2 oTC : TEXCOORD0,
out float2 oDIST : TEXCOORD1) //для дистанции хватит и одного флоата, но не знаю каким типом заменить
{
oPOS = mul(iPOS, matViewProjection );
oTC = iTC;
oDIST = oPOS.z;
}
Pixel shader
sampler TX1;
float4 ps_main(
float2 TXC : TEXCOORD0,
float2 DIST : TEXCOORD1
) : COLOR0
{
float4 TXOUT = tex2D(TX1, TXC);
clip(DIST<300 ? -1:1); //почему то дистанция 300 - а по рисунку не скажешь что так много
return TXOUT;
}
Теперь такой шейдер я хочу наложить на на 3 уровня мешей (low,normal,hi) и должно получится так, что один меш начнет срезаться, а другой на месте среза появляться.
Вот только есть одно но - меш который будет normal, должен исчезать на одной дистанции и появляться на другой.
Можно ли использовать оператор AND?
т.е.
clip(DIST<300 AND DIST>1000 ? -1:1);
И еще вот такой вопросик, надо ли в блитце дополнительно скрывать ентити, чтобы видяха не обрабатывала уже "вырезанный" меш?