2012-03-22 2 views
0

Я пытаюсь использовать данные вершин в поверхностном шейдере, чтобы получить угол. У меня камера с центром в 0,0. В какой системе координат v.vertex в вершинной функции?Формат вершин шейдера Unity в поверхностном шейдере

#pragma surface surf Lambert vertex:vert nolightmap 

void vert (inout appdata_full v, out Input o) 
    { 
     o.svc =(1-(_vc*v.vertex.z)/sqrt(pow(v.vertex.x,2) + pow(v.vertex.y,2) + pow(v.vertex.z,2)))/sqrt(1 - _vc * _vc); 
    } 

Я думал, что это будет мировая система координат, но я получаю разные результаты для объектов, которые вращались в единстве, когда по сравнению с объектами, которые вращались в 3DS Max впереди время, чтобы посмотреть ту же самую вершину мудро. Какие данные я получаю с помощью v.vertex.xyz?

+0

Вы должны использовать умножение вместо полномочий и обратный квадратный корень вместо деления на квадратные корни. Кроме того, графические процессоры параллельны и предлагают swizzling. Очистите это до v.vertex.xyz * v.vertex.xyz. – Jessy

ответ

1

Объект/Модель/Местное пространство. Единственный случай, когда это будет не совсем верно, - для пакетных сеток. Batching помещает все соответствующие сетки в одно и то же пространство, которое, как оказалось, совпадает с мировым пространством.

Смежные вопросы