Shader 学习笔记 20151201

Segment 1 阅读

  • 看了cook book的第六大章

Segment 2 理解

  • 感觉解决这个问题就好了,渲染序列和Ztest Zwrite
  • 渲染序列是一个tag,表示渲染的先后顺序。特别注意的是:这个tag表示渲染顺序!!!事实上,在Unity里面,Geo层是优化过的(它不是按照距离camera的距离渲染的),其它层都是按照距离camera的距离,从远到近的渲染。有些人会问如果一个obj是斜着的,那么距离从哪里算?很粗暴,按中心点算
  • 固体、透明体;ZWrite on/off;渲染顺序真值表。
    结论是,固体开启ZWrite,渲染顺序随便搞。而透明体不交叉时,还有的搞,交叉了要死。
    这里写图片描述

  • 于是想到,是否交叉的透明体可以用Ztest去逐点比较depth,然后计算呢?其实这有点复杂。如果你现在srcObj在destiObj后面(也就是新render的点离camera比较近)就好搞,这可以归结为正常渲染顺序一类。但是如果srcObj在destiObj前面,就难了,这时候如果硬要做的话我们不仅需要srcObj的color和depth,还需要srcObj的透明度(这个透明度最难搞,因为如果你是3、4层以上透明物体叠起来的话,需要用算法先求出前几层叠过之后的透明度,这个硬件上目前就不支持,除非硬件专门做了,才好弄)。另外乱序之后还有一个最刺激的情况,根本无法操作了,见下图这里写图片描述
    在这个图里,先渲染1、再渲染2、最后渲染3、对于GPU这种流水线buffer方式的硬件来说,根本搞不了。因为在你渲染3的时候,必须完整的知道1和2的完整参数,而这个对于硬件来说不可能开这么多的空间给你存这些个东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值