Ответ: Нубошоу по шейдерам.
Вот так я в хорсе пытаюсь передать в шейдер матрицу от камеры с которой отрисована текстура с расстоянием от света до поверхности.
xSetEffectMatrix(entity,"v_proj",xGetViewProjMatri x(shadecam),0);
в шейдере я добавил:
В выходных данных вершинного
float2 shtexcoors : TEXCOORD4;
а матрица:
float4x4 v_proj;
потом я записываю их так в вершинном
float4 pos=mul(input.position, v_proj);
output.shtexcoors = float2((pos.x/pos.w+1)/2,(pos.y/pos.w-1)/2);
и наконец в пиксельном:
float4 shade=tex2D(shadeSampler,input.shtexcoors*0.25);
float4 color=0.75*shade+0.25*(diffuse * lit * lightColor+diffuse*ambient);
return color;
Я как бы добавляю 75% к обычному цвету от спроецированной текстуры.
Но оно мне рисует на всей поверхности только одну точку из текстуры.
Хотя когда я использую передаваемую хорсом матрицу все происходит как надо.
float4 pos=mul(input.position, matrixWorldViewProj);
Как мне передать из хорса в шейдер matrixWorldViewProj другой камеры?
|