3DTD/Assets/Scripts/Extensions/RendererExtensions.cs

33 lines
1.5 KiB
C#

using UnityEngine;
namespace UnityUtils {
public static class RendererExtensions {
/// <summary>
/// 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.
/// </summary>
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;
}
}
}
/// <summary>
/// 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.
/// </summary>
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;
}
}
}
}
}