Как бы я использовал GLSL для генерации текстуры со всеми нормалями глазного пространства каждого фрагмента в кадре в данных RGB (а-ля отображение нормалей)? - PullRequest
2 голосов
/ 29 ноября 2011

Мне нужно каким-то образом визуализировать текстуру, например, снимок экрана сцены, за исключением того, что вместо цветовых данных точки за каждым фрагментом сохраняется нормаль.Он генерирует текстуру, которая выглядит как карта нормалей (например, this ).Я провел немало исследований (но безрезультатно), но мои инстинкты говорят мне, что самым простым способом для этого был бы шейдер GLSL.

Так будет ли какой-нибудь возможный способ реализовать это, GLSL илив противном случае?

Ответы [ 3 ]

2 голосов
/ 29 ноября 2011

Да, вы можете сделать это довольно легко с GLSL.Но поскольку вы «почти ничего не знаете о GLSL», для меня было бы плохой услугой просто дать вам шейдер.И это было бы слишком большой темой, чтобы объяснить, как они здесь работают.

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

1 голос
/ 29 ноября 2011

Рендеринг векторов нормалей к отдельной цели рендеринга является обычной техникой для отложенного освещения . Вы можете найти хорошее введение здесь (в нем используются DirectX и HLSL, но концепции достаточно ясны и могут быть легко перенесены в OpenGL / GLSL).

0 голосов
/ 29 ноября 2011

Фактический шейдер GLSL, который записывает нормальную информацию, очень прост (намного проще, чем работа с легкой информацией)

Я создал «нормальный шейдер» в GLSL с помощью KickJS Shader Editor:

http://www.kickjs.org/example/shader_editor/shader_editor.html#ahFzfmtpY2tzdGFydGVuZ2luZXJjCxIWb3JnLmtpY2tqcy5zaGFyZWQuVXNlciIbbW9ydGVuQG5vYmVsLWpvZXJnZW5zZW4uY29tDAsSGG9yZy5raWNranMuc2hhcmVkLlNoYWRlciIORGVmYXVsdCBzaGFkZXIM

Должно быть просто портировать на любую версию GLSL, которую вы хотите использовать.

...