Skip to content

Commit

Permalink
Added experimental Metallic support.
Browse files Browse the repository at this point in the history
Cleaned up a lot of code, added Metallic similar to Standard. Cannot blend between two probes yet.
  • Loading branch information
morerokk committed Apr 1, 2019
1 parent 7008b9a commit ba25f5a
Show file tree
Hide file tree
Showing 12 changed files with 279 additions and 724 deletions.
125 changes: 9 additions & 116 deletions NoeNoe Shaders/NoeNoe Toon Shader/NoeNoe Toon Cutout Outline.shader
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout Outline" {
_Intensity ("Intensity", Range(0, 10)) = 0.8
_Saturation ("Saturation", Range(0, 1)) = 0.65
_NormalMap ("Normal Map", 2D) = "bump" {}
[NoScaleOffset]_MetallicGlossMap("Metallic Map", 2D) = "white" {}
_Metallic("Metallic", Range( 0 , 1)) = 0
_Glossiness("Smoothness", Range( 0 , 1)) = 0
_OutlineWidth ("Outline Width", Float ) = 0
_OutlineColor ("Outline Tint", Color) = (0,0,0,1)
_OutlineTex ("Outline Texture", 2D) = "white" {}
Expand Down Expand Up @@ -59,10 +62,6 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout Outline" {
uniform float _Emission;
uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
uniform float _Intensity;
float3 Function_node_3693( float3 normal ){
return ShadeSH9(half4(normal, 1.0));

}

float _Cutoff;

Expand Down Expand Up @@ -106,7 +105,7 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout Outline" {
}

CGPROGRAM
#pragma vertex vert
#pragma vertex vertOutline
#pragma fragment frag
#define _GLOSSYENV 1
#include "UnityCG.cginc"
Expand All @@ -119,16 +118,14 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout Outline" {
//#pragma multi_compile_fwdbase_fullshadows
#pragma only_renderers d3d9 d3d11 glcore gles
#pragma target 3.0

#define NOENOETOON_OUTLINE_PASS

uniform sampler2D _OutlineTex; uniform float4 _OutlineTex_ST;
uniform float _OutlineWidth;
uniform fixed _ScreenSpaceOutline;
uniform float4 _OutlineColor;

float3 Function_node_3693( float3 normal ){
return ShadeSH9(half4(normal, 1.0));

}

float3 VRViewPosition(){
#if defined(USING_STEREO_MATRICES)
float3 leftEye = unity_StereoWorldSpaceCameraPos[0];
Expand Down Expand Up @@ -157,38 +154,9 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout Outline" {
uniform fixed _BillboardStaticLight;
uniform float _ToonContrast;

float _WorldLightIntensity;

float4 lightDirection(float4 fallback, float alwaysUseFallback)
{
// Try to get world light direction
float4 worldLightDir = _WorldSpaceLightPos0 * _WorldLightIntensity;
if(all(worldLightDir == float4(0,0,0,0)))
{
worldLightDir = fallback;
}
return lerp(worldLightDir, fallback, alwaysUseFallback);
}

struct VertexInput {
float4 vertex : POSITION;
float3 normal : NORMAL;
float4 tangent : TANGENT;
float2 texcoord0 : TEXCOORD0;
};

struct VertexOutput {
float4 pos : SV_POSITION;
float2 uv0 : TEXCOORD0;
float4 posWorld : TEXCOORD1;
float3 normalDir : TEXCOORD2;
float3 tangentDir : TEXCOORD3;
float3 bitangentDir : TEXCOORD4;
float4 lightDir : TEXCOORD7;
LIGHTING_COORDS(5,6)
};
#include "NoeNoeToonEdits.cginc"

VertexOutput vert (VertexInput v) {
VertexOutput vertOutline (VertexInput v) {
VertexOutput o = (VertexOutput)0;
o.uv0 = v.texcoord0;
o.normalDir = UnityObjectToWorldNormal(v.normal);
Expand All @@ -210,77 +178,6 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout Outline" {
TRANSFER_VERTEX_TO_FRAGMENT(o)
return o;
}

float4 frag(VertexOutput i, float facing : VFACE) : COLOR {
float isFrontFace = ( facing >= 0 ? 1 : 0 );
float faceSign = ( facing >= 0 ? 1 : -1 );

float4 staticLightDir = i.lightDir;

i.normalDir = normalize(i.normalDir);
i.normalDir *= faceSign;

float3x3 tangentTransform = float3x3( i.tangentDir, i.bitangentDir, i.normalDir);
float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
float3 _NormalMap_var = UnpackNormal(tex2D(_NormalMap,TRANSFORM_TEX(i.uv0, _NormalMap)));
float3 normalLocal = _NormalMap_var.rgb;
float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
float4 _MainTex_var = tex2D(_OutlineTex,TRANSFORM_TEX(i.uv0, _OutlineTex));
float SurfaceAlpha = _MainTex_var.a;

// Only clip if outline cutout is on
clip(SurfaceAlpha - _Cutoff + (1 - _OutlineCutout));

float3 lightColor = _LightColor0.rgb;
////// Lighting:
float attenuation = LIGHT_ATTENUATION(i) / SHADOW_ATTENUATION(i);

float3 FlatLighting = saturate((Function_node_3693( float3(0,1,0) )+(_LightColor0.rgb*attenuation)));
float3 MappedTexture = (_MainTex_var.rgb*_OutlineColor.rgb);

float SaturationVar = _Saturation;
float IntensityVar = _Intensity;

float3 Diffuse = lerp(lerp(MappedTexture,dot(MappedTexture,float3(0.3,0.59,0.11)),(-0.5)),dot(lerp(MappedTexture,dot(MappedTexture,float3(0.3,0.59,0.11)),(-0.5)),float3(0.3,0.59,0.11)),(1.0 - SaturationVar));
float node_424 = 0.5;
float node_7394_if_leA = step(_BillboardStaticLight,1.0);
float node_7394_if_leB = step(1.0,_BillboardStaticLight);
float3 VRPosition = VRViewPosition();
float3 node_3406 = (i.posWorld.rgb-VRPosition);
float3 node_1153 = (-1*(node_3406/length(node_3406))).rgb;
float2 node_7017 = normalize(float2(node_1153.r,node_1153.b));
float2 node_7930 = node_7017.rg;
float2 node_8628 = (float2((-1*node_7930.g),node_7930.r)*(-1*staticLightDir.r)).rg;
float2 node_3851 = (node_7017*staticLightDir.b).rg;
float3 StaticLightDirection = lerp((node_7394_if_leA*staticLightDir.rgb)+(node_7394_if_leB*staticLightDir.rgb),(float3(node_8628.r,staticLightDir.g,node_8628.g)+float3(node_3851.r,staticLightDir.g,node_3851.g)),node_7394_if_leA*node_7394_if_leB);
float node_1617 = 0.5*dot((normalDirection*faceSign),StaticLightDirection)+0.5;
float2 node_8091 = float2(node_1617,node_1617);

float4 node_9498 = tex2D(_Ramp,TRANSFORM_TEX(node_8091, _Ramp));
float ToonContrast_var = _ToonContrast;

float3 StaticToonLighting = node_9498.rgb;
float3 finalColor = saturate(((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))) );

#ifdef UNITY_PASS_FORWARDBASE
finalColor = emissive + finalColor;
#endif

float finalAlpha = 1;

// Transparent stuff, use alpha and multiply by opacity
// Forward additive pass multiplies the colors instead
#ifdef NOENOETOON_TRANSPARENT
#ifdef UNITY_PASS_FORWARDBASE
finalAlpha = _MainTex_var.a * _Opacity;
#else
finalAlpha = 0;
finalColor *= (SurfaceAlpha * _Opacity);
#endif
#endif

return fixed4(finalColor,finalAlpha);
}

ENDCG
}
Expand Down Expand Up @@ -314,10 +211,6 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout Outline" {
uniform float _Emission;
uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
uniform float _Intensity;
float3 Function_node_3693( float3 normal ){
return ShadeSH9(half4(normal, 1.0));

}

float _Cutoff;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout Ramp Masked" {
_NormalMap ("Normal Map", 2D) = "bump" {}
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
[Enum(Both,0,Front,2,Back,1)] _Cull("Sidedness", Float) = 2
[NoScaleOffset]_MetallicGlossMap("Metallic Map", 2D) = "white" {}
_Metallic("Metallic", Range( 0 , 1)) = 0
_Glossiness("Smoothness", Range( 0 , 1)) = 0
[NoScaleOffset] _RampMaskTex ("Ramp Mask", 2D) = "black"
[NoScaleOffset] _RampR ("Ramp (R)", 2D) = "white" {}
_ToonContrastR ("Toon Contrast (R)", Range(0, 1)) = 0.25
Expand Down Expand Up @@ -62,29 +65,9 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout Ramp Masked" {
uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
uniform float _Intensity;

float3 Function_node_3693( float3 normal ){
return ShadeSH9(half4(normal, 1.0));

}

float _Cutoff;

float _OverrideWorldLight;

uniform sampler2D _RampMaskTex;
uniform sampler2D _RampR;
uniform float _ToonContrastR;
uniform sampler2D _RampG;
uniform float _ToonContrastG;
uniform sampler2D _RampB;
uniform float _ToonContrastB;

uniform float _IntensityR;
uniform float _SaturationR;
uniform float _IntensityG;
uniform float _SaturationG;
uniform float _IntensityB;
uniform float _SaturationB;

uniform float4 _StaticToonLight;
uniform sampler2D _Ramp; uniform float4 _Ramp_ST;
Expand Down Expand Up @@ -140,29 +123,10 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout Ramp Masked" {
uniform float _Emission;
uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
uniform float _Intensity;
float3 Function_node_3693( float3 normal ){
return ShadeSH9(half4(normal, 1.0));

}

float _Cutoff;

float _OverrideWorldLight;

uniform sampler2D _RampMaskTex;
uniform sampler2D _RampR;
uniform float _ToonContrastR;
uniform sampler2D _RampG;
uniform float _ToonContrastG;
uniform sampler2D _RampB;
uniform float _ToonContrastB;

uniform float _IntensityR;
uniform float _SaturationR;
uniform float _IntensityG;
uniform float _SaturationG;
uniform float _IntensityB;
uniform float _SaturationB;

uniform float4 _StaticToonLight;
uniform sampler2D _Ramp; uniform float4 _Ramp_ST;
Expand Down
11 changes: 3 additions & 8 deletions NoeNoe Shaders/NoeNoe Toon Shader/NoeNoe Toon Cutout.shader
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout" {
_NormalMap ("Normal Map", 2D) = "bump" {}
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
[Enum(Both,0,Front,2,Back,1)] _Cull("Sidedness", Float) = 0
[NoScaleOffset]_MetallicGlossMap("Metallic Map", 2D) = "white" {}
_Metallic("Metallic", Range( 0 , 1)) = 0
_Glossiness("Smoothness", Range( 0 , 1)) = 0
}
SubShader {
Tags {
Expand Down Expand Up @@ -48,10 +51,6 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout" {
uniform float _Emission;
uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
uniform float _Intensity;
float3 Function_node_3693( float3 normal ){
return ShadeSH9(half4(normal, 1.0));

}

float _Cutoff;

Expand Down Expand Up @@ -109,10 +108,6 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Cutout" {
uniform float _Emission;
uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
uniform float _Intensity;
float3 Function_node_3693( float3 normal ){
return ShadeSH9(half4(normal, 1.0));

}

float _Cutoff;

Expand Down
11 changes: 3 additions & 8 deletions NoeNoe Shaders/NoeNoe Toon Shader/NoeNoe Toon Transparent.shader
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Transparent" {
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.0
// Double-sidedness is sometimes wonky with transparency, use with caution.
[Enum(Both,0,Front,2,Back,1)] _Cull("Sidedness", Float) = 2
[NoScaleOffset]_MetallicGlossMap("Metallic Map", 2D) = "white" {}
_Metallic("Metallic", Range( 0 , 1)) = 0
_Glossiness("Smoothness", Range( 0 , 1)) = 0
[Toggle(_)] _ZWrite("ZWrite", Float) = 1
}
SubShader {
Expand Down Expand Up @@ -54,10 +57,6 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Transparent" {
uniform float _Emission;
uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
uniform float _Intensity;
float3 Function_node_3693( float3 normal ){
return ShadeSH9(half4(normal, 1.0));

}

float _Cutoff;

Expand Down Expand Up @@ -120,10 +119,6 @@ Shader "NoeNoe/NoeNoe Toon Shader/NoeNoe Toon Transparent" {
uniform float _Emission;
uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
uniform float _Intensity;
float3 Function_node_3693( float3 normal ){
return ShadeSH9(half4(normal, 1.0));

}

float _Cutoff;

Expand Down
2 changes: 0 additions & 2 deletions NoeNoe Shaders/NoeNoe Toon Shader/NoeNoeShadowCaster.cginc
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ VertexOutputShadow vertShadow (VertexInputShadow v) {
}

float4 fragShadow(VertexOutputShadow i, float facing : VFACE) : COLOR {
float isFrontFace = ( facing >= 0 ? 1 : 0 );
float faceSign = ( facing >= 0 ? 1 : -1 );
float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex));
float SurfaceAlpha = _MainTex_var.a;
clip(SurfaceAlpha - _Cutoff);
Expand Down
Loading

0 comments on commit ba25f5a

Please sign in to comment.