简单设置网站首页,专业的门户网站建设方案,建立一个属于自己的网站,商丘网站建设aliapp文章目录 前言一、实现下图中的小球接受环境光照实现思路#xff1a;1、在Pass中使用前向渲染模式2、使用系统变量 _LightColor0 获取场景中的主平行灯 二、返回环境中主环境光的rgb固定a(亮度)#xff0c;小球亮度还随之改变的原因三、获取Unity中的环境光的颜色1、Color模式… 文章目录 前言一、实现下图中的小球接受环境光照实现思路1、在Pass中使用前向渲染模式2、使用系统变量 _LightColor0 获取场景中的主平行灯 二、返回环境中主环境光的rgb固定a(亮度)小球亮度还随之改变的原因三、获取Unity中的环境光的颜色1、Color模式下的 前言
Unity中Shader的光强与环境色 一、实现下图中的小球接受环境光照 实现思路
1、首先使用前向渲染模式 2、获取到场景中的灯
1、在Pass中使用前向渲染模式 Tags{“LightMode”“ForwardBase”} 2、使用系统变量 _LightColor0 获取场景中的主平行灯
_LightColor0 主平行灯的颜色值,rgb 颜色x亮度; a 亮度 需要引用 Lighting.cginc 测试代码
Shader MyShader/P1_5_2
{Properties{_MainTex (Texture, 2D) white {}}SubShader{Tags { RenderTypeOpaque }Pass{Tags{LightModeForwardBase}CGPROGRAM#pragma vertex vert#pragma fragment frag#include UnityCG.cginc#include Lighting.cgincstruct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex UnityObjectToClipPos(v.vertex);return o;}fixed4 frag (v2f i) : SV_Target{return _LightColor0;}ENDCG}}
}
效果
二、返回环境中主环境光的rgb固定a(亮度)小球亮度还随之改变的原因
当我们在片元着色器结果处返回 fixed4(_LightColor0.rgb,1)这个结果时会发现小球的亮度还是会随着主环境光的亮度改变而改变 return fixed4(_LightColor0.rgb,1); 由上图 FrameDebugger调试数据可得 原因是 _LightColor0中的 rgb 值不是单纯的rgb颜色而是一个与 a(亮度)相乘后的结果。
三、获取Unity中的环境光的颜色 unity_AmbientSky — 环境光Gradient中的Sky Color. unity_AmbientEquator — 环境光Gradient中的Equator Color. unity_AmbientGround — 环境光Gradient中的Ground Color. UNITY_LIGHTMODEL_AMBIENT — 环境光(Color)中的颜色等同于环境光Gradient中的Sky Color. 1、Color模式下的 获取到 unity_AmbientSky 与LightColor0 相乘后输出测试 测试效果
2、Gradient模式下的 分别与这三个 一 一 对应 unity_AmbientSky — 环境光Gradient中的Sky Color. unity_AmbientEquator — 环境光Gradient中的Equator Color. unity_AmbientGround — 环境光Gradient中的Ground Color.