68 lines
4.1 KiB
C#
68 lines
4.1 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
using UnityEngine.Rendering.Universal;
|
|
using UnityEngine.Serialization;
|
|
|
|
namespace NiloToon.NiloToonURP
|
|
{
|
|
[System.Serializable, VolumeComponentMenu("NiloToon/Hidden/Screen Space Outline V2 (NiloToon)")]
|
|
public class NiloToonScreenSpaceOutlineV2ControlVolume : VolumeComponent, IPostProcessComponent
|
|
{
|
|
[Header("WIP code. It will not trigger rendering, don't use this volume now.")]
|
|
[Header("--------------------------")]
|
|
[Header("Require enable ScreenSpace outline in NiloToonAllInOne renderer feature in order for this volume to become effective.")]
|
|
[Header("*In Camera, turn on Temporal Anti-aliasing(TAA) is critical for screen space outline to look stable when camera moves.")]
|
|
[Header("--------------------------")]
|
|
[Header("Intensity")]
|
|
public ClampedFloatParameter intensity = new ClampedFloatParameter(0, 0, 1);
|
|
public ClampedFloatParameter intensityForCharacter = new ClampedFloatParameter(1, 0, 1);
|
|
public ClampedFloatParameter intensityForEnvironment = new ClampedFloatParameter(1, 0, 1);
|
|
|
|
[Header("Width")]
|
|
public ClampedFloatParameter widthMultiplier = new ClampedFloatParameter(1, 0, 10f);
|
|
public ClampedFloatParameter widthMultiplierForCharacter = new ClampedFloatParameter(1, 0, 10f);
|
|
public ClampedFloatParameter widthMultiplierForEnvironment = new ClampedFloatParameter(1, 0, 10f);
|
|
public ClampedFloatParameter extraWidthMultiplierForXR = new ClampedFloatParameter(0.2f, 0, 10f);
|
|
|
|
[Header("Tint Color")]
|
|
public ColorParameter outlineTintColor = new ColorParameter(Color.white, false, false, true);
|
|
public ColorParameter outlineTintColorForChar = new ColorParameter(Color.white, false, false, true);
|
|
public ColorParameter outlineTintColorForEnvi = new ColorParameter(Color.white, false, false, true);
|
|
|
|
[Header("Edge: Geometry Edge")]
|
|
public BoolParameter drawGeometryEdgeOutline = new BoolParameter(true);
|
|
public BoolParameter drawGeometryEdgeOutlineForChar = new BoolParameter(true);
|
|
public BoolParameter drawGeometryEdgeOutlineForEnvi = new BoolParameter(true);
|
|
public ClampedFloatParameter geometryEdgeThreshold = new ClampedFloatParameter(1, 0, 100f);
|
|
public ClampedFloatParameter geometryEdgeThresholdForCharacter = new ClampedFloatParameter(1, 0f, 100f);
|
|
public ClampedFloatParameter geometryEdgeThresholdForEnvironment = new ClampedFloatParameter(1, 0f, 100f);
|
|
|
|
[Header("Edge: Normal Angle")]
|
|
public BoolParameter drawNormalAngleOutline = new BoolParameter(true);
|
|
public BoolParameter drawNormalAngleOutlineForChar = new BoolParameter(true);
|
|
public BoolParameter drawNormalAngleOutlineForEnvi = new BoolParameter(true);
|
|
public ClampedFloatParameter normalAngleMin = new ClampedFloatParameter(40, 0, 180);
|
|
public ClampedFloatParameter normalAngleMinForCharacter = new ClampedFloatParameter(40, 0, 180f);
|
|
public ClampedFloatParameter normalAngleMinForEnvironment = new ClampedFloatParameter(40, 0, 180f);
|
|
public ClampedFloatParameter normalAngleMax = new ClampedFloatParameter(180, 0, 180);
|
|
public ClampedFloatParameter normalAngleMaxForCharacter = new ClampedFloatParameter(180, 0, 180f);
|
|
public ClampedFloatParameter normalAngleMaxForEnvironment = new ClampedFloatParameter(180, 0, 180f);
|
|
|
|
[Header("Edge: Material ID Boundary (Character only)")]
|
|
public BoolParameter drawMaterialBoundaryOutline = new BoolParameter(true);
|
|
|
|
[Header("Edge: Custom ID Boundary (Character only)")]
|
|
public BoolParameter drawCustomIDBoundaryOutline = new BoolParameter(true);
|
|
|
|
[Header("Edge: Wireframe")]
|
|
public BoolParameter drawWireframeOutline = new BoolParameter(false);
|
|
|
|
public bool IsActive() =>
|
|
(intensity.value > 0.0f && widthMultiplier.value > 0.0f) &&
|
|
(drawGeometryEdgeOutline.value || drawNormalAngleOutline.value || drawMaterialBoundaryOutline.value || drawCustomIDBoundaryOutline.value || drawWireframeOutline.value);
|
|
|
|
public bool IsTileCompatible() => false;
|
|
}
|
|
}
|
|
|