让我们说这个概念是创建一个由具有霓虹美学的立方体组成的地图,例如:
目前我有这个顶点着色器:
// 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立方体的示例?立方体只是具有网格/材料的模型。唯一的变化是将材质颜色设置为黑色,并将轮廓设置为亮粉色或蓝色(可能带有发光)。
感谢任何帮助。 :)
答案 0 :(得分:2)
您通常将此作为后处理效果实现。首先使用明亮饱和的颜色渲染到纹理中,然后在将该纹理绘制到屏幕时应用绽放效果。