admin管理员组文章数量:1026989
透明物体排序
一。透明物体在渲染中一直是一个头疼的存在,除了会增加overdraw引起性能问题外,还经常导致各种渲染错误。所以很多效果都是不支持透明的。但有的时候,美术经常要这种效果。在这里总结下几种常用的解决透明物体渲染错误的办法。
1.基本方法:透明物体都是按照深度进行排序的,所以如果如果是2个物体始终能确定排序顺序,直接调整深度值或者调整renderqueue就可以了。
2.当一个透明物体出现前后面的情况,类似半透的裙子
这种效果 因为裙子是一个整体,他没办法与腿通过简单额深度排序就能解决。只能通过多Pass来解决。
第一遍Pass 只渲染裙子的非透明部分(a>0.8或者其他数值)
第二遍Pass 对于透明部分开启Cull Font 剔除掉前面的部分
第三遍Pass 对于透明部分开启Cull Back 剔除后面的部分。
当然如果是更简单的情况,例如
机甲这种 只是对后面的物体透明,并不需要自身透明,那可以简单的2个Pass搞定
第一个Pass 只渲染深度。
第二个Pass 正常渲染即可。
3 当一个模型出现大量穿插情况 类似发丝 (发梢是通过透明实现的,而非模型)
通过上述几种办法都得不到太好的效果。
解决办法有
1.alpha to coverage
基于MSAA 其实相当于把他当成非透明物体来渲染。只是最后输出的颜色会乘以alpha值。unity内置 只需shader开启 AlphaToMask On 消耗点主要在MSAA。不过移动端开启MSAA还是比较耗的。
2.depth peeling 和 widget bledn不过这两项技术更篇OIT 需要很多RT 效果也不是很好。就不详细介绍了 感兴趣的可以参考
3.离线排序 就是对模型的三角面进行排序(或者对发丝进行排序)但是我试了几次 并没有试出好效果 最终幻想13是第一种方案
透明物体排序
一。透明物体在渲染中一直是一个头疼的存在,除了会增加overdraw引起性能问题外,还经常导致各种渲染错误。所以很多效果都是不支持透明的。但有的时候,美术经常要这种效果。在这里总结下几种常用的解决透明物体渲染错误的办法。
1.基本方法:透明物体都是按照深度进行排序的,所以如果如果是2个物体始终能确定排序顺序,直接调整深度值或者调整renderqueue就可以了。
2.当一个透明物体出现前后面的情况,类似半透的裙子
这种效果 因为裙子是一个整体,他没办法与腿通过简单额深度排序就能解决。只能通过多Pass来解决。
第一遍Pass 只渲染裙子的非透明部分(a>0.8或者其他数值)
第二遍Pass 对于透明部分开启Cull Font 剔除掉前面的部分
第三遍Pass 对于透明部分开启Cull Back 剔除后面的部分。
当然如果是更简单的情况,例如
机甲这种 只是对后面的物体透明,并不需要自身透明,那可以简单的2个Pass搞定
第一个Pass 只渲染深度。
第二个Pass 正常渲染即可。
3 当一个模型出现大量穿插情况 类似发丝 (发梢是通过透明实现的,而非模型)
通过上述几种办法都得不到太好的效果。
解决办法有
1.alpha to coverage
基于MSAA 其实相当于把他当成非透明物体来渲染。只是最后输出的颜色会乘以alpha值。unity内置 只需shader开启 AlphaToMask On 消耗点主要在MSAA。不过移动端开启MSAA还是比较耗的。
2.depth peeling 和 widget bledn不过这两项技术更篇OIT 需要很多RT 效果也不是很好。就不详细介绍了 感兴趣的可以参考
3.离线排序 就是对模型的三角面进行排序(或者对发丝进行排序)但是我试了几次 并没有试出好效果 最终幻想13是第一种方案
本文标签: 透明物体排序
版权声明:本文标题:透明物体排序 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/IT/1694682828a255018.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论