【发布时间】:2015-06-26 13:51:44
【问题描述】:
所以对于我正在开发的游戏,我正在尝试制作一种独特类型的着色器。大多数是非常基础的,只有一个困难的部分。我只想渲染玩家在视线中看到的内容。这是一个自上而下的 2D 游戏,因此玩家通常能够看到房间。但以这张图片为例。
显然这里的玩家是橙色圆圈。他能看到的区域是灰色(灰色?)填充的区域。黑色线条代表一个房间,紫色线条代表他穿过房间门的视野。我只想渲染阴影区域。
我知道 GLSL 有一个丢弃语句,您可以在其中删除特定像素。这意味着通过创建一个布尔函数,我可以在我的顶点着色器中执行以下代码。
if ( !playerCanSeePoint( params ) ) {
discard;
}
我不知道该怎么做是让 playerCanSeePoint 函数。我的一个想法是从玩家向各个方向投射不可见的线并找到它的第一个交点。这将意味着第一面墙,并会创建适当的形状。不过,这似乎很消耗资源。那么有没有好的方法来做到这一点?
【问题讨论】: