Я сделал небольшой пиксельный шейдер марева:
Код:
float OffsetScale;
float fTime0_X;
sampler Texture0;
sampler Texture1;
float4 ps_main(float2 texCoord: TEXCOORD0) : COLOR
{
// Read and scale the distortion offsets
//float2 offset = tex3D(Texture1,float3(4*texCoord.x,4*texCoord.y+fTime0_X,0)).xy;
//offset = ((offset*2.0)-1.0)*OffsetScale;
float3 coord;
coord.x = texCoord.x * 4;
coord.y = texCoord.y * 4 + fTime0_X;
coord.z = 0;
float offset = tex2D(Texture1, coord);
offset*=OffsetScale;
return tex2D(Texture0,float2(texCoord.x+offset, texCoord.y+offset));
}
В этом коде OffsetScale = 0.025;
sampler Texture0 = моя сцена, в предыдущем Pass этого эффекта это была цель визуализации в которую я занес сцену.
sampler Texture1 = текстура шума, серых оттенков, как вроде мрамор.
fTime0_X - время для изменения координат текстуры.
Так вот в этом шейдере я все понимаю, и вот его скриншот:
Но самое интересное когда я убираю из формулы OffsetScale, то есть вобще закоментирую ее в коде шейдера:
Код:
float offset = tex2D(Texture1, coord);
// offset*=OffsetScale;
return tex2D(Texture0,float2(texCoord.x+offset, texCoord.y+offset));
то изображения вобще не видно. Вот скриншот без OffsetScale:
Вопрос - почему надо эта переменная OffsetScale в коде. И самое интересное почему она должна быть равна 0,025 - когда я ставлю в ней другие значение картинка искажаеться как в последнем скриншоте. Только надо 0,025. Почему,