Hi!
Please tell me why, the water starts to flicker when entering VR mode. A shader is used for water
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"
}