您的位置:首页 > 其它

控制3Delight Deep Shadowmap阴影生成

2011-05-28 10:32 357 查看
有时在渲染时想控制其阴影的生成,比如在做树叶时减小对Deep SM的透明度,从而让光线不在接触第一篇树叶时就消失,而是穿透一丛之后慢慢衰减殆尽,经测试有两个方法。

1. 经典方法

所谓经典方法就是使用一套物体,这一套物体中包含两个物体,物体A用于渲染,不投影,物体B正好相反,所以渲染和投影可以独立控制。这个使用maya的shape节点中的renderstates的相关选项就可以。

像树叶由于是同一个物体而且面数巨大,可以导出rib然后用两个readRibArchieve节点来以代理的方式渲染,这样能节省很多空间。

2.RSL方法(3Delight)

此方法在shader中判断当前是渲染阴影还是普通的渲染,如果是阴影则怎么怎么地,如果是普通渲染则怎么怎么地。

简单实现:

surface shadowopacity(float opc = 1){
uniform float	r;
float stat = attribute("user:ShadowMapRendering",r);
if (r != 0)
Oi = opc;
else Oi = 1;
Ci = Cs;
}


其中attribute("user:ShadowMapRendering",r)为相应的查询,这个是3delight的方法,其他的没有测试。

测试结果,左侧的红色灌木:



参考:

http://www.3delight.com/en/modules/PunBB/viewtopic.php?pid=15564#p15564
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: