控制3Delight Deep Shadowmap阴影生成
2011-05-28 10:32
357 查看
有时在渲染时想控制其阴影的生成,比如在做树叶时减小对Deep SM的透明度,从而让光线不在接触第一篇树叶时就消失,而是穿透一丛之后慢慢衰减殆尽,经测试有两个方法。
1. 经典方法
所谓经典方法就是使用一套物体,这一套物体中包含两个物体,物体A用于渲染,不投影,物体B正好相反,所以渲染和投影可以独立控制。这个使用maya的shape节点中的renderstates的相关选项就可以。
像树叶由于是同一个物体而且面数巨大,可以导出rib然后用两个readRibArchieve节点来以代理的方式渲染,这样能节省很多空间。
2.RSL方法(3Delight)
此方法在shader中判断当前是渲染阴影还是普通的渲染,如果是阴影则怎么怎么地,如果是普通渲染则怎么怎么地。
简单实现:
其中attribute("user:ShadowMapRendering",r)为相应的查询,这个是3delight的方法,其他的没有测试。
测试结果,左侧的红色灌木:
参考:
http://www.3delight.com/en/modules/PunBB/viewtopic.php?pid=15564#p15564
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
相关文章推荐
- Westciv Tools主要为CSS3提供了渐变gradients、盒子阴影box-shadow、变形transform和文字描边四种在线生成效果的工具
- 一个perfect 的解决 阴影拉伸的方法 shadow map strech
- CNN阴影去除--DeshadowNet: A Multi-context Embedding Deep Network for Shadow Removal
- Unity2D - 6. 生成随机地图 (2) - 脚本控制Tilemap (2) 加载已有房间地图
- Unity2D - 6. 生成随机地图 (2) - 脚本控制Tilemap (1) 自动切换不同的sprite
- 实现阴影 Percentage Closer Filtering & Gaussian Blur Base on Shadow Map
- PS长阴影生成工具 Long_Shadow_Generator_v1.2_for_CS6.zxp
- 深度学习论文笔记--Depth Map Prediction from a Single Image using a Multi-Scale Deep Network
- 上传图片并且生成可以控制大小图片清晰度的方法
- Shadow Map & Shadow Volume
- day53_电力系统_ztree动态生成&权限控制
- css控制hr标签样式去掉阴影
- 深度分析如何在Hadoop中控制Map的数量
- DataGrid自动生成列 控制列头显示
- hive优化之------控制hive任务中的map数和reduce数
- Android View的圆角和阴影(border and shadow)
- 基于tilemap,生成2D平面的三角形组成的navigation mesh
- CSS3属性box-shadow详解[盒子阴影]
- python读取csv----python根据IP列表生成百度IP热点图tilemap