用来描述光在不同折射率的介质之间的行为。用公式推导出的光的反射称之为“菲涅尔反射”。

一般运用于水面效果,试想一下你站在湖边,低头看向水里,你会发现近的地方非常清澈见底(反射较少),而看远的地方却倒映着天空(反射较多),这就是菲尼尔效应。

由于真实的菲尼尔公式计算量较多。在游戏里往往会用简化版的公式来提升效率达到近似的效果。

Schlick菲涅尔近似等式:

Empricial菲涅尔近似等式:

这里我采用Schlick菲涅尔近似等式。

代码如下:

Shader "MyShader/009"
{Properties{_MainTex ("Texture", 2D) = "white" {}_FresnelScale("FresnelScale",Range(0,1))=0.5_Cubemap("Cubemap",Cube)="_Skybox"{}}SubShader{Tags { "RenderType"="Opaque" }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_fog#include "UnityCG.cginc"#include "Lighting.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;float3 normal:NORMAL;};struct v2f{float2 uv : TEXCOORD0;UNITY_FOG_COORDS(1)float4 vertex : SV_POSITION;float3 worldPos:TEXCOORD2;float3 worldNormal:TEXCOORD3;float3 worldViewDir:TEXCOORD4;float3 worldReflection:TEXCOORD5;};sampler2D _MainTex;samplerCUBE _Cubemap;float4 _MainTex_ST;float _FresnelScale;v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;o.worldNormal = UnityObjectToWorldNormal(v.normal);o.worldViewDir = UnityWorldSpaceViewDir(o.worldPos);o.worldReflection = reflect(-o.worldViewDir, o.worldNormal);UNITY_TRANSFER_FOG(o,o.vertex);return o;}fixed4 frag (v2f i) : SV_Target{float3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;float3 worldNormal = normalize(i.worldNormal);float3 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos));float3 worldViewDir = normalize(i.worldViewDir);fixed3 diffuse = tex2D(_MainTex, i.uv).rgb*_LightColor0.rgb*saturate(dot(worldNormal, worldLightDir));fixed3 reflection = texCUBE(_Cubemap, i.worldReflection).xyz;float fresnel = _FresnelScale + (1 - _FresnelScale)*pow(1 - dot(worldViewDir, worldNormal), 5);//菲涅尔系数fixed3 color = ambient + lerp(diffuse, reflection, saturate(fresnel));UNITY_APPLY_FOG(i.fogCoord, color);return fixed4(color, 1);}ENDCG}}
}

shader 菲涅尔反射相关推荐

  1. Unity Shader 反射 折射 菲涅尔反射

    菲尼尔反射原理: 通过计算得到的反射值,采样CubeMap,得到环境反色颜色. 核心算法: 反射核心算法:Reflect(-viewDir,worldNormalDir) 折射核心算法:Refact( ...

  2. 反射,折射,菲涅尔反射Shader实现

    反射 - 对物体表面进行反射处理 折射 - 对物体表面进行折射处理 菲涅尔反射 - 对物体入射角越小的反射效果越好,越大的边界反射亮度越大.(大概就是这样,具体查百度) 菲涅尔反射的效果跟接近现实中环 ...

  3. Unity Shader Fresnel 菲涅尔反射

    效果图 黄色的漫反射 天空盒镜面反射 资源 天空盒 https://assetstore.unity.com/packages/2d/textures-materials/sky/free-hdr-s ...

  4. 调整地面材质_【C4DtoA 13】Arnold渲染器(材质七): Shadow Matte Shader

    Tips: 共计1531字,阅读时间预计3min,实践用时26min: 多图预警 ---------------------------------- 相关教程传送门: 渲染神器Arnold(C4Dt ...

  5. unity build-in管线中的PBR材质Shader分析研究

    PBR分析 前言 我理解的PBR PBR组成部分 直接光漫反射 直接光镜面反射(高光) 间接光漫反射 间接光镜面反射 最终加和 结果 前言 近来,用到了几次Surface Shader,对于其封装好的 ...

  6. Unity Shader - 搬砖日志 - URP PBR (抄作业篇,持续更新~)

    文章目录 目的 环境 PBR 主要渲染方程 D 项 GGB(desmos) D_Term 完整 Shader G 项 GGB G_Term 完整 Shader F 项 GGB F_Term 完整 Sh ...

  7. 【Unity Shader】 CubeMap(立方体贴图)

    Unity Shader 立方体贴图 一.介绍CubeMap Shader中对CubeMap采样 Unity中如何制作CubeMap 二.Reflect CubeMap(反射立方体纹理用于环境映射) ...

  8. [Unity Shader] 水纹着色器 Water Shader

    着色器效果 基于Unity 2018.3.0.Amplify Shader Editor 1.5.7 water_shader.gif 参数设置 不进行背面剔除,这样从水下也能看到. 投射阴影和接受阴 ...

  9. Unity_Shader中级篇_10_Unity Shader入门精要

    高级纹理 第七章学习了关于基础纹理的内容,这些纹理包括法线纹理.渐变纹理和遮罩纹理等.这些纹理尽管用处不同,但他们都属于低维(一维或二维)纹理.此时我们将学习一些更复杂的纹理.在10.1中我们会学习如 ...

  10. Unity从零开始实现一个全息效果Shader

    Unity从零开始实现一个全息效果Shader 前言 开始捣鼓 一.准备阶段 二.先从透明效果开始 三.顶点故障效果 四.扫描线效果 五.菲尼尔反射效果 六.颗粒效果 七.颜色故障效果 CustomE ...

最新文章

  1. 与servlet Api 的集成
  2. UML系统分析与设计01-准备
  3. PHP-7.1 源代码学习:字节码在 Zend 虚拟机中的解释执行 之 概述
  4. 解决Error: undefined reference to `__android_log_print'
  5. 想要设计自己的微服务?看这篇文章就对了 1
  6. [HDOJ5289]Assignment(RMQ,二分)
  7. prometheus命令_Prometheus入门教程(一):Prometheus 快速入门
  8. 搭建局域网YUM服务器
  9. 大数据分析需注意什么问题
  10. 6 Django的视图层
  11. 如何备考PMP考试?
  12. php初级程序员的自我评价,程序员的自我评价【程序员的简历自我评价】
  13. 在IGBT的开启过程中,IGBT的电压降低,电流上升,在IGBT的关断过程中IGBT的电压上升,电流下降,在一段时间内,电压和电流均不为0,由于功率等于电压乘以电流,即P=U×I,因此将产生损耗,开
  14. 【鼠标右键点击桌面图标时,出现资源管理器未响应】
  15. MATLAB 一幅图两个纵坐标(附带功能:设置字体、颜色、字号、坐标轴显示范围、显示间隔、加百分号)
  16. vulnhub靶场-Hacker_Kid-v1.0.1
  17. 微信公众号 - H5 网页接入微信支付(JSAPI)
  18. 这家公司把裁员写进OKR,脸都不要了
  19. 攻坚“最后100米”
  20. 中科大算法设计与分析部分答案

热门文章

  1. SM2算法和RSA算法简介
  2. 将ttc改为otf_几种字体格式的区别otf/ttf/ttc格式字体的区别
  3. U盘PE删除影子系统(PowerShadow),解决安装后重启蓝屏的问题
  4. sql server 2005 Express 下载
  5. vb.net 功能f8键事件_UG软件F8快捷键和笔记本电脑F8快捷键冲突的解决方法
  6. 50道经典MySQL练习题(含解答)
  7. 根据身份证号码计算年龄
  8. 求最短路径算法之SPFA算法
  9. 电子绘本pdf_1100多本RAZ(Reading A-Z),电子点读版PDF有声书,最全版本
  10. 机票预订系统活动图_机票预订系统UML讲解