You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
2.0 KiB
46 lines
2.0 KiB
namespace UnityEngine.PostProcessing |
|
{ |
|
public sealed class VignetteComponent : PostProcessingComponentRenderTexture<VignetteModel> |
|
{ |
|
static class Uniforms |
|
{ |
|
internal static readonly int _Vignette_Color = Shader.PropertyToID("_Vignette_Color"); |
|
internal static readonly int _Vignette_Center = Shader.PropertyToID("_Vignette_Center"); |
|
internal static readonly int _Vignette_Settings = Shader.PropertyToID("_Vignette_Settings"); |
|
internal static readonly int _Vignette_Mask = Shader.PropertyToID("_Vignette_Mask"); |
|
internal static readonly int _Vignette_Opacity = Shader.PropertyToID("_Vignette_Opacity"); |
|
} |
|
|
|
public override bool active |
|
{ |
|
get |
|
{ |
|
return model.enabled |
|
&& !context.interrupted; |
|
} |
|
} |
|
|
|
public override void Prepare(Material uberMaterial) |
|
{ |
|
var settings = model.settings; |
|
uberMaterial.SetColor(Uniforms._Vignette_Color, settings.color); |
|
|
|
if (settings.mode == VignetteModel.Mode.Classic) |
|
{ |
|
uberMaterial.SetVector(Uniforms._Vignette_Center, settings.center); |
|
uberMaterial.EnableKeyword("VIGNETTE_CLASSIC"); |
|
float roundness = (1f - settings.roundness) * 6f + settings.roundness; |
|
uberMaterial.SetVector(Uniforms._Vignette_Settings, new Vector4(settings.intensity * 3f, settings.smoothness * 5f, roundness, settings.rounded ? 1f : 0f)); |
|
} |
|
else if (settings.mode == VignetteModel.Mode.Masked) |
|
{ |
|
if (settings.mask != null && settings.opacity > 0f) |
|
{ |
|
uberMaterial.EnableKeyword("VIGNETTE_MASKED"); |
|
uberMaterial.SetTexture(Uniforms._Vignette_Mask, settings.mask); |
|
uberMaterial.SetFloat(Uniforms._Vignette_Opacity, settings.opacity); |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|