小编Vyl*_*ain的帖子

如何实现地面雾GLSL着色器

我正在尝试为我的地形渲染引擎实现地面雾着色器.本文介绍了该技术: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)

opengl shader glsl

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

glsl ×1

opengl ×1

shader ×1