4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
热卖商品
新闻详情
Shader学习笔记(三):Shader中的光照 - 灰信网(软件开发博客聚合)
来自 : www.freesion.com/article/11611 发布时间:2021-03-25

\"这里写图片描述\"

Shader Lit/Simple Diffuse  Properties [NoScaleOffset] _MainTex ( Texture , 2D) = white {} SubShader Pass // indicate that our pass is the base pass in forward // rendering pipeline. It gets ambient and main directional // light data set up; light direction in _WorldSpaceLightPos0 // and color in _LightColor0 Tags { LightMode = ForwardBase } CGPROGRAM #pragma vertex vert #pragma fragment frag #include UnityCG.cginc // for UnityObjectToWorldNormal #include UnityLightingCommon.cginc // for _LightColor0 struct v2f float2 uv : TEXCOORD0; fixed4 diff : COLOR0; // diffuse lighting color float4 vertex : SV_POSITION; v2f vert (appdata_base v) v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.texcoord; // get vertex normal in world space half3 worldNormal = UnityObjectToWorldNormal(v.normal); // dot product between normal and light direction for // standard diffuse (Lambert) lighting half nl = max(0, dot(worldNormal, _WorldSpaceLightPos0.xyz)); // factor in the light color o.diff = nl * _LightColor0; return o; sampler2D _MainTex; fixed4 frag (v2f i) : SV_Target // sample texture fixed4 col = tex2D(_MainTex, i.uv); // multiply by lighting col *= i.diff; return col; ENDCG}
ShadowCasting:实现阴影投射。定义了两个Pass,LightMode分别是ForwardBase和ShadowCaster。

\"这里写图片描述\"

Shader Lit/Shadow Casting  SubShader // very simple lighting pass, that only does non-textured ambient Pass Tags { LightMode = ForwardBase } CGPROGRAM #pragma vertex vert #pragma fragment frag #include UnityCG.cginc  struct v2f fixed4 diff : COLOR0; float4 vertex : SV_POSITION; v2f vert (appdata_base v) v2f o; o.vertex = UnityObjectToClipPos(v.vertex); half3 worldNormal = UnityObjectToWorldNormal(v.normal); // only evaluate ambient o.diff.rgb = ShadeSH9(half4(worldNormal,1)); o.diff.a = 1; return o; fixed4 frag (v2f i) : SV_Target return i.diff; ENDCG // shadow caster rendering pass, implemented manually // using macros from UnityCG.cginc Pass Tags { LightMode = ShadowCaster } CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_shadowcaster #include UnityCG.cginc  struct v2f {  V2F_SHADOW_CASTER; v2f vert(appdata_base v) v2f o; TRANSFER_SHADOW_CASTER_NORMALOFFSET(o) return o; float4 frag(v2f i) : SV_Target SHADOW_CASTER_FRAGMENT(i) ENDCG}

本文链接: http://lambertsimp.immuno-online.com/view-777354.html

发布于 : 2021-03-25 阅读(0)
公司介绍
品牌分类
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616
官网:http://