Unity Shader------遮罩反射(Masking Reflection)
Posted 御雪妃舞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity Shader------遮罩反射(Masking Reflection)相关的知识,希望对你有一定的参考价值。
上一篇分析了反射光,是整个球体都是的,但是我们可能某些情况下不需要整体反射,只需要局部咋办,这一篇会分析遮罩反射。
相比上一篇就是小小的改动,但是我觉得还是贴出来,以后用到来翻比较快。
先上图,是不是有点像地球的感觉
下面上代码:
Shader "MyShaders/MaskingReflection"
Properties
_MainTint("Diffuse Tint", Color) = (1,1,1,1)
_MainTex("Base (RGB)", 2D) = "white"
_ReflAmount("Reflection Amount", Range(0, 1)) = 1
_Cubemap("Cubemap", CUBE) = ""
_ReflMask("Reflection Mask", 2D) = ""
SubShader
Tags "RenderType" = "Opaque"
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
sampler2D _ReflMask;
samplerCUBE _Cubemap;
float4 _MainTint;
float _ReflAmount;
struct Input
float2 uv_MainTex;
float3 worldRefl;
;
void surf(Input IN, inout SurfaceOutput o)
half4 c = tex2D(_MainTex, IN.uv_MainTex);
float3 reflection = texCUBE(_Cubemap, IN.worldRefl).rgb;
float4 reflMask = tex2D(_ReflMask, IN.uv_MainTex);
o.Albedo = c.rgb * _MainTint;
o.Emission = (reflection * reflMask.r) * _ReflAmount;
o.Alpha = c.a;
ENDCG
FallBack "Diffuse"
这个还是很容易的,我就不细说了。。。
以上是关于Unity Shader------遮罩反射(Masking Reflection)的主要内容,如果未能解决你的问题,请参考以下文章
Unity Shader ------ 高级纹理之立方体纹理及光线反射折射的实现
Unity Shader ------ UV动画原理及简易实现
Unity Shader ------ 透明效果之半透明效果的实现及原理