Как сделать эффект ретро / неон / свечение с помощью шейдеров?

Допустим, идея состоит в том, чтобы создать карту, состоящую из кубов с неоновой эстетикой, например:пример

В настоящее время у меня есть этот вершинный шейдер:

// Uniforms
uniform mat4 u_projection;
uniform mat4 u_view;
uniform mat4 u_model;

// Vertex atributes
in vec3 a_position;
in vec3 a_normal;
in vec2 a_texture;

vec3 u_light_direction = vec3(1.0, 2.0, 3.0);

// Vertex shader outputs
out vec2 v_texture;
out float v_intensity;

void main()
{
vec3 normal = normalize((u_model * vec4(a_normal, 0.0)).xyz);
vec3 light_dir = normalize(u_light_direction);
v_intensity = max(0.0, dot(normal, light_dir));
v_texture = a_texture;
gl_Position = u_projection * u_view * u_model * vec4(a_position, 1.0);
}

И этот пиксельный шейдер:

in float v_intensity;
in vec2 v_texture;

uniform sampler2D u_texture;

out vec4 fragColor;

void main()
{
fragColor = texture(u_texture, v_texture) * vec4(v_intensity, v_intensity, v_intensity, 1.0);
}

Как бы я использовал это, чтобы создать неоновый эффект, такой как в примере для 3D-кубов? Кубики — это просто модели с сеткой / материалом. Единственным изменением было бы установить цвет материала на черный, а контуры — на ярко-розовый или синий (возможно, с жаром).

Любая помощь приветствуется. 🙂

2

Решение

Обычно вы реализуете это как эффект пост-обработки. Сначала сделайте рендеринг с яркими насыщенными цветами в текстуру, затем примените эффект цветения, когда рисуете эту текстуру на экране.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]