![]() |
Статья:Parallax Mapping
Вобщем я раскажу как сделать Parallax Mapping технику на языке HLSL(High Level Shader Language).
Для начала,что такое Parallax Mapping? Parallax Mapping это техника нам позваляет сделать из простого плоского полигона имитацию высоко полигональной модели. Пример Normal Mapping: ![]() Пример Parallax Mapping: ![]() Для постраения этой самой "высоко полигональной модели" необхадима Height мапа,которую мы можем получить с помощью таких тулзов как CrazyBump,3dsMax,Maya. Выглидит она вот таким образом: ![]() И так,начнём наш шейдер: Код:
float4x4 World : WORLD; // Мировая матрица трансформации модели На последок скажу,что Parallax Mapping не единственная техника в своём роде,есть ещё и расширения типа Step Parallax Mapping,Parallax Occlusion Mapping и д.р. Спасибо за внимание! И до новых встреч!:-) Матереалы по Parallax Mapping расширениям: - Step Parallax Mapping http://graphics.cs.brown.edu/games/S...lax/index.html - Parallax Occlusion Mapping - Можно посмотреть либо в Direct3D SDK,либо в AMD Render Monkey, http://ati.amd.com/developer/kri06/K...archuk-POM.pdf. - Relief Mapping http://developer.download.nvidia.com...gems3_ch18.pdf - Parallax Mapping Steps3D http://steps3d.narod.ru/tutorials/pa...-tutorial.html Так же: - HLSL http://ru.wikipedia.org/wiki/HLSL |
Ответ: Статья:Parallax Mapping
Похоже немного разделом ошибся:@
|
Ответ: Статья:Parallax Mapping
все здорово, но вот принцип лежащий в основе описал бы, чтобы не копипаст люди делали, а могли поправить/изменить при случае
|
Ответ: Статья:Parallax Mapping
Цитата:
Похоже, у МоКи есть достойные последователи. |
Ответ: Статья:Parallax Mapping
Цитата:
|
Ответ: Статья:Parallax Mapping
Ну как видите,что то не учёл,следующий раз обязательно учту :),сегодня\завтро думаю написать про Parallax Occlusion Mapping.
|
Ответ: Статья:Parallax Mapping
Лучше этот семпл дополни описанием принципов работы прежде чем за новый браться... А то будет куча объедков, и никакого понимания вопроса у новичков вроде меня... |
Ответ: Статья:Parallax Mapping
Цитата:
|
Ответ: Статья:Parallax Mapping
да нече не понятно, ты должен каждый шаг расписывать очень подробно, а не одной строчкой комментария, посмотри как другие статьи пишут...
|
Ответ: Статья:Parallax Mapping
Genius
распиши как тут http://steps3d.narod.ru/tutorials/pa...-tutorial.html , тогда некоторые поймут но для хорошей статьи надо еще подробнее разжевать |
Ответ: Статья:Parallax Mapping
Цитата:
Да и в большенстве случаеш новички меньше читают,больше копипастят. З.Ы. Немного привёл в порядок статью. |
Ответ: Статья:Parallax Mapping
Цитата:
|
Ответ: Статья:Parallax Mapping
Цитата:
|
Ответ: Статья:Parallax Mapping
тогда пиши "да и в большенстве случаев я меньше читал, больше копипастил"
|
Ответ: Статья:Parallax Mapping
Ты >< все новички.
Я не считаю себя новичком в блитце, но в шейдерах я новичок. Несмотря на это, я стремлюсь разобраться, а не скопипастить чужой шейдер "лишь бы работало". Цитата:
Код:
Out.position = mul(In.position,World); /* домножаем позицию вершины на Считай, что ты ничего не объяснил, просто выложил код шейдера с незначительными комментариями. Объясни пожалуйста лично мне принцип, каким образом это делается? Пока ты не решишь эту задачу - не заслужишь моего "спасибо" а заодно оправдания слова "Статья" в заголовке темы. |
Ответ: Статья:Parallax Mapping
Цитата:
З.Ы. Писал не ради твоего спасибо,писал от душы. |
Ответ: Статья:Parallax Mapping
Поработай над стилем написания кода - это очень важный моммент. Удвоит читабельность.
Думай над переменными и колличеством кода. У тебя слишком много мусора. Длинные комменты в шейдере для каждой строки, без подсветки синтаксиса очень забивают весь шейдер лишними символами - читабельность падает. Это не только параллакс. Если ты хочешь показать параллакс, и бамп, то распиши отдельно каждую технику, и затем опиши как соединял. Если ющаешь входную и выходную структуры, то юзай их нормально: void vs_main( in VS_INPUT IN, out _OUTPUT OUT ) { Потом меняй переменные, а то видно куски из других шейдеров и разные стили кодеров. Т.к. в шейдере одна вершинная и пиксельная функции, то юзай простые имена структур, такие как sv, sp (Structure Vertex, Structure Pixel). Имена функций также простые - fv, fp. void fv( in sv IN, sp OUT ) { Уделяй стилю наивысший приоритет. По опыту скажу - это меняет абсолютно дело, только от этого в основном зависит как читатель вникнет, или мельком пробежавшись испугается, и бросит. Шейдер ужастный. Если ты пишешь статью, то не выкладывай вот-вот написанный шейдер, а поработай над ним. Статья плохая, тема хорошая. |
Ответ: Статья:Parallax Mapping
Код:
Out.normal = normalize(mul(In.normal,World)); /* Доманажаем нормаль на потому что если у тебя будет нормаль к примеру (0,1,0), а на экране она должна быть (0,0.7,0.7), а мировая матрица содержит смещение и сделает из неё (1,1.7,1.7) то после нормализации ты получишь совсем не то что нужно это написано и сдесь http://msdn.microsoft.com/en-us/library/bb172390.aspx |
Ответ: Статья:Parallax Mapping
Цитата:
Цитата:
|
Ответ: Статья:Parallax Mapping
Цитата:
У меня World-Space. |
Ответ: Статья:Parallax Mapping
Genius
ну и что ? ты читал что я писал ? мне вот интересно к какому виду d3d приводит нормаль при умножении на матрицу, к x,y,z,1 или к x,y,z,0 если x,y,z,0 то будет работать, если первое - то нет |
Ответ: Статья:Parallax Mapping
Цитата:
|
Ответ: Статья:Parallax Mapping
Цитата:
Цитата:
Шейдер - это не гипер исходник. Это мини программа. Мини - значит маленькая. |
Ответ: Статья:Parallax Mapping
MoKa, эдак ты отобьёшь желание писать общественно-полезные статьи.
Лучше покажи "как надо" :) Уверен, твой опыт многим пригодится. Хотя, понимаю: времени у нас у всех мало, но всё же статься оказалась бы незаменимой... |
Ответ: Статья:Parallax Mapping
Цитата:
|
Ответ: Статья:Parallax Mapping
ещё моммент такой, если нормализировать в вершинке, то у тебя будет повершинное освещение.
Сделай простой биллбоард, большой, поставь по серединке источник, и увидешь что он не подействует на пиксели. А только на вершинны как таковой. А если будешь нормализовать в пиксельном будет ок. Как-то наткнулся на это, вроде с этим и связано было.. |
Часовой пояс GMT +4, время: 10:01. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot