Настройка GLSL Ocean Water Shader в соответствии с Nvidia GPU Gems Глава 1

Я следую Nvidia GPU Gems Глава 1, посвященная симуляции воды с использованием шейдеров. Я пытаюсь следовать главе, чтобы создать шейдер океанской воды с использованием glsl в OpenGL es 2.0 (iOS).

Я могу создать геометрические волны, как описано в главе, но когда дело доходит до создания карты нормалей текстуры, у меня возникают проблемы. В главе немного неясно, что на самом деле рендерится в цель рендеринга текстуры. Должен ли я визуализировать карту нормалей или карту высот? В тексте предполагается, что нормали визуализируются для цели как цвет rgb, но опять же, изображения (b) и (d) в разделе 1.3 «Авторство», похоже, указывают на то, что карта высот в градациях серого должна быть визуализирована для цели текстуры. . В этой главе также говорится об использовании текстуры поиска для координаты u текстуры, но мне неясно, как это согласуется с визуализацией в текстуру. Есть ли 2 разные текстуры для рендеринга? Если кто-нибудь может помочь объяснить, как эти компоненты сочетаются друг с другом, я был бы очень признателен!


person LOP_Luke    schedule 16.05.2013    source источник


Ответы (1)


Почему вы вообще рендерите в текстуру? Вы можете легко вычислить эти значения на лету в своем шейдере геометрии. Поскольку они меняются в каждом кадре, вам все равно придется повторять эти вычисления каждый раз, поэтому я не вижу, что вы получаете от рендеринга в текстуру.

Однако вам нужно рассчитать два значения: смещение высоты (используя уравнение 3) и нормаль для каждой вершины (используя уравнение 6b).

person fluffels    schedule 17.05.2013
comment
В учебнике предлагается, чтобы получить волны с более высоким разрешением в моделировании, вы можете отображать значения нормалей в целевой текстуре. Мы также расширяем этот метод в области пиксельных шейдеров, используя сумму периодических волновых функций для создания динамической карты рельефа мозаики, чтобы захватить более мелкие детали поверхности воды. - 1.1 Цели и объем. У меня работают геометрические волны и нормали (созданные на лету в вершинном шейдере), это карта нормалей, с созданием которой у меня возникают проблемы. - person LOP_Luke; 22.05.2013
comment
Причина, по которой бумага создает карту нормалей, заключается в том, что она довольно старая. Вы можете просто вычислить нормали для каждой вершины и передать их шейдеру фрагментов. Это то, что я сделал, когда реализовал это, и он отлично работает :) - person fluffels; 23.05.2013