如何用glsl渲染模板?

iwantnon 2012-09-22 12:24:40
我已经将阴影渲染到模板了(通过shadow volume算法),模板中为>0的元素为阴影。
下一步要做的是按着这个模板把阴影渲染到屏幕上去。
当然直接开启模板测试,并设置模板测试的通过条件为“模板值>0”即可实现。
但是我还想实现一个特殊效果,就是让各阴影点的透明度随着其z深度值不同也发生变化--即z值大的阴影像素透明度大些,z值小的阴影像素透明度小些。
显然,这个只能通过shader实现了。我刚开始接触shader,能力还不够。想请教一下各位,我这个效果如何实现?

能给出代码当然最好,或者说说思路也很有帮助。

高分求指点!
...全文
259 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwantnon2012 2012-09-24
  • 打赏
  • 举报
回复
怎么还是显示不正常,再试一次:
iwantnon 2012-09-24
  • 打赏
  • 举报
回复
页面太窄,右面的主要部分没显示出来:

iwantnon 2012-09-24
  • 打赏
  • 举报
回复
多谢楼上回复。
不过我用的是opengl,我在原帖子上忘说了。
我现在有些进展了,基本上是把color,depth,stencil都渲染到纹理并显示出来了。如图。
不过存在一个小问题就是在目前的opengl里depth和stencil似乎只能共用一个depth_stencil_texture(或depth_stencil_buffer),渲染到纹理之后我能只能在shader中提取出depth分量,而stencil分量却无法直接提取到(虽然我知道它是存在在里面了,因为模板阴影的渲染效果是对的)。后来没办法,我又另建了一个color texture,把stencil渲染到这个color texture上。这样功能实现了,只是有点儿不太直接。如果哪位高手知道如何通过glsl shader在depth_stencil_texture中直接提取到stencil分量,请不吝惜赐教,先谢了。
LUCI-Z 2012-09-23
  • 打赏
  • 举报
回复
我不是特别了解你这样做的原因。但是在dx9中你无法访问z缓存。你这个只能用mrt,就是多渲染目标,把z渲出来。然后在你的shader中把他作为一个输入,在进行你所需要的处理。

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