public static GlassNormalTechnique NormalTechFromDepth(GlassNormalTechnique currentNormalTechnique, GlassDepthTechnique inputDepthTechnique) { GlassNormalTechnique outputNormalTechnique = currentNormalTechnique; switch (inputDepthTechnique) { case GlassDepthTechnique.DEPTH_CAM_CUSTOM: switch (currentNormalTechnique) { case GlassNormalTechnique.NORMAL_CAM_UNITY: outputNormalTechnique = GlassNormalTechnique.NORMAL_CAM_CUSTOM; break; default: break; } break; case GlassDepthTechnique.DEPTH_CAM_UNITY: switch (currentNormalTechnique) { case GlassNormalTechnique.NORMAL_CAM_CUSTOM: outputNormalTechnique = GlassNormalTechnique.NORMAL_CAM_UNITY; break; default: break; } break; } return(outputNormalTechnique); }
public void CopyDepthNormalTech(GlassManager manager) { depthTechnique = manager.depthTechnique; normalTechnique = manager.normalTechnique; frontDepthTechnique = manager.frontDepthTechnique; enable54Workaround = manager.enable54Workaround; }
public static GlassFrontDepthTechnique FrontDepthTechFromNormal(GlassFrontDepthTechnique currentFrontDepthTechnique, GlassNormalTechnique inputNormalTechnique, bool _enable54Workaround = false) { // TODO: replace this workaround for bug in 5.4 if better fix found #if UNITY_5_4_OR_NEWER if (_enable54Workaround) { return(GlassFrontDepthTechnique.DEPTH_FRONT_SHADER_OFF); } #endif return(currentFrontDepthTechnique); }
public static void DepthNormalTechFromFrontDepth(GlassFrontDepthTechnique frontTechIn, ref GlassDepthTechnique depthTechOut, ref GlassNormalTechnique normalTechOut, bool _enable54Workaround = false) { // TODO: replace this workaround for bug in 5.4 if better fix found #if UNITY_5_4_OR_NEWER if (_enable54Workaround) { // No need to change anything as long as front depth is off } #endif }
public void SetNormalTechnique(GlassNormalTechnique technique, bool forceUpdate = false) { if (!forceUpdate) { if (technique == normalTechnique) { return; } } normalTechnique = technique; glassManager.normalTechnique = normalTechnique; // TODO: replace this workaround for bug in 5.4 if better fix found #if UNITY_5_4_OR_NEWER if (glassManager.enable54Workaround) { SetFrontDepthTechnique(GlassFrontDepthTechnique.DEPTH_FRONT_SHADER_OFF); //frontDepthTechnique = GlassFrontDepthTechnique.DEPTH_FRONT_SHADER_OFF; } #endif Shader.EnableKeyword(NormalKeyword()); switch (normalTechnique) { case GlassNormalTechnique.NORMAL_CAM_CUSTOM: switch (depthTechnique) { case GlassDepthTechnique.DEPTH_CAM_UNITY: SetDepthTechnique(GlassDepthTechnique.DEPTH_CAM_CUSTOM); break; default: break; } break; case GlassNormalTechnique.NORMAL_CAM_UNITY: switch (depthTechnique) { case GlassDepthTechnique.DEPTH_CAM_CUSTOM: SetDepthTechnique(GlassDepthTechnique.DEPTH_CAM_UNITY); break; default: break; } break; case GlassNormalTechnique.NORMAL_WORLD_CAM_SHADER: break; } switch (normalTechnique) { case GlassNormalTechnique.NORMAL_CAM_CUSTOM: Shader.DisableKeyword("NORMAL_CAM_UNITY"); Shader.DisableKeyword("NORMAL_WORLD_CAM_SHADER"); Shader.EnableKeyword("NORMAL_CAM_CUSTOM"); break; case GlassNormalTechnique.NORMAL_CAM_UNITY: Shader.DisableKeyword("NORMAL_CAM_CUSTOM"); Shader.DisableKeyword("NORMAL_WORLD_CAM_SHADER"); Shader.EnableKeyword("NORMAL_CAM_UNITY"); break; case GlassNormalTechnique.NORMAL_WORLD_CAM_SHADER: Shader.DisableKeyword("NORMAL_CAM_CUSTOM"); Shader.DisableKeyword("NORMAL_CAM_UNITY"); Shader.EnableKeyword("NORMAL_WORLD_CAM_SHADER"); break; } }
public void UpdateDepthTechnique() { normalTechnique = GlassDepthCamera.NormalTechFromDepth(normalTechnique, depthTechnique); frontDepthTechnique = GlassDepthCamera.FrontDepthTechFromDepth(frontDepthTechnique, depthTechnique, enable54Workaround); }