博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)unity中基于alpha通道的shadow volume实现
阅读量:7175 次
发布时间:2019-06-29

本文共 708 字,大约阅读时间需要 2 分钟。

转自:http://blog.163.com/wmk_2000_ren/blog/static/138846192201019114117466/

实现呢,Aras大神已经给出了,

http://forum.unity3d.com/threads/shadow-volumes-in-unity-on-the-wiki.9452/

http://wiki.unity3d.com/index.php/Shadow_Volumes_in_Alpha

原理也有现成的论文解释清楚了。不能上谷歌,链接后面补...

我差不多就是用中文,把整个过程复述一下吧。

首先,之所以是基于alpha是因为模板缓存不是什么时候都能用,用alpha可以不必担心没有效果。这是用alpha来实现的原因,虽然不一定能在项目中用,因为填充率比较高。

思路如下:

第一步是将帧缓冲的alpha值变成四分之一。

第二步就是绘制阴影面了。正面的alpha值变为两倍,反面减半。这时候,阴影区域的alpha值变成1/2 和 1,而非阴影区不变。

第三步就是进行四次帧缓冲的操作,第一次是将alpha加倍,阴影区域的alpha值变成 1,其他区域变为1 / 2。 第二次是将alpha值反转,blend zero oneminusdstalpha 阴影区域的alpha值变为 0, 其他区域还是1/2,第三次将alpha加倍,阴影区域的值还是0,然后其他区域变成1,第四次就是把颜色赋上去了。

具体实现,会涉及一些细节,比较麻烦,慢慢补。

 

《untiy 3d ShaderLab 开发实战讲解》里面也有相关内容:源码在示例工程ShadowVolumes中

转载地址:http://cubzm.baihongyu.com/

你可能感兴趣的文章
通过Newtonsoft.Json把类放在ViewState里再解析
查看>>
Media Query-响应式布局
查看>>
乌班图安装五笔输入法和搜狗输入法
查看>>
HTML DOM 属性 对象
查看>>
Python基础25_模块, import,
查看>>
Algs4-1.3.27编写一个max()
查看>>
ubuntu12.04装有线网卡驱动(AR8162)
查看>>
迭代器
查看>>
多线程有几种实现方法?同步有几种实现方法
查看>>
element-ui 分页中的slot的用法(自定义分页显示内容)
查看>>
程序员的Lua快速入门
查看>>
Django 代码初体验
查看>>
大数据及智能信息系统
查看>>
[杂记]拜占庭将军问题
查看>>
关于数据请求中的多级联动的问题
查看>>
用jQuery和ajax实现搜索框文字自动补全功能
查看>>
hausaufgabe--python 27 - set
查看>>
分享职场心得《5》
查看>>
利用Response.Buffer做类似异步效果
查看>>
Nyoj 修路方案(次小生成树)
查看>>