using UnityEngine;
namespace UnityUtils {
public static class RendererExtensions {
///
/// Enables ZWrite for materials in this Renderer that have a '_Color' property. This will allow the materials
/// to write to the Z buffer, which could be used to affect how subsequent rendering is handled,
/// for instance, ensuring correct layering of transparent objects.
///
public static void EnableZWrite(this Renderer renderer) {
foreach (Material material in renderer.materials) {
if (material.HasProperty("_Color")) {
material.SetInt("_ZWrite", 1);
material.renderQueue = (int) UnityEngine.Rendering.RenderQueue.Transparent;
}
}
}
///
/// Disables ZWrite for materials in this Renderer that have a '_Color' property. This would stop
/// the materials from writing to the Z buffer, which may be desirable in some cases to prevent subsequent
/// rendering from being occluded, like in rendering of semi-transparent or layered objects.
///
public static void DisableZWrite(this Renderer renderer) {
foreach (Material material in renderer.materials) {
if (material.HasProperty("_Color")) {
material.SetInt("_ZWrite", 0);
material.renderQueue = (int) UnityEngine.Rendering.RenderQueue.Transparent + 100;
}
}
}
}
}