unity shader实现较完整光照效果
本文实例为大家分享了unityshader实现光照效果的具体代码,供大家参考,具体内容如下
效果图:
shader被附给了球。
灯光需要在属性面板开启阴影。
//UpgradeNOTE:replaced'mul(UNITY_MATRIX_MVP,*)'with'UnityObjectToClipPos(*)' Shader"Unlit/lightFull" { Properties { _MainTex("Texture",2D)="white"{} } SubShader { Tags{"RenderType"="Opaque"} LOD100 Pass { Tags{"LightMode"="ForwardBase"} CGPROGRAM #pragmavertexvert #pragmafragmentfrag //makefogwork #pragmamulti_compile_fwdbase #include"UnityCG.cginc" #include"Lighting.cginc" #include"AutoLight.cginc" structappdata { float4vertex:POSITION; float2uv:TEXCOORD0; float3normal:NORMAL; }; structv2f { float2uv:TEXCOORD0; float4pos:POSITION; float4pos_world:TEXCOORD1; float3normal:TEXCOORD2; SHADOW_COORDS(3) }; sampler2D_MainTex; float4_MainTex_ST; v2fvert(appdatav) { v2fo; o.pos_world=mul(UNITY_MATRIX_M,v.vertex); o.normal=v.normal; o.pos=UnityObjectToClipPos(v.vertex); o.uv=TRANSFORM_TEX(v.uv,_MainTex); TRANSFER_SHADOW(o); returno; } fixed4frag(v2fi):SV_Target { //samplethetexture fixed4col=tex2D(_MainTex,i.uv); float4lightColor=_LightColor0; float3lightDir=WorldSpaceLightDir(i.pos_world); UNITY_LIGHT_ATTENUATION(atten,i,i.pos_world.xyz); returncol*lightColor*saturate(dot(lightDir,i.normal))*atten; } ENDCG } pass { Tags{"LightMode"="ForwardAdd"} BlendOneOne CGPROGRAM #pragmavertexvert #pragmafragmentfrag #pragmamulti_compile_fwdadd_fullshadows #include"UnityCG.cginc" #include"Lighting.cginc" #include"AutoLight.cginc" structv2f { float4pos:POSITION; float4vertex:TEXCOORD0; float3normal:NORMAL; SHADOW_COORDS(2) }; v2fvert(appdata_fulldata) { v2fv; v.pos=UnityObjectToClipPos(data.vertex); v.vertex=mul(UNITY_MATRIX_M,data.vertex); v.normal=data.normal; TRANSFER_SHADOW(v); returnv; } float4frag(v2fv):SV_Target { float3lightColor=_LightColor0; #ifdefUSING_DIRECTIONAL_LIGHT float3lightDir=_WorldSpaceLightPos0; #else float3lightDir=_WorldSpaceLightPos0-v.vertex; #endif UNITY_LIGHT_ATTENUATION(atten,v,v.vertex.xyz); float3color=lightColor*saturate(dot(lightDir,v.normal)*atten); returnfloat4(color,1); } ENDCG } } Fallback"Specular" }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。