Показать сообщение отдельно
Старый 19.11.2011, 01:41   #31
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нубошоу по шейдерам.

Вот так я в хорсе пытаюсь передать в шейдер матрицу от камеры с которой отрисована текстура с расстоянием от света до поверхности.

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 другой камеры?
(Offline)
 
Ответить с цитированием