新加入 Light Shaft (容积光)

采用GPU GEMS3 上面的方法,在 Post-Process计算了容积光效果,不过这极为依赖于采样频率,我设置的是75次采样,帧率从60多下降了20多帧,不过仍然有明显的痕迹,目前没有找到什么好的优化方式,些许可以根据光源到屏幕像素点的具体动态调整采样频率,不过效率也应该提高不了太多。我再到网上找找。

改动了一下,缩小到原场景图的 1/4 ,100次采样 PS:其实如果是Shader Model 4.0的话可以对采样次数做动态计算,就是根据太阳的位置和像素的位置计算出经过的像素的个数,然后动态进行for()循环,可惜,Shader Model 3.0不支持,因此我也只能人为地设置固定的采样计算,不过还好,效率提高了不少

 

 

sampler sScene       : register(s0);
float2  vec2SunScreenPos;
static   float    fExposure  =   1.0f ;
static   int      iSampleNums  =   100.0f ;
static   float    fDecay  =   1.0f ;
static   float    fWeight  =   1.0f ;

float4 ps_main(float2 texCoord : TEXCOORD) : COLOR
{
     float2 vec2UnitVec 
=  texCoord  -  vec2SunScreenPos;
    vec2UnitVec 
/=  iSampleNums;
    
float  illuminationDecay   =   1.0f ;
    
    float4 sumColor 
=   0.0f ;
    
for ( int  i = 0 ; i < iSampleNums; i ++ )
    {
        float4 color 
=  tex2D(sScene, texCoord  -  vec2UnitVec  *  i);
        color 
*=  color.a;
        sumColor 
+=  illuminationDecay  *  fWeight  *  color;
        illuminationDecay 
*=  fDecay;
    }
    sumColor 
/=  iSampleNums;
    
return   1   -  exp( - sumColor  *  fExposure );

}

                                                                                                                     Pixel Shader 代码

 

转载于:https://www.cnblogs.com/ttthink/archive/2010/03/21/1690946.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
所支持的Unity版本 5.2.0 及以上版本 WebGL Showcase | WebGL压力测试|文档|论坛 这个插件允许您通过生成真正容积的程序束来大大改善场景的照明。 这是模拟聚灯和手电筒的密度,深度和音量的完美,简单而便宜的方法。 简单高效的体积照明解决方案兼容各种平台(Windows PC,Mac OS X,Linux,WebGL,iOS,Android,VR)! 即使在移动设备上,也能为您的聚灯和手电筒模拟密度,深度和体积的完美,简单且便宜的方式! 它通过自动高效地生成真正的体积程序束来渲染高质量的线效果,从而极大地改善了场景的照明。 特征: - 真正的体积效果:即使你在束中也能工作。 - 非常容易使用和集成/需要零设置。 - 程序生成:一切都是在引擎盖下动态计算的。 - 在任何地方添加无限束:替代解决方案通常只需要实时灯:此插件不需要。您可以制作烘烤的量,甚至可以在没有任何线的情况下添加束。 - 动态3D噪声功能,用于模拟动画体积雾/雾/烟雾效果。 - 体积粉尘颗粒功能可模拟高度详细的防尘灯和微尘效果。 - 动态遮挡:可以通过移动几何体来阻挡束。 - 您可以实时移动和旋转束。 - 触发区域功能:您可以跟踪通过束的对象。 - 完全动态:在游戏时间内从脚本,动画师或时间轴更改或动画每个属性。 - Super FAST:不需要任何后处理,命令缓冲区和计算着色器:即使在移动设备和WebGL等低性能平台上也能很好地工作。 - VR Ready:支持Normal和VR Single pass立体声。 - 平滑交叉并与几何和相机混合。 - 自定义截头圆锥几何体。 - 支持许多图形变体:延迟和前向渲染路径,Gamma和线性颜色空间,HDR颜色,多种混合模式。 - 调整分层图层和图层顺序,以使用2D精灵调整束渲染。 - 开箱即用的透视和正交相机。 - 支持Unity内置雾。 - WYSIWYG:在场景视图中立即可以看到每个修改:无需在编辑器和播放模式之间切换以查看您的更改。 - 完整源代码可用/无DLL。束设置和处理通过功能强大的API完全暴露。 - 详细的文件。 - 支持从Unity 5.2到最的2017.X和2018.X版本。 - 示例场景包括:展示演示。 请注意,此资产不是全屏后期处理/图像效果。这与Unity内置的Sun Shafts图像效果不相似。 相反,体积束将产生优化的几何形状和材料谱。这种技术有几个优点: - 更精细:独立精确定制每个束。 - 您可以在任何地方添加束,即使在没有线的地方也是如此。 - 当连接到聚灯时,它支持实时,烘焙和混合模式。 - 您可以渲染的束数量没有限制。 - 更容易与您自己的管道集成:无需与您自己的图像效果或后处理堆栈混合,没有命令缓冲区,不需要计算着色器功能。 - 运行得更快。没有后期处理添加到您的相机。 - 支持移动等低端平台。 如何使用它? 体积束设计非常易于使用。无需设置。您不必将多个对象链接在一起。您只需要使用一个简单的组件。你可以通过2次点击添加一个束! 您可以通过调整一组用户友好的属性来精确定制每个束的渲染。为了获得更好看的效果,一些属性会自动绑定到附加的聚灯。 限制: 目前,此资产的当前版本有一些小的限制: - 此资产仅支持“聚灯”(形状像锥形的束)。不支持点源(线向各个方向平等)。 - “3D噪声”功能要求着色器功能等于或高于Shader Model 3.5 / OpenGL ES 3.0。 2012年之后发布的任何移动设备都应该支持它。 - 仅在Unity 5.5或更高版本上支持“体积粉尘颗粒”。 - “动态遮挡”功能计算遮挡的近似值,但尚不支持“部分遮挡”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值