Unity shader(CG) 写一个 散色、折射、反射、菲涅尔、gamma、简单后期屏幕特效

12 篇文章 0 订阅
11 篇文章 0 订阅

Unity shader(CG) 写一个 散色、折射、反射、菲涅尔、gamma、简单后期屏幕特效

1.自生要求是很重要的,当然不是什么强迫工作之类的,而是自己有限的能力上不断的扩展兴趣上的内容。
2.用生活的眼光去发现shader的存在形式,许多灵感都来自于大自然,比如 火苗的动态抖动 像 frac/fract(time)函数,甚至小草被风吹也像frac/fract(time).这里写图片描述http://www.glslsandbox.com/e#24095.1
3.千万不要有压力,而是动力,每次调颜色和参数都有不经意的收获,多次尝试是产生意外之一,感觉会油然而生,当然要抓住它它它它它它它它。。。


转载请出处地址 http://blog.csdn.net/baidu_26153715/article/details/45420029 恬纳微晰


如果写效果头疼,那么

  1. 1.这这这,不就是透射的感觉么?

    这里写图片描述

  2. 折射率改变

    这里写图片描述

  3. 散色率的改变
    这里写图片描述

  4. 透射颜色改变
    这里写图片描述

    如果看效果眼睛疼,那么

  5. 后期屏幕特效-HDR之亮度映射效果
    这里写图片描述

  6. 后期屏幕特效-HDR之色调映射效果
    这里写图片描述

  7. 后期屏幕特效-模拟gamma效果
    这里写图片描述

  8. 什马效果
    当然除了以上效果,还有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拿来说说,还有好多多…………
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 我会尝试编一个Unity Shader,它包括UV动画和发光特效。它将会是一个复杂的shader,因为UV动画和发光特效都需要大量的程序代码和数据处理。但是,我将尝试使用Unity Shader语言(GLSL)编一个高性能的shader,它可以实现UV动画和发光特效。 ### 回答2: Unity中的Shader是一种用于控制渲染对象外观的程序,它可以通过编程来实现各种特效。要编带有UV动画和发光特效Unity Shader,可以按照以下步骤进行操作: 第一步,创建一个新的Shader文件。打开Unity并进入项目,然后在项目窗口中右键点击创建->Shader->Standard Surface Shader。这会在项目中创建一个新的Shader文件。 第二步,打开创建的Shader文件,并添加一些代码。在Shader文件中,我们需要添加一些代码块来实现UV动画和发光特效。首先,我们可以添加一个分支来处理UV动画。可以使用sin函数来在时间和UV坐标之间创建一个偏移量,以产生一个动画效果。 第三步,在Shader文件中添加发光特效。我们可以使用光照模型和添加自发光颜色来实现发光特效。可以使用自发光颜色来改变物体的亮度,并与其他材质一起呈现。 第四步,将编好的Shader应用到对象上。可以在场景中选择一个对象,然后在对象的渲染组件上选择刚刚创建的Shader文件。可以通过调整Shader属性的值来改变对象的外观。 这只是一个简单的示例,实际编复杂的Shader需要更多的代码和技术。可以在Unity官方文档和学习资源中找到更多关于编Shader的教程和示例代码,以帮助您更深入地理解和使用Unity Shader
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值