Skip to content

Commit

Permalink
Added option for toon ramp dimming
Browse files Browse the repository at this point in the history
The toon ramp used to dim itself as the surface gets brighter. This is now a toggle (off by default).
  • Loading branch information
morerokk committed Feb 27, 2020
1 parent 4d95af2 commit e5924b9
Show file tree
Hide file tree
Showing 13 changed files with 226 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/Advanced/NoeNoe Toon Vertex Offset" {
_Intensity ("Intensity", Range(0, 10)) = 0.8
_Saturation ("Saturation", Range(0, 1)) = 0.65
_Exposure ("Exposure", Range(0, 1)) = 0.7
[Toggle(_TOON_RAMP_DIMMING)] _ToonRampDimming ("Toon Ramp Dimming", Float) = 0
_ExposureContrast ("Exposure Toon Ramp Contrast", Range(0, 4)) = 2
[Enum(Toon,0,PBR,1,Legacy Toon,2)] _LightingMode ("Lighting Mode", Float) = 0
_NormalMap ("Normal Map", 2D) = "bump" {}
Expand Down Expand Up @@ -124,6 +125,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/Advanced/NoeNoe Toon Vertex Offset" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

#define NOENOETOON_RAMP_MASKING

Expand Down Expand Up @@ -203,6 +205,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/Advanced/NoeNoe Toon Vertex Offset" {
#pragma shader_feature_local _OUTLINE_SCREENSPACE
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

#define NOENOETOON_OUTLINE_PASS

Expand Down Expand Up @@ -337,6 +340,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/Advanced/NoeNoe Toon Vertex Offset" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

#define NOENOETOON_RAMP_MASKING

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/Advanced/NoeNoe Toon Eye Tracking" {
_Intensity ("Intensity", Range(0, 10)) = 0.8
_Saturation ("Saturation", Range(0, 1)) = 0.65
_Exposure ("Exposure", Range(0, 1)) = 0.7
[Toggle(_TOON_RAMP_DIMMING)] _ToonRampDimming ("Toon Ramp Dimming", Float) = 0
_ExposureContrast ("Exposure Toon Ramp Contrast", Range(0, 4)) = 2
[Enum(Toon,0,PBR,1,Legacy Toon,2)] _LightingMode ("Lighting Mode", Float) = 0
_NormalMap ("Normal Map", 2D) = "bump" {}
Expand Down Expand Up @@ -95,6 +96,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/Advanced/NoeNoe Toon Eye Tracking" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
Expand Down Expand Up @@ -169,6 +171,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/Advanced/NoeNoe Toon Eye Tracking" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
Expand Down
6 changes: 5 additions & 1 deletion NoeNoe Shaders/NoeNoe Toon Shader/NoeNoe Toon Outline.shader
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Outline" {
_Intensity ("Intensity", Range(0, 10)) = 0.8
_Saturation ("Saturation", Range(0, 1)) = 0.65
_Exposure ("Exposure", Range(0, 1)) = 0.7
_ExposureContrast ("Exposure Toon Ramp Contrast", Range(0, 4)) = 2
[Toggle(_TOON_RAMP_DIMMING)] _ToonRampDimming ("Toon Ramp Dimming", Float) = 0
_ExposureContrast ("Exposure Toon Ramp Contrast", Range(0, 4)) = 3
[Enum(Toon,0,PBR,1,Legacy Toon,2)] _LightingMode ("Lighting Mode", Float) = 0
_NormalMap ("Normal Map", 2D) = "bump" {}
[Enum(None,0,Metallic,1,Specular,2)] _MetallicMode("Metallic Mode", Float) = 0
Expand Down Expand Up @@ -102,6 +103,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Outline" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
Expand Down Expand Up @@ -178,6 +180,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Outline" {
#pragma shader_feature_local _OUTLINE_SCREENSPACE
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

#define NOENOETOON_OUTLINE_PASS

