1.创建
1)Lighting|Reflection Probe来创建一个新的反射探针
2)将反射探针放置在您希望捕捉反射的区域内
位置和要反射的物体位置接近
3)在反射探针的Inspector面板中,您可以设置以下属性:
Size:控制反射探针覆盖的区域大小。
Refresh Mode:控制反射探针的更新方式,例如,实时更新或仅在特定时刻更新
HDR:如果启用,反射探针将使用HDR颜色。
Clear Flags:控制反射探针的背景内容,例如,可以设置为天空盒。
Culling Mask:设置哪些层将被反射探针捕捉。
Box Projection:如果启用,反射探针将考虑探针区域内物体的方向
2.设置天空盒
Window > Rendering > Lighting Settings
3.shader和材质
Shader "Custom/ReflectionSkyboxShader"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0.0, 1.0)) = 0.5
_Metallic ("Metallic", Range(0.0, 1.0)) = 0.0
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Standard fullforwardshadows
sampler2D _MainTex;
half _Glossiness;
half _Metallic;
half _ReflectionStrength;
struct Input
{
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
// Sample albedo color from texture
fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
// Set other material properties
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Occlusion = 1.0; // Assuming full occlusion for simplicity
}
ENDCG
}
FallBack "Diffuse"
}
5.注意
如果反射效果不理想,您可以调整反射探针的位置、大小或材质属性。
反射探针可能会影响性能,尤其是在实时更新模式下,因此请根据需要调整设置。
在移动平台上,由于性能限制,可能需要降低反射探针的分辨率或使用更简单的Shader
可以使用离线烘焙
烘焙出来的贴图在Scene目录下
烘焙后,删掉探针也可以
效果如下: