OpenGL glsl 实现hdr效果,写出顶点着色器和片元着色器
时间: 2023-01-11 12:55:36 浏览: 211
顶点着色器:
```
#version 450 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec2 aTexCoords;
out vec2 TexCoords;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
void main()
{
gl_Position = projection * view * model * vec4(aPos, 1.0);
TexCoords = aTexCoords;
}
```
片元着色器:
```
#version 450 core
in vec2 TexCoords;
out vec4 FragColor;
uniform sampler2D hdrMap;
uniform float exposure;
void main()
{
vec3 hdrColor = texture(hdrMap, TexCoords).rgb;
vec3 color = vec3(1.0) - exp(-hdrColor * exposure);
FragColor = vec4(color, 1.0);
}
```
说明:
- hdrMap 是HDR纹理图像的sampler2D变量。
- exposure 是曝光变量。
注意:
- 顶点着色器中的model, view, projection 是模型矩阵、观察矩阵和投影矩阵,它们是用来将3D坐标变换到2D屏幕坐标。
- 这些代码是通用的模板,如果您有其他需求,需要进行相应的修改。
阅读全文