1.Shader在什么情况下使用

Reflective(反射),反射系列,都是通过cubemap实现的,通常在为一些反射度高的金属/玻璃等做一些环境的反射效果,比如玻璃杯反射出房子内部的样子。

image.png

2.Shader的价值(用的多不多),Shader的难度

反射其实在旧版本中用的比较多的,一些物体在用了反射后真实感能得到极大的提升。

3.代码详细注释

Shader "Legacy Shaders/Reflective/Bumped Diffuse" {Properties {_Color ("Main Color", Color) = (1,1,1,1)_ReflectColor ("Reflection Color", Color) = (1,1,1,0.5)_MainTex ("Base (RGB) RefStrength (A)", 2D) = "white" {}_Cube ("Reflection Cubemap", Cube) = "_Skybox" { }_BumpMap ("Normalmap", 2D) = "bump" {}}SubShader {Tags { "RenderType"="Opaque" }LOD 300CGPROGRAM#pragma surface surf Lambertsampler2D _MainTex;sampler2D _BumpMap;samplerCUBE _Cube;fixed4 _Color;fixed4 _ReflectColor;struct Input {float2 uv_MainTex;float2 uv_BumpMap;//世界空间的反射向量float3 worldRefl;//定义了一个3x3的矩阵//用于WorldReflectionVector中局部坐标系到世界坐标系的转换INTERNAL_DATA};void surf (Input IN, inout SurfaceOutput o) {//采样纹理颜色fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);//混合设定的颜色fixed4 c = tex * _Color;//最终获得Albedo光照颜色o.Albedo = c.rgb;//法线获取o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));//世界反射向量。如果表面着色写入到o.Normal,将包含世界反射向量。为了得到基于每个像素的法线贴图的反射向量, 使用WorldReflectionVector的(IN输入, o.Normal)。//WorldReflectionVector内部进行了Reflect(IN.worldRefl,dot(o.Normal,INTERNAL_DATA)):反射函数的计算,要求入射方向和法向量都是单位向量//Reflect()可以看这篇https://zhuanlan.zhihu.com/p/139892885//实际就是通过光方向和法线方向以一种低成本的方式计算出反射方向float3 worldRefl = WorldReflectionVector (IN, o.Normal);//texCUBE会采样方向向量worldRefl在CubeMap上的交点//这篇介绍得很详细https://blog.csdn.net/v_xchen_v/article/details/79474193fixed4 reflcol = texCUBE (_Cube, worldRefl);//如果纹理本身是透明或半透的就保持一致//这里用乘法估测是为了支持某些带透明通道的CubeMapreflcol *= tex.a;//最终在自发光通道混合反射计算结果和反射混合颜色o.Emission = reflcol.rgb * _ReflectColor.rgb;//由于之前reflcol已经*= tex.a,最终的Alpha与_ReflectColor.a混合即可o.Alpha = reflcol.a * _ReflectColor.a;}ENDCG}FallBack "Legacy Shaders/Reflective/VertexLit"
}

4.Shader编写思路,用到的知识点

WorldReflectionVector

通过光方向和法线方向以一种低成本的方式计算出反射方向,可以参考这篇的图:

image.png

texCUBE

texCUBE会采样方向向量worldRefl在CubeMap上的交点,参考这篇的图:

image.png


http://www.taodudu.cc/news/show-4104179.html

相关文章:

  • hp-unix操作系统root账号被锁定的两种解决方法:
  • Shader实现透明反射效果应用地板
  • ICPC North America Qualifier 2017 B.Bumped! (分层图 + spfa)
  • Bumped Map And Normal Map
  • upc组队赛6 Bumped!【最短路】
  • Bumped!【最短路】(神坑
  • UPC 备战省赛第六场 Bumped!
  • 【译】Unity3D Shader 新手教程(5/6) —— Bumped Diffuse Shader
  • Bumped! (最短路)
  • Bumped!(dijstra)
  • Bumped!(dijskra)
  • Unity3D Shader 新手教程(5/6) —— Bumped Diffuse Shader
  • 第六场问题 B: Bumped!(Dijkstra + 优先队列优化)
  • Kattis - bumped B - Bumped! (最短路)
  • 优化实现Mobile/Bumped Diffuse
  • Bumped!【迪杰斯特拉消边、堆优化】
  • 问题 B: Bumped!
  • Unity内置Shader解读1——Bumped Diffuse
  • Bumped! 2017 ICPC North American Qualifier Contest (分层建图+dijstra)
  • 计算机硬件系统不包括什么,硬件有哪些(计算机硬件不包括)
  • 台式计算机主要有哪些硬件组成,构成台式电脑主机的基本硬件有什么
  • 计算机硬件有问题,计算机硬件有哪些
  • 计算机系统包括哪些郜分,一台计算机的基本硬件配置有哪些?
  • 计算机硬件具体都包含哪些,电脑硬件包括哪些
  • 计算机主机内有的硬件有哪些,电脑主机内有哪些硬件
  • 计算机主机内有哪些硬件,电脑主机内部有哪些硬件
  • 计算机主机箱内的硬件设备主要有哪些,电脑主机有哪些硬件设备
  • 台式计算机主要硬件设备有哪些,电脑基本硬件有哪些
  • 118. MVC的局部视图是什么
  • MVC的局部视图是什么?

Unity内置Shader解读9——Reflective/Bumped Diffuse相关推荐

  1. Unity内置Shader解读3——Decal

    1.Shader在什么情况下使用 Decal(贴花)贴花就是类似于CF里的喷漆,或者汽车/墙上等贴一个贴纸. image.png 2.Shader的价值(用的多不多),Shader的难度 这个应该是极 ...

  2. unity, 内置shader下载地址

    在unity的download页面上能找到Built in shaders的下载连接. 转载于:https://www.cnblogs.com/wantnon/p/4550631.html

  3. unity URP内置shader lit解析

    unity内置的pbr渲染shader Properties为shader相关属性 两个SubShader里面为相应的渲染内容,第二个为降级处理渲染,如果第一个SubShader不兼容,才会渲染第二个 ...

  4. 闲云野鹤:吃鸡(四)之场景制作—用unity内置草功能制作草

    先上最终效果图吧: 第一种方式:Add Grass Texture,只需要选择草的图片即可 选择Add Grass Texture此种方式unity默认mesh为一个矩形面.基本制作过程没什么值得多说 ...

  5. Unity内置资源如何打包避免冗余

    这是第249篇UWA技术知识分享的推送.今天我们继续为大家精选了若干和开发.优化相关的问题,建议阅读时间10分钟,认真读完必有收获. UWA 问答社区:answer.uwa4d.com UWA QQ群 ...

  6. Unity内置Built-in到可编程URP函数对应整理

    目录 1.总体结构 2.Shader Include 头文件 3.灯光模式 4.变种Variants 5.预处理宏 Predefined Shader Preprocessor Macros 5.1辅 ...

  7. Unity内置的三套消息发送机制的应用实例

    转自http://blog.sina.com.cn/s/blog_1491e52310102wuf6.html 代码简介 : [1] 实例中包含2个类文件, SendMessage.cs 和 Rece ...

  8. Unity3D内置Shader私房课(三)Decal贴花

    在Unity内建Shader的DefaultResourcesExtra的目录中,有一个很简单却很实用的shader--Decal.这是一个贴花着色器,可以在模型的表面添加一个贴花纹理. Unity内 ...

  9. Unity 内置着色器下载方法

    Unity 内置着色器下载方法 官方下载 GitHub下载 官方下载 需要科学上网 官方下载链接 https://unity3d.com/get-unity/download/archive GitH ...

  10. Unity 内置管线Shader升级到URP详细手册

    本文转载自:https://www.jianshu.com/p/3fef69e2efb6 作为技术资料记录和备份,避免遗忘或删除 //================以下为具体内容========== ...

最新文章

  1. 谁在引领中国制造?中国智能制造发展解析
  2. 线程安全: 互斥锁和自旋锁(10种)
  3. 大学计算机基础python学多久_怎么自学python,大概要多久?
  4. Android libcore添加JNI调用Hal层接口问题
  5. 01_MUI之Boilerplate中:HTML5示例,动态组件,自定义字体示例,自定义字体示例,图标字体示例
  6. [网络安全自学篇] 三十三.文件上传之绕狗一句话原理和绕过安全狗(六)
  7. linux vmcore 分析,crash分析vmcore
  8. 路径规划算法_自动驾驶汽车路径规划算法浅析
  9. strace调试(Linux Device Driver)
  10. CountDownLatch原理简介和使用过程
  11. Apache日志切割shell脚本
  12. Jquery 实现动态添加输入框编号
  13. matlab gui界面画三角形,新手,用gui界面画李萨如图,出错,求解答
  14. vuex - 学习日记
  15. win32 粒子编辑器
  16. Eclipse XML 编辑器
  17. php7isapi,如何选择PHP套件中ISAPI和FastCGI模式的版本?_护卫神
  18. 电脑出现白屏怎么办(软件有的能打开,就是一开机就出现白屏)(亲测有效)
  19. 中国成语测试软件,中国汉字水平测试
  20. MPU9250使用笔记

热门文章

  1. C++基于libxls库读取xls文件
  2. WAMP安装与基础配置
  3. 微信小程序一键连接已知wifi
  4. 电脑计算机无法找到脚本文件夹,电脑开机老是提醒无法找到脚本文件的处理方法...
  5. 模电(电平转换电路)
  6. 激光条纹中心线提取算法总结和复现
  7. 揭秘 Win8 电脑 OEM 分区创建
  8. 大家心目中的这些「神器」App,时尚热门app
  9. 干货:中国移动互联网行业深度报告
  10. 《ArcGIS10.2》 Part1 在地图上标注地名或坐标