Hi! Please tell me why, the water starts to flicker when entering VR mode. A shader is used for water Code (CSharp): Shader "WaterVR/Surface Light Clear" { Properties { [Header(Color Settings)] _Color("Color", Color) = (1,1,1,0) _Tint("Tint", Color) = (0,0,0,0) [Header(Normal Settings)]_Normal("Normal", 2D) = "bump" {} _Normal2nd("Normal 2nd", 2D) = "bump" {} _Smoothness("Smoothness", Range(0 , 1)) = 0.8 _NormalPower("Normal Power", Range(0 , 1)) = 1 _NormalPower2nd("Normal Power 2nd", Range(0 , 1)) = 0.5 [Header(Animation Settings)]_RipplesSpeed("Ripples Speed", Float) = 1 _RipplesSpeed2nd("Ripples Speed 2nd", Float) = 1 _SpeedX("Speed X", Float) = 0 _SpeedY("Speed Y", Float) = 0 [Toggle][Header(Visual Fixes)]_ZWrite1("ZWrite", Float) = 1 [HideInInspector] _texcoord("", 2D) = "white" {} [HideInInspector] __dirty("", Int) = 1 [Header(Forward Rendering Options)] [ToggleOff] _SpecularHighlights("Specular Highlights", Float) = 1.0 [ToggleOff] _GlossyReflections("Reflections", Float) = 1.0 } SubShader { Tags{ "RenderType" = "Opaque" "Queue" = "Transparent-1" "IgnoreProjector" = "True" "IsEmissive" = "true" } Cull Back ZWrite[_ZWrite1] GrabPass{ "_GrabWater" } CGPROGRAM #include "UnityStandardUtils.cginc" #include "UnityShaderVariables.cginc" #pragma target 5.0 #pragma shader_feature _SPECULARHIGHLIGHTS_OFF #pragma shader_feature _GLOSSYREFLECTIONS_OFF #if defined(UNITY_STEREO_INSTANCING_ENABLED) || defined(UNITY_STEREO_MULTIVIEW_ENABLED) #define ASE_DECLARE_SCREENSPACE_TEXTURE(tex) UNITY_DECLARE_SCREENSPACE_TEXTURE(tex); #else #define ASE_DECLARE_SCREENSPACE_TEXTURE(tex) UNITY_DECLARE_SCREENSPACE_TEXTURE(tex) #endif #pragma surface surf Standard keepalpha noshadow exclude_path:deferred struct Input { float2 uv_texcoord; float4 screenPos; }; uniform sampler2D _Normal; uniform float _NormalPower; uniform float _RipplesSpeed; uniform float4 _Normal_ST; uniform sampler2D _Sampler0409; uniform float _SpeedX; uniform float _SpeedY; uniform sampler2D _Normal2nd; uniform float _NormalPower2nd; uniform float _RipplesSpeed2nd; uniform float4 _Normal2nd_ST; uniform sampler2D _Sampler0410; uniform float4 _Tint; ASE_DECLARE_SCREENSPACE_TEXTURE(_GrabWater) uniform float4 _Color; uniform float _Smoothness; uniform float _ZWrite1; inline float4 ASE_ComputeGrabScreenPos(float4 pos) { #if UNITY_UV_STARTS_AT_TOP float scale = -1.0; #else float scale = 1.0; #endif float4 o = pos; o.y = pos.w * 0.5f; o.y = (pos.y - o.y) * _ProjectionParams.x * scale + o.y; return o; } void surf(Input i , inout SurfaceOutputStandard o) { float mulTime187 = _Time.y * _RipplesSpeed; float2 uv0_Normal = i.uv_texcoord * _Normal_ST.xy + _Normal_ST.zw; float2 panner22 = (mulTime187 * float2(-0.04,0) + uv0_Normal); float mulTime395 = _Time.y * (_SpeedX / (_Normal_ST.xy).x); float mulTime403 = _Time.y * (_SpeedY / (_Normal_ST.xy).y); float2 appendResult402 = (float2(mulTime395 , mulTime403)); float2 temp_output_422_0 = (_Normal_ST.xy * appendResult402); float2 panner19 = (mulTime187 * float2(0.03,0.03) + uv0_Normal); float mulTime323 = _Time.y * _RipplesSpeed2nd; float2 uv0_Normal2nd = i.uv_texcoord * _Normal2nd_ST.xy + _Normal2nd_ST.zw; float2 temp_output_397_0 = (uv0_Normal2nd + float2(0,0)); float2 panner320 = (mulTime323 * float2(0.03,0.03) + temp_output_397_0); float2 temp_output_423_0 = (appendResult402 * _Normal2nd_ST.xy); float2 panner321 = (mulTime323 * float2(-0.04,0) + temp_output_397_0); float3 NormalWater315 = BlendNormals(BlendNormals(UnpackScaleNormal(tex2D(_Normal, (panner22 + temp_output_422_0)), _NormalPower) , UnpackScaleNormal(tex2D(_Normal, (panner19 + temp_output_422_0)), _NormalPower)) , BlendNormals(UnpackScaleNormal(tex2D(_Normal2nd, (panner320 + temp_output_423_0)), _NormalPower2nd) , UnpackScaleNormal(tex2D(_Normal2nd, (panner321 + temp_output_423_0)), _NormalPower2nd))); o.Normal = NormalWater315; o.Albedo = _Tint.rgb; float4 ase_screenPos = float4(i.screenPos.xyz , i.screenPos.w + 0.00000000001); float4 ase_grabScreenPos = ASE_ComputeGrabScreenPos(ase_screenPos); float4 screenColor223 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_GrabWater,ase_grabScreenPos.xy / ase_grabScreenPos.w); o.Emission = (screenColor223 * _Color).rgb; o.Smoothness = (_Smoothness + (_ZWrite1 * 0.0)); o.Alpha = 1; } ENDCG } CustomEditor "ASEMaterialInspector" }