博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity shader(CG) 写一个 散色、折射、反射、菲涅尔、gamma、简单后期屏幕特效
阅读量:6267 次
发布时间:2019-06-22

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

http://www.lai18.com/content/506918.html

 

1.自生要求是很重要的,当然不是什么强迫工作之类的,而是自己有限的能力上不断的扩展兴趣上的内容。 

2.用生活的眼光去发现shader的存在形式,许多灵感都来自于大自然,比如 火苗的动态抖动 像 frac/fract(time)函数,甚至小草被风吹也像frac/fract(time).
 
3.千万不要有压力,而是动力,每次调颜色和参数都有不经意的收获,多次尝试是产生意外之一,感觉会油然而生,当然要抓住它它它它它它它它。。。
转载请出处地址  恬纳微晰

如果写效果头疼,那么

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) 
这是Tonemapping的wiki解释 
对!就它了,图中圈出的so easy版tonemapping 过滤器。。。。 
当然,还有更好的tonemapping过滤器,你可以自己去发明或看看理论。
gamma 
一个so easy gamma版本 
更叼的算法和特效,你说呢? 
那是不会放出来的,有的埋在土里,有的就在wiki中,作为一个博客,为了不让别人把重要的东西复制走了,你除了水印就是代码替换,保护自己的著作版权。。。

视觉一览通

我认为雕像可以的样子

背景-全景图cubemap来自wiki百科下载,特效渲染归 恬纳微晰所有

有空把 曲面细分 拿来说说,把 sun shader拿来说说,还有好多多…………

转载于:https://www.cnblogs.com/alps/p/5600889.html

你可能感兴趣的文章
Mono for Android 优势与劣势
查看>>
服务器端开发技术
查看>>
Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
查看>>
ajax提交多个对象,使用序列化表单和FormData
查看>>
深入分析由前序和中序重构二叉树问题
查看>>
leetcode 题解 || Valid Parentheses 问题
查看>>
将图片转成base64字符串并在JSP页面显示的Java代码
查看>>
什么是WeakHashMap--转
查看>>
js 面试题
查看>>
第二十二节,三元运算
查看>>
Yacc 与 Lex 快速入门
查看>>
Unity中HDR外发光的使用
查看>>
Flume负载均衡配置
查看>>
Ajax详解
查看>>
Ubuntu C/C++开发环境的安装和配置
查看>>
百世汇通快递地区选择插件,单独剥离
查看>>
Linux系统调用---同步IO: sync、fsync与fdatasync【转】
查看>>
【MyBatis学习06】输入映射和输出映射
查看>>
[LeetCode] Decode String 解码字符串
查看>>
数字逻辑的一些基本运算和概念
查看>>