/// <summary> /// Creates the rain material. /// </summary> /// <param name="shaderType"></param> /// <param name="renderQueue"></param> /// <returns></returns> public static Material CreateRainMaterial(RainDropShaderType shaderType, int renderQueue) { var shader = Shader.Find(GetShaderName(shaderType)); var mat = new Material(shader); mat.renderQueue = renderQueue; return(mat); }
/// <summary> /// Apply the values to a material of rain object /// </summary> /// <param name="material"></param> /// <param name="shaderType"></param> /// <param name="normalMap"></param> /// <param name="overlayTexture"></param> /// <param name="distortionValue"></param> /// <param name="overlayColor"></param> /// <param name="reliefValue"></param> /// <param name="blur"></param> /// <param name="darkness"></param> public static void ApplyRainMaterialValue( Material material, RainDropShaderType shaderType, Texture normalMap, Texture overlayTexture = null, float distortionValue = 0f, Color?overlayColor = null, float reliefValue = 0f, float blur = 0f, float darkness = 0f ) { // Apply shader values switch (shaderType) { case RainDropShaderType.Expensive: material.SetColor("_Color", overlayColor ?? Color.white); material.SetFloat("_Strength", distortionValue); //material.SetFloat("_HeightOffset", 0.5f); material.SetFloat("_Relief", reliefValue); if (blur != 0f) { material.EnableKeyword("BLUR"); material.SetFloat("_Blur", blur); } else { material.DisableKeyword("BLUR"); material.SetFloat("_Blur", blur); } material.SetFloat("_Darkness", darkness); material.SetTexture("_Distortion", normalMap); material.SetTexture("_ReliefTex", overlayTexture); break; case RainDropShaderType.Cheap: material.SetFloat("_Strength", distortionValue); material.SetTexture("_Distortion", normalMap); break; case RainDropShaderType.NoDistortion: material.SetTexture("_MainTex", overlayTexture); material.SetTexture("_Distortion", normalMap); material.SetColor("_Color", overlayColor ?? Color.white); material.SetFloat("_Darkness", darkness); material.SetFloat("_Relief", reliefValue); break; default: break; } }
//public static string SHADER_DEFFERED = "RainDrop/Internal/RainDistortion (Deffered)"; /// <summary> /// Get the shader name from RainDropShaderType /// </summary> /// <param name="shaderType"></param> /// <returns></returns> public static string GetShaderName(RainDropShaderType shaderType) { switch (shaderType) { case RainDropShaderType.Expensive: return(SHADER_FORWARD); case RainDropShaderType.Cheap: return(SHADER_CHEAP); case RainDropShaderType.NoDistortion: return(SHADER_NO_DISTORTION); default: return(""); } }