首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLSL中基于距离的雾

GLSL中基于距离的雾
EN

Stack Overflow用户
提问于 2015-01-12 09:40:11
回答 2查看 1.9K关注 0票数 0

我发现了一些帖子,说明使用gl_Position.z或gl_FragCoord.z/gl_FragCoord.w可以很容易地获得雾片段距离。

问题是,这就形成了雾开始的边界。

我想要做的是根据玩家的位置来确定这个距离,这样玩家周围就会有雾的半径。

为了简单起见,假设我希望根据世界空间中(0,0,0)像素的距离插值雾。只有这个坐标的fog_end中的像素是可见的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-13 00:51:35

经过更多的搜索,我发现我所指的是基于距离的雾,而不是基于平面的雾。

我也有一个问题,必须有几个顶点才能使它正常工作。因此,距离计算需要在碎片着色器中进行。

一些有用的细节可以在这里找到。

http://web.archive.org/web/20160615092925/http://in2gpu.com/2014/07/22/create-fog-shader/

票数 1
EN

Stack Overflow用户

发布于 2015-01-12 10:29:31

你可以在边界处插入雾。

代码语言:javascript
复制
//distance of fragment in worldspace
float distance = ...;

float fog_start = 10;
float fog_end = 20;

//linear interpolation
float fog_factor = (distance-fog_start)/(fog_end-fog_start);
fog_factor = clamp(fog_factor,0,1);

//add 'white fog' to color
out_color += vec4(fog_factor);

通过将视图空间中的顶点传递到片段着色器并计算长度,可以获得worldspace距离。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27898985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档