Expand Down Expand Up @@ -291,6 +294,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Outline" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Ramp Masked" {
_Intensity ("Default Intensity", Range(0, 10)) = 0.8
_Saturation ("Default Saturation", Range(0, 1)) = 0.65
_Exposure ("Exposure", Range(0, 1)) = 0.7
_ExposureContrast ("Exposure Toon Ramp Contrast", Range(0, 4)) = 2
[Toggle(_TOON_RAMP_DIMMING)] _ToonRampDimming ("Toon Ramp Dimming", Float) = 0
_ExposureContrast ("Exposure Toon Ramp Contrast", Range(0, 4)) = 3
[Enum(Toon,0,PBR,1,Legacy Toon,2)] _LightingMode ("Lighting Mode", Float) = 0
_NormalMap ("Normal Map", 2D) = "bump" {}
[Toggle(_ALPHATEST_ON)] _Mode ("Cutout", Float) = 0
Expand Down Expand Up @@ -86,7 +87,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Ramp Masked" {
#include "UnityStandardBRDF.cginc"
#include "AutoLight.cginc"
#pragma multi_compile_fwdbase_fullshadows
#pragma multi_compile _ VERTEXLIGHT_ON
#pragma multi_compile _ VERTEXLIGHT_ON
#pragma only_renderers d3d9 d3d11 glcore gles
#pragma target 3.0
#pragma shader_feature_local _ALPHATEST_ON
Expand All @@ -100,6 +101,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Ramp Masked" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
Expand Down Expand Up @@ -174,6 +176,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Ramp Masked" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Transparent" {
_Intensity ("Intensity", Range(0, 10)) = 0.8
_Saturation ("Saturation", Range(0, 1)) = 0.65
_Exposure ("Exposure", Range(0, 1)) = 0.7
_ExposureContrast ("Exposure Toon Ramp Contrast", Range(0, 4)) = 2
[Toggle(_TOON_RAMP_DIMMING)] _ToonRampDimming ("Toon Ramp Dimming", Float) = 0
_ExposureContrast ("Exposure Toon Ramp Contrast", Range(0, 4)) = 3
[Enum(Toon,0,PBR,1,Legacy Toon,2)] _LightingMode ("Lighting Mode", Float) = 0
_Opacity ("Opacity", Range(0, 1)) = 1
_NormalMap ("Normal Map", 2D) = "bump" {}
Expand Down Expand Up @@ -95,6 +96,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Transparent" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
Expand Down Expand Up @@ -172,6 +174,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Transparent" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
Expand Down
5 changes: 4 additions & 1 deletion NoeNoe Shaders/NoeNoe Toon Shader/NoeNoe Toon.shader
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon" {
_Intensity ("Intensity", Range(0, 10)) = 0.8
_Saturation ("Saturation", Range(0, 1)) = 0.65
_Exposure ("Exposure", Range(0, 1)) = 0.7
_ExposureContrast ("Exposure Toon Ramp Contrast", Range(0, 4)) = 2
[Toggle(_TOON_RAMP_DIMMING)] _ToonRampDimming ("Toon Ramp Dimming", Float) = 0
_ExposureContrast ("Exposure Toon Ramp Contrast", Range(0, 4)) = 3
[Enum(Toon,0,PBR,1,Legacy Toon,2)] _LightingMode ("Lighting Mode", Float) = 0
_NormalMap ("Normal Map", 2D) = "bump" {}
[Toggle(_ALPHATEST_ON)] _Mode ("Cutout", Float) = 0
Expand Down Expand Up @@ -90,6 +91,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
Expand Down Expand Up @@ -162,6 +164,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon" {
#pragma shader_feature_local _CUBEMAP_ON
#pragma shader_feature_local _ _RIMLIGHT_ADD _RIMLIGHT_MIX
#pragma shader_feature_local _ _LIGHTING_PBR_ON _LIGHTING_LEGACY_ON
#pragma shader_feature_local _ _TOON_RAMP_DIMMING

uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
Expand Down
43 changes: 23 additions & 20 deletions NoeNoe Shaders/NoeNoe Toon Shader/NoeNoeToonEdits.cginc
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
// Add macros for shadowless light attenuation
#ifdef POINT
#define SHADOWLESS_LIGHT_ATTENUATION(a) (tex2D(_LightTexture0, dot(a._LightCoord,a._LightCoord).rr).r)
#define SHADOWLESS_LIGHT_ATTENUATION(a) (tex2D(_LightTexture0, dot(a._LightCoord,a._LightCoord).rr).r)
#endif

#ifdef SPOT
#define SHADOWLESS_LIGHT_ATTENUATION(a) ( (a._LightCoord.z > 0) * UnitySpotCookie(a._LightCoord) * UnitySpotAttenuate(a._LightCoord.xyz))
#define SHADOWLESS_LIGHT_ATTENUATION(a) ( (a._LightCoord.z > 0) * UnitySpotCookie(a._LightCoord) * UnitySpotAttenuate(a._LightCoord.xyz))
#endif

#ifdef DIRECTIONAL
#define SHADOWLESS_LIGHT_ATTENUATION(a) 1
#define SHADOWLESS_LIGHT_ATTENUATION(a) 1
#endif

#ifdef POINT_COOKIE
#define SHADOWLESS_LIGHT_ATTENUATION(a) (tex2D(_LightTextureB0, dot(a._LightCoord,a._LightCoord).rr).r * texCUBE(_LightTexture0, a._LightCoord).w)
#define SHADOWLESS_LIGHT_ATTENUATION(a) (tex2D(_LightTextureB0, dot(a._LightCoord,a._LightCoord).rr).r * texCUBE(_LightTexture0, a._LightCoord).w)
#endif

#ifdef DIRECTIONAL_COOKIE
#define SHADOWLESS_LIGHT_ATTENUATION(a)(tex2D(_LightTexture0, a._LightCoord).w)
#define SHADOWLESS_LIGHT_ATTENUATION(a) (tex2D(_LightTexture0, a._LightCoord).w)
#endif

float _WorldLightIntensity;
Expand Down Expand Up @@ -209,13 +209,13 @@ float4 frag(VertexOutput i, float facing : VFACE) : COLOR {
#if defined(_OVERRIDE_WORLD_LIGHT_DIR_ON)
float4 staticLightDir = _StaticToonLight;
#else
// If point or spot light, calculate the light direction from its position
// If the light is directional or the current pass is forwardbase, grab _WorldSpaceLightPos0 as light direction
#if defined(UNITY_PASS_FORWARDADD) && !defined(DIRECTIONAL)
float4 staticLightDir = float4(normalize(_WorldSpaceLightPos0.xyz - i.posWorld.xyz), 0) * _WorldLightIntensity;
#else
float4 staticLightDir = lightDirection(_StaticToonLight);
#endif
// If point or spot light, calculate the light direction from its position
// If the light is directional or the current pass is forwardbase, grab _WorldSpaceLightPos0 as light direction
#if defined(UNITY_PASS_FORWARDADD) && !defined(DIRECTIONAL)
float4 staticLightDir = float4(normalize(_WorldSpaceLightPos0.xyz - i.posWorld.xyz), 0) * _WorldLightIntensity;
#else
float4 staticLightDir = lightDirection(_StaticToonLight);
#endif
#endif

i.normalDir = normalize(i.normalDir);
Expand Down Expand Up @@ -514,12 +514,17 @@ float4 frag(VertexOutput i, float facing : VFACE) : COLOR {
#if defined(_LIGHTING_LEGACY_ON)
float3 finalColor = ((IntensityVar*FlatLighting*Diffuse) > 0.5 ? (1.0-(1.0-2.0*((IntensityVar*FlatLighting*Diffuse)-0.5))*(1.0-lerp(float3(node_424,node_424,node_424),StaticToonLighting,ToonContrast_var))) : (2.0*(IntensityVar*FlatLighting*Diffuse)*lerp(float3(node_424,node_424,node_424),StaticToonLighting,ToonContrast_var)));
#else
// Dim the toon ramp effect as the area gets brighter
float3 toonContrastModifier = (IntensityVar*saturate(FlatLighting)*Diffuse);
toonContrastModifier = (1 - toonContrastModifier) * _ExposureContrast;
toonContrastModifier = smoothstep(0.5, 1, toonContrastModifier);

toonContrastModifier *= ToonContrast_var;

#if defined(_TOON_RAMP_DIMMING)
// Dim the toon ramp effect as the area gets brighter
float3 toonContrastModifier = (IntensityVar*saturate(FlatLighting)*Diffuse);
toonContrastModifier = (1 - toonContrastModifier) * _ExposureContrast;
toonContrastModifier = smoothstep(0.5, 1, toonContrastModifier);

toonContrastModifier *= ToonContrast_var;
#else
float3 toonContrastModifier = float3(ToonContrast_var, ToonContrast_var, ToonContrast_var);
#endif

float3 finalColor = 2 * (IntensityVar*FlatLighting*Diffuse);
finalColor *= lerp(float3(0.5, 0.5, 0.5), StaticToonLighting, toonContrastModifier);
Expand All @@ -532,8 +537,6 @@ float4 frag(VertexOutput i, float facing : VFACE) : COLOR {
#if defined(_METALLICGLOSSMAP) || defined(_SPECGLOSSMAP)
// Apply unlit reflections
#ifdef UNITY_PASS_FORWARDBASE
// TODO: If reflecting the skybox rather than a probe, dim the reflection.
// Is that even possible? If so, tell me how ;)
finalColor = lerp(finalColor, reflectionColor, metallic);
#endif

Expand Down
14 changes: 13 additions & 1 deletion NoeNoe Shaders/Scripts/Editor/NoeNoeToonEditorGUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public class NoeNoeToonEditorGUI : ShaderGUI
private MaterialProperty intensity = null;
private MaterialProperty saturation = null;
private MaterialProperty exposure = null;
private MaterialProperty toonRampDimmingEnabled = null;
private MaterialProperty exposureToonRampContrast = null;
private MaterialProperty lightMode = null;

Expand Down Expand Up @@ -274,7 +275,11 @@ private void DrawToonLighting()
if(lightMode.floatValue != 2)
{
editor.ShaderProperty(exposure, new GUIContent("Exposure", "Controls the contribution of directional and realtime lights."));
editor.ShaderProperty(exposureToonRampContrast, new GUIContent("Exposure Toon Ramp Contrast", "As this value increases, the intensity of toon ramps on lighter surfaces increases."));
editor.ShaderProperty(toonRampDimmingEnabled, new GUIContent("Toon Ramp Dimming", "If enabled, the toon ramp's intensity will decrease as the surface gets brighter."));
if (toonRampDimmingEnabled.floatValue == 1)
{
editor.ShaderProperty(exposureToonRampContrast, new GUIContent("Exposure Toon Ramp Contrast", "As this value increases, the intensity of toon ramps on lighter surfaces increases."));
}
}

if(HasRampMasking())
Expand Down Expand Up @@ -642,6 +647,7 @@ private void FindProperties(MaterialProperty[] props)
intensity = FindProperty("_Intensity", props);
saturation = FindProperty("_Saturation", props);
exposure = FindProperty("_Exposure", props);
toonRampDimmingEnabled = FindProperty("_ToonRampDimming", props);
exposureToonRampContrast = FindProperty("_ExposureContrast", props);
lightMode = FindProperty("_LightingMode", props);

Expand Down Expand Up @@ -877,6 +883,12 @@ private void SetupKeywords()
{
material.EnableKeyword("_LIGHTING_LEGACY_ON");
}

// Toon ramp dimming
if(lightMode.floatValue != 2 && toonRampDimmingEnabled.floatValue == 1)
{
material.EnableKeyword("_TOON_RAMP_DIMMING");
}
}

/// <summary>
Expand Down
16 changes: 10 additions & 6 deletions NoeNoe Shaders/Textures/noenoe_toon_boolean.png.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added NoeNoe Shaders/Textures/noenoe_toon_sharp_ramp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit e5924b9

Please sign in to comment.