光照衰减:

// Upgrade NOTE: replaced '_LightMatrix0' with 'unity_WorldToLight'Shader "Unlit/15"
{Properties{_Diffuse("Diffuse",Color) = (1,1,1,1)_Specular("Specular",Color) = (1,1,1,1)_Gloss("Gloss",Range(1,256)) = 10}SubShader{Pass{Tags{"LightMode" = "ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag//添加#pragma multi_compile_fwdbase#include "UnityCG.cginc"#include "Lighting.cginc"fixed4 _Diffuse;fixed4 _Specular;float _Gloss;struct a2v{float4 vertex:POSITION;float3 normal:NORMAL;};struct v2f{float4 pos:SV_POSITION;float3 worldNormal:TEXCOORD0;float3 worldPos:TEXCOORD1;};v2f vert(a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.worldNormal = UnityObjectToWorldNormal(v.normal);o.worldPos = mul(unity_ObjectToWorld,v.vertex);return o;}fixed4 frag(v2f i) :SV_Target{fixed3 worldNormal = normalize(i.worldNormal);fixed3 worldLight = normalize(UnityWorldSpaceLightDir(i.worldPos));fixed3 worldView = normalize(UnityWorldSpaceViewDir(i.worldPos));fixed3 halfDir = normalize(worldLight + worldView);fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.rgb;fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal,worldLight));//Blinn-Phong高光公式:光顔色 * 高光反射顔色 * pow(saturate(dot(法线,半角方向)),高光系数)fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(saturate(dot(worldNormal,halfDir)),_Gloss);fixed atten = 1;return fixed4((ambient + diffuse + specular) * atten,1.0);}ENDCG}Pass{Tags{"LightMode" = "ForwardAdd"}//设置混合模式Blend One OneCGPROGRAM#pragma vertex vert#pragma fragment frag//添加#pragma multi_compile_fwdadd#include "UnityCG.cginc"#include "Lighting.cginc"#include "AutoLight.cginc"fixed4 _Diffuse;fixed4 _Specular;float _Gloss;struct a2v{float4 vertex:POSITION;float3 normal:NORMAL;};struct v2f{float4 pos:SV_POSITION;float3 worldNormal:TEXCOORD0;float3 worldPos:TEXCOORD1;};v2f vert(a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.worldNormal = UnityObjectToWorldNormal(v.normal);o.worldPos = mul(unity_ObjectToWorld,v.vertex);return o;}fixed4 frag(v2f i) :SV_Target{fixed3 worldNormal = normalize(i.worldNormal);fixed3 worldLight = normalize(UnityWorldSpaceLightDir(i.worldPos));fixed3 worldView = normalize(UnityWorldSpaceViewDir(i.worldPos));fixed3 halfDir = normalize(worldLight + worldView);               fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal,worldLight));//Blinn-Phong高光公式:光顔色 * 高光反射顔色 * pow(saturate(dot(法线,半角方向)),高光系数)fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(saturate(dot(worldNormal,halfDir)),_Gloss);#ifdef USING_DIRECTIONAL_LIGHTfixed atten = 1;
#elsefloat3 lightCoord = mul(unity_WorldToLight, float4(i.worldPos, 1)).xyz;fixed atten = tex2D(_LightTexture0,dot(lightCoord,lightCoord).rr).UNITY_ATTEN_CHANNEL;
#endifreturn fixed4((diffuse + specular) * atten,1.0);}ENDCG}}Fallback "Specular"
}

光照阴影:

// Upgrade NOTE: replaced '_LightMatrix0' with 'unity_WorldToLight'Shader "Unlit/16"
{Properties{_Diffuse("Diffuse",Color) = (1,1,1,1)_Specular("Specular",Color) = (1,1,1,1)_Gloss("Gloss",Range(1,256)) = 10}SubShader{Pass{Tags{"LightMode" = "ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag//添加#pragma multi_compile_fwdbase#include "UnityCG.cginc"#include "Lighting.cginc"#include "AutoLight.cginc"fixed4 _Diffuse;fixed4 _Specular;float _Gloss;struct a2v{float4 vertex:POSITION;float3 normal:NORMAL;};struct v2f{float4 pos:SV_POSITION;float3 worldNormal:TEXCOORD0;float3 worldPos:TEXCOORD1;SHADOW_COORDS(2)};v2f vert(a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.worldNormal = UnityObjectToWorldNormal(v.normal);o.worldPos = mul(unity_ObjectToWorld,v.vertex);TRANSFER_SHADOW(o);return o;}fixed4 frag(v2f i) :SV_Target{fixed3 worldNormal = normalize(i.worldNormal);fixed3 worldLight = normalize(UnityWorldSpaceLightDir(i.worldPos));fixed3 worldView = normalize(UnityWorldSpaceViewDir(i.worldPos));fixed3 halfDir = normalize(worldLight + worldView);fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.rgb;fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal,worldLight));//Blinn-Phong高光公式:光顔色 * 高光反射顔色 * pow(saturate(dot(法线,半角方向)),高光系数)fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(saturate(dot(worldNormal,halfDir)),_Gloss);//fixed atten = 1;//fixed shadow = SHADOW_ATTENUATION(i);//统一计算衰减和阴影UNITY_LIGHT_ATTENUATION(atten,i,i.worldPos);return fixed4((ambient + diffuse + specular) * atten,1.0);}ENDCG}Pass{Tags{"LightMode" = "ForwardAdd"}//设置混合模式Blend One OneCGPROGRAM#pragma vertex vert#pragma fragment frag//添加//#pragma multi_compile_fwdadd#pragma multi_compile_fwdadd_fullshadows#include "UnityCG.cginc"#include "Lighting.cginc"#include "AutoLight.cginc"fixed4 _Diffuse;fixed4 _Specular;float _Gloss;struct a2v{float4 vertex:POSITION;float3 normal:NORMAL;};struct v2f{float4 pos:SV_POSITION;float3 worldNormal:TEXCOORD0;float3 worldPos:TEXCOORD1;//SHADOW_COORDS(2)};v2f vert(a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.worldNormal = UnityObjectToWorldNormal(v.normal);o.worldPos = mul(unity_ObjectToWorld,v.vertex);//TRANSFER_SHADOW(o);return o;}fixed4 frag(v2f i) :SV_Target{fixed3 worldNormal = normalize(i.worldNormal);fixed3 worldLight = normalize(UnityWorldSpaceLightDir(i.worldPos));fixed3 worldView = normalize(UnityWorldSpaceViewDir(i.worldPos));fixed3 halfDir = normalize(worldLight + worldView);               fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal,worldLight));//Blinn-Phong高光公式:光顔色 * 高光反射顔色 * pow(saturate(dot(法线,半角方向)),高光系数)fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(saturate(dot(worldNormal,halfDir)),_Gloss);//1.计算衰减
//#ifdef USING_DIRECTIONAL_LIGHT
//                fixed atten = 1;
//#else
//                float3 lightCoord = mul(unity_WorldToLight, float4(i.worldPos, 1)).xyz;
//                fixed atten = tex2D(_LightTexture0,dot(lightCoord,lightCoord).rr).UNITY_ATTEN_CHANNEL;
//#endif//2.计算衰减和阴影UNITY_LIGHT_ATTENUATION(atten,i,i.worldPos);return fixed4((diffuse + specular) * atten,1.0);}ENDCG}}Fallback "Specular"
}

UnityShader---光照(衰减和阴影))(内置渲染管线)---10相关推荐

  1. 制作RPG独立游戏练习(二)内置渲染管线中实现风格化PBR效果

    游戏的研发大概有3个月了,都是业余时间边学边做,还是觉得在项目里面实操学得扎实牢靠. 目标平台是手机....(优化后,目前测试的是中高端机型) 目前是在unity里面实时光的效果打包到手机里的实机画面 ...

  2. 【工具篇】Unity内置渲染管线和URP以及HDRP轮廓外发光边缘光高亮显示演示

    目录 一.内置渲染管线(Built_IN) 一. 效果展示 二.使用教学 Quick Outline 二.URP渲染管线

  3. 你知道吗,Flutter内置了10多种Button控件

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Flutter内置了10多种Button(按钮)类控件供我 ...

  4. Vue.js 内置了10个过滤器,下面简单介绍它们的功能和用法。

    Vue.js 内置了10个过滤器,下面简单介绍它们 的功能和用法. ①capitalize:字符串首字符转化成大 写 ②uppercase:字符串转化成大写 ③lowercase :字符串转化成小写 ...

  5. UnityShader---高级纹理(反射、折射、菲涅尔反射、镜子\玻璃效果)(内置渲染管线)---11

    反射:代码里有阴影和衰减计算 Shader "Unlit/17" {Properties{_Color("Color",Color)=(1,1,1,1)_Ref ...

  6. 【内置渲染管线】Unity标准Shader解析(渲染模式,贴图类型)

    目录 一.标准Shader之四大渲染模式 1.Opaque(不透明) 2.Cutout(镂空) 3.Fade(隐现) 4.Transparent(透明) 二.标准Shader之十种贴图类型 1.标准 ...

  7. 【内置渲染管线】Built_IN水面效果Shader

    1.水面波动UV动画 Shader "Hsj/Whater" {Properties{_MainTex("MainTex",2D) = "white& ...

  8. python中chr函数的用法_【转】Python内置函数(10)——chr

    英文文档: chr(i) Return the string representing a character whose Unicode code point is the integeri. Fo ...

  9. 【图形学】31 Unity 的光源衰减和阴影

    来源:<UNITY SHADER入门精要> 文章目录 1.用于光照的衰减纹理 2.阴影的产生 ①传统的阴影映射纹理 ②屏幕空间的阴影映射技术(Screenspace Shadow Map) ...

最新文章

  1. [原]变参函数原理详解
  2. jenkins2 groovy语法
  3. 建立一个成功的OpenStack组
  4. Ubuntu18.04安装opencv出现的一系列问题解决方法(持续更新~)
  5. C++socket编程(三):3.4 listen监听
  6. uniapp 乘法结果保留了很多小数_苏教版五年级数学上册5.9循环小数和商的近似值微课视频 | 练习...
  7. 工具分享:xampp-windows-x64-7.3.2-1-VC15-installer.exe 请自行下载(附下载链接)
  8. iPhone史上最全的使用教程
  9. 【PC工具】可能是最好用的下载工具:IDM特点及功能汇总,IDM破解版下载,PC好用的迅雷下载版本合集...
  10. SVN常用命令集合_艾孜尔江撰
  11. 移动端布局三种视口_移动H5的meta视口标签、弹性布局原则和背景图片适配
  12. 鸿蒙系统敏感应用,鸿蒙系统特性“揭晓”!一次开发灵活使用,生态构建难题被解决?...
  13. 36氪专访融云CEO董晗:8年企服,6年出海,现计划成为「沙特最大科技企业」
  14. 通过ip反查域名信息
  15. Java 老矣,尚能饭否?
  16. C和指针_第16章_标准数函数库_学习笔记
  17. python爬虫登录12306失败_使用python爬虫模拟12306登录方法
  18. Easypoi模版导出excel
  19. 全新的红巨人粒子特效套装插件:TrapCode Suite Mac版
  20. 北大操作系统陈向群第七章知识点

热门文章

  1. xlsx无法导入MySQL?
  2. 分享一个实用的自媒体一键多发平台,关键是能免费用
  3. 3dmax材质丢失插件_常见3DMAX插件导出模型丢失贴图问题
  4. 原生js获取一段时间内每隔几分钟的时间数组
  5. 计算机组成原理实验四 微程序控制器实验报告
  6. java编程思想----7,多形性
  7. 数据中台:数据中台技术架构详解
  8. Android 系统图标
  9. 2021秋软工实践个人作业一
  10. 【网页制作】CSS基本选择器讲解(附讲解视频)