我正在尝试为我的地形渲染引擎实现地面雾着色器.本文介绍了该技术:http://www.iquilezles.org/www/articles/fog/fog.htm
我们的想法是考虑从相机到碎片的光线,并沿着这条光线集成雾密度函数.
这是我的着色器代码:
#version 330 core
in vec2 UV;
in vec3 posw;
out vec3 color;
uniform sampler2D tex;
uniform vec3 ambientLightColor;
uniform vec3 camPos;
const vec3 FogBaseColor = vec3(1., 1., 1.);
void main()
{
vec3 light = ambientLightColor;
vec TexBaseColor = texture(tex,UV).rgb;
//***************************FOG********************************************
vec3 camFrag = posw - camPos;
float distance = length(camFrag);
float a = 0.02;
float b = 0.01;
float fogAmount = a * exp(-camPos.z*b) * ( 1.0-exp( -distance*camFrag.z*b ) ) / (b*camFrag.z);
color = …Run Code Online (Sandbox Code Playgroud)