Unity shader(CG) 写一个 散色、折射、反射、菲涅尔、gamma、简单后期屏幕特效
http://www.lai18.com/content/506918.html
1.自生要求是很重要的,当然不是什么强迫工作之类的,而是自己有限的能力上不断的扩展兴趣上的内容。
2.用生活的眼光去发现shader的存在形式,许多灵感都来自于大自然,比如 火苗的动态抖动 像 frac/fract(time)函数,甚至小草被风吹也像frac/fract(time).
http://www.glslsandbox.com/e#24095.1
3.千万不要有压力,而是动力,每次调颜色和参数都有不经意的收获,多次尝试是产生意外之一,感觉会油然而生,当然要抓住它它它它它它它它。。。
转载请出处地址 http://www.lai18.com/content/506918.html 恬纳微晰
如果写效果头疼,那么
1.这这这,不就是透射的感觉么?
折射率改变
散色率的改变
透射颜色改变
如果看效果眼睛疼,那么
后期屏幕特效-HDR之亮度映射效果
后期屏幕特效-HDR之色调映射效果
后期屏幕特效-模拟gamma效果
什马效果
当然除了以上效果,还有bloom,glow,streak,ghost,blur,flare,次表面散色等等效果,你直接wiki和Nvida官网上得到相关资料。当然搭配得好才是,,,不然耗了硬件又耗了审美观。。
慢慢来,不要强求一下子完美
反射
物理上我们常常学到的是环境中的光线入射到介质里,产生了折射变化。而对于一个unity游戏引擎来说光是非常宝贵的,unity5.x中的GI全局光照什马的采用so easy版光线追踪,什马的ray_cast、ray_track、ray_march等等,我们常用到的还是ray-cast…….
于是我们可以用视线投射出光线,逆着光路查询颜色。
当然至于查询颜色,像这种360度无死角反射,让你会毫不犹豫的想到它(?????)
对!!!就是它了,cubemap,当然你也要先samplerCUBE采样器采样。
那散色与折射呢?
亦夫如是,不过要下点功夫而已,什么是散射,它和折射到底是父子关系还是夫妻关系?(这个嘛!属于物理,可以wiki百科啊、、)
那怎么用shader写出散色,如果知道rgb通道,那么做做手脚也是不错的选择。(三原色,哈哈哈!!!)
fresnel(菲涅尔)好高大上的样子
OK!!!就是这么着,这是我简版菲涅尔。
其实它就是我们可以认为的边缘光照(
),有可以用它做为描边效果,而我用它做做差值反射与折射效果,这个pow()嘛!你懂得!
用用后期效果试试
我实在是不行了,快来救救我,于是
对,没有猜错,这就是so easy版camera与shader打交道的方式之一
这是传递camera图像的,a图片传给shader(gpu),b图片就是shader渲染完的图片给camera显示啊。你当然可以看看 unity 自带的 API说明就是了。
后期shader
就是Ta,一个又是自己写的shader,,,其实自己写shader才放心,还能变花样,还能优化!当然也有人怀疑自己弄得太神,哈哈哈哈哈哈,天朝gpu编程有多大的历史啊,有好多靠wiki学习,再说这么点代码,太美妙了。
亮度(Luminance)
用用Luminance是个不错的选择
对亮度合理的分配。
色调映射(toneMapping)
http://en.wikipedia.org/wiki/Tone_mapping这是Tonemapping的wiki解释
对!就它了,图中圈出的so easy版tonemapping 过滤器。。。。
当然,还有更好的tonemapping过滤器,你可以自己去发明或看看理论。
gamma
一个so easy gamma版本
更叼的算法和特效,你说呢?
那是不会放出来的,有的埋在土里,有的就在wiki中,作为一个博客,为了不让别人把重要的东西复制走了,你除了水印就是代码替换,保护自己的著作版权。。。
视觉一览通
我认为雕像可以的样子
背景-全景图cubemap来自wiki百科下载,特效渲染归 恬纳微晰所有
有空把 曲面细分 拿来说说,把 sun shader拿来说说,还有好多多…………