实时折射、镜面反射shader

原文链接:http://www.ceeger.com/forum/read.php?tid=3162&fid=2

Unity没有原生的实时镜面反射Shader,分享几个自己写的,希望能抛砖引玉。

包里4个文件
Mirror.cs :与shader互动的脚本,使用这组材质同时要把这个脚本拖给使用的物体才能生效
Mirror-BumpSpec.shader 实时镜面反射shader 可以配合法线贴图一起用 适用于平面物体
Mirror-AlphaBumpSpec.shader 实时镜面发射、透明材质,可以同时反射和透明效果,也可以配合法线贴图,适用于平面物体
Mirror-AlphaSpecSphere.shader 与上面材质相同,适用于球面物体,不能使用法线贴图

使用很简单,就几个参数,具体效果要慢慢调节,简单解说几个关键参数:
Main Material Blend Level:主材质的混合浓度
Bump Rate:法线贴图强度
Reflection Rate 反射强度
Reflective Color 反射颜色
Reflective Distortion 反射图受法线影响强度
Transparency 同时透明、反射的材质,调节透明反射混合的比例 ,0是全反射 1是全透明
Distortion 反射、透明受法线影响的强度
另外每个shader都有个自动的贴图是不需要设置的,由脚本自动设置

Mirror脚本参数:
Disable Pixel Lights 禁用Pixel Lights,对应unity摄像机的这个设置
Texture Size 反射贴图精度 缺省是256 如果觉得反射很模糊直接把这个加大就行了 即时生效 所以不要设太大了,1024足以应付绝大多数要求了。
Is Flat Mirror:如果是平面反射物体就勾上,球体点掉,材质也要选择相应的
Reflect Layer 反射的culling mask,可以屏蔽掉指定的层

shader和脚本都是参考unity的water效果,脚本基本就是water包里反射脚本的简化版
由于只是模拟,并不是真正的光线跟踪效果,所以折射效果并不准确,但是基本能满足观感。

注意:目前只适用于forward 渲染,Deferred下会有贴图倒置、光线暗淡的问题
尽量避免反射物体互相反射,消耗巨大而且效果不准确
实时反射本身也开销极大,尽量不要滥用

实时折射、镜面反射shader
实时镜面反射
实时折射、镜面反射shader
实时双镜面反射
实时折射、镜面反射shader
实时双镜面 哈哈镜效果
实时折射、镜面反射shader
配合法线贴图实现实时雨天路面反射
实时折射、镜面反射shader
配合法线贴图实现水面反射
实时折射、镜面反射shader
模拟透明球体折射
实时折射、镜面反射shader
模拟球面反射
实时折射、镜面反射shader
同时反射透明 模拟玻璃效果
实时折射、镜面反射shader
官方DEMO升级版 同时反射折射的彩色玻璃效果模拟
实时折射、镜面反射shader
模拟毛玻璃效果

小阿模型来自互联网 Q7模型来自本论坛 材质重新调过,全部图像没有烘焙/Light Probe,都是直接渲染

Original: https://www.cnblogs.com/AaronBlogs/p/8260399.html
Author: AaronBlogs
Title: 实时折射、镜面反射shader

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/544177/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java-Reflection(JAVA反射)

    Java-Reflection(JAVA反射)是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够通过Java-Reflection来调用它的…

    Java 2023年5月29日
    042
  • JAXB java类与xml互转

    JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了…

    Java 2023年6月5日
    065
  • java学习之JSON

    JSON可以说是javascript的一种数据类型,我们学习JSON是为了在客户端的数据给读取出来,官方的解释是:概述:JSON(JavaScript Object Notatio…

    Java 2023年6月13日
    068
  • SpringMVC 使用注解时路径找不到

    SpringMVC 注解路径找不到 今天在使用SpringMVC时偶然遇到了跳转 404 的问题,于是决定记录下来 启动后输入 @RequestMapping(“/lo…

    Java 2023年6月14日
    079
  • springboot 使用 RestTemplate 携带 微信API证书发送请求实现企业付款到零钱/提现/微信退款等场景

    springboot版本: 2.2.0.BUILD-SNAPSHOT 可使用场景:企业付款到零钱/提现/微信退款等场景 企业提现零钱付款场景下: 下面是能跑通的代码,减少踩坑时间….

    Java 2023年5月30日
    062
  • 垂直扩展和水平扩展

    对付性能瓶颈,系统本身已无潜力可供压榨,榨无可榨的情况下,可以考虑进行扩展。 扩展方式又可分为垂直扩展和水平扩展2种。 垂直扩展:就是升级机器,加强装备。换一台性能更好的机器,更换…

    Java 2023年6月5日
    065
  • SUSE系统—keepalived的搭建

    作为博客第一篇,先小尝初试一下搭建keepalived,因为项目需要搭建集群,为了满足需要,需要服务器对外暴露个虚拟IP,进行集群部署。 第一步:先把keepalived.tra….

    Java 2023年6月5日
    090
  • 通过调试来理解形参与实参的区别

    刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊过,尤其是遇到形参名和实参名一样时,更加晕头转向,出现一种”是谁把值传给了我,而我又传给了谁”的疑惑…

    Java 2023年6月8日
    076
  • Nginx相关模块学习使用实践指南

    转载自:https://www.bilibili.com/read/cv16150654?spm_id_from=333.999.0.0 0x01 Nginx 常用模块使用实践 官…

    Java 2023年5月30日
    076
  • vmware虚拟机备忘录

    虚拟机拷贝自其他服务器,有时候IP,网络都配置正确就是没法ping 通网络,重启虚拟机也没用 此时将网卡删除,重新添加 systemctl restart network 即可 O…

    Java 2023年5月30日
    068
  • Spring 最常用的 7 大类注解

    一. 核心注解 二. Spring MVC和REST注解 三. Spring Boot注解 四. Stereotype注解 五. 数据访问注解 六. 任务执行、调度注解 七. 测试…

    Java 2023年5月30日
    073
  • Java 代理模式

    1、打王者段位一直打不上王者段位怎么办?请游戏代练。2、过年回家自已抢不到高铁票怎么办?找黄牛帮我们抢票。3、…….(生活中处处可见。) 由上可知,代理模式…

    Java 2023年5月29日
    085
  • Nginx location 和 proxy_pass路径配置详解

    本文是基于 location 的匹配末尾是否配置 / 和 proxy_pass 末尾是否配置 / ,进行测试,完全还原了整个测试过程。帮助了解具体的情况。 一、Nginx loca…

    Java 2023年5月30日
    073
  • 12、SpringBoot 启动 刷新应用上下文 启动WEB容器

    目录:Springboot源码学习目录上文:11、SpringBoot 启动 刷新应用上下文 自动装配解析(三)前言:好了,终于将刷新应用上下文的自动装配流程的源码读完了,顺便也将…

    Java 2023年6月13日
    071
  • Mybatis 原始dao CRUD方法

    用到的相关jar包及所用版本如下: 其中的Mybatis可以到github.com的网站下载 <project xmlns="http://maven.apache…

    Java 2023年5月30日
    065
  • 使用jquery实现文本框输入特效:文字逐个显示逐个消失反复循环

    前两天看到某个网站上的输入框有个小特效:文字逐个显示,并且到字符串最大长度后,逐个消失,然后重新循环显示消失,循环显示字符串数组。我对这个小特效有点好奇,于是今天自己尝试用jque…

    Java 2023年6月6日
    066
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球