Comments 11
Вы бы под кат статью спрятали…
+1
Круто! Очень интересно! Спасибо огромное!
0
Спасибо, я старался осветить самое важное, учитывая комментатрии dotsquid можно дополнить статью, но я лучше опишу все тонкие моменты в следующей.
-1
+5
Непонятная целевая аудитория статьи.
С одной стороны, люди, которые более-менее знакомы с программированием трехмерной графики (пусть даже незнакомые с Unity3d), смогут самостоятельно найти примеры в документации.
С другой стороны, у людей, которые вообще незнакомы с этой областью, скорее всего появится куча новых вопросов. Например:
1)
2)
3)
Ну и т.д.
ЗЫ. Почему в диаграмме, подписанной «DX8 — DX10», присутствует геометрический шейдер? И шейдер не «фрагментарный», а «фрагментный».
С одной стороны, люди, которые более-менее знакомы с программированием трехмерной графики (пусть даже незнакомые с Unity3d), смогут самостоятельно найти примеры в документации.
С другой стороны, у людей, которые вообще незнакомы с этой областью, скорее всего появится куча новых вопросов. Например:
1)
Тег { «RenderType» = «Opaque» } помечает шейдер как непрозрачный. Это влияет на очередь отрисовки.Каким образом влияет? Почему нельзя было уделить абзац на пояснение процесса отрисовки полупрозрачной геометрии и проблем с ней связанной: необходимость сортировки по отдалению от камеры либо использование изощренных техник order-independent transparency (вроде depth peeling)? И, соответственно, сказать, что непрозрачную геометрию можно рисовать значительно быстрее, поэтому важно правильно указать этот флаг.
2)
#pragma surface surf Lambert – объявление функции surface-шейдера… модель освещения по Ламберту.Вы уверены, что все знают, что такое освещение по Ламберту? Можно было бы тоже пару абзацев уделить тому, как рассчитывается интенсивность света, и что Ламбертова модель освещения подразумевает использование всего двух векторов: нормали поверхности и вектора от источника света до обрабатываемого пикселя. И поэтому, с одной стороны, оно очень быстрое, а с другой стороны, очень простое и далеко до реалистичного: поверхности исключительно матовые.
3)
После чего функцией clip мы указываем, какие пиксели мы пропускаем при рендеринге. Т.к. отсекаем мы по информации, которая хранится в альфа-канале, то в параметрах указываем tex.a.А в коде почему-то еще вычитаете 0.5. Возможно, стоило написать, что функция clip отбрасывает текущий пиксель, если аргумент функции меньше нуля? Соответственно, в вашем случае, если значение альфа-канала текущего пикселя меньше 0.5, то пиксель нарисован не будет, и таким образом вы управляете прозрачностью финальной картинки (та самая рожица на текстуре кирпича).
Ну и т.д.
ЗЫ. Почему в диаграмме, подписанной «DX8 — DX10», присутствует геометрический шейдер? И шейдер не «фрагментарный», а «фрагментный».
+6
а можно сзанудничать и попросить изменить dx8-dx10 на картинке на год? :)
Ну ведь не майкрософтом единым… Тем более-то в Unity3d
Ну ведь не майкрософтом единым… Тем более-то в Unity3d
+2
даешь статью про dx11 и тесселяюцию в unity 4.0 !)
+2
Sign up to leave a comment.
Разбираемся с шейдерами в Unity3D на конкретном примере