-
Notifications
You must be signed in to change notification settings - Fork 40
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
16 changed files
with
431 additions
and
5 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
%YAML 1.1 | ||
%TAG !u! tag:unity3d.com,2011: | ||
--- !u!114 &11400000 | ||
MonoBehaviour: | ||
m_ObjectHideFlags: 0 | ||
m_CorrespondingSourceObject: {fileID: 0} | ||
m_PrefabInstance: {fileID: 0} | ||
m_PrefabAsset: {fileID: 0} | ||
m_GameObject: {fileID: 0} | ||
m_Enabled: 1 | ||
m_EditorHideFlags: 0 | ||
m_Script: {fileID: 11500000, guid: 9d6cd861481d4b55b3652478146d0b38, type: 3} | ||
m_Name: My Toon Shader | ||
m_EditorClassIdentifier: | ||
SourceShader: {fileID: 4800000, guid: 849dc4ff793a3f943ad21a3b6ee26456, type: 3} | ||
Shader: {fileID: 4800000, guid: 2e0a54ed13173b14898a9bf0e10092da, type: 3} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,261 @@ | ||
Shader "DELTation/Custom/My Toon Shader" | ||
{ | ||
Properties | ||
{ | ||
[MainTexture] | ||
_BaseMap ("Texture", 2D) = "white" {} | ||
[MainColor] | ||
_BaseColor ("Tint", Color) = (1.0, 1.0, 1.0) | ||
_ShadowTint ("Shadow Tint", Color) = (0.0, 0.0, 0.0, 1.0) | ||
[Toggle(_PURE_SHADOW_COLOR)] | ||
_PureShadowColor ("Pure Shadow Color", Float) = 0 | ||
|
||
[Toggle(_RAMP_MAP)] | ||
_UseRampMap("Use Ramp Texture", Float) = 0 | ||
[NoScaleOffset] | ||
_RampMap ("Ramp Texture", 2D) = "white" {} | ||
[Toggle(_RAMP_TRIPLE)] _RampTriple ("Triple Ramp", Float) = 0 | ||
_Ramp0 ("Ramp Threshold 0", Range(-1, 1)) = 0 | ||
_Ramp1 ("Ramp Threshold 1", Range(-1, 1)) = 0.5 | ||
_RampSmoothness ("Ramp Smoothness", Range(0, 2)) = 0.005 | ||
|
||
[NoScaleOffset] | ||
_BumpMap("Normal Map", 2D) = "bump" {} | ||
|
||
[Toggle(_EMISSION)] _Emission ("Emission", Float) = 0 | ||
[HDR] _EmissionColor ("Emission Color", Color) = (0.0, 0.0, 0.0, 0.0) | ||
|
||
[Toggle(_FRESNEL)] _Fresnel ("Rim", Float) = 0 | ||
_FresnelThickness ("Rim Thickness", Range(0, 1)) = 0.45 | ||
_FresnelSmoothness ("Rim Smoothness", Range(0, 1)) = 0.1 | ||
[HDR] _FresnelColor ("Rim Color", Color) = (1.0, 1.0, 1.0, 1.0) | ||
|
||
[Toggle(_SPECULAR)] _Specular ("Specular", Float) = 0 | ||
[Toggle(_ANISO_SPECULAR)] _AnisoSpecular("Anisotropic Specular", Float) = 0 | ||
_SpecularThreshold ("Specular Threshold", Range(0, 1)) = 0.8 | ||
_SpecularExponent ("Specular Exponent", Range(0, 1000)) = 200 | ||
_SpecularSmoothness ("Specular Smoothness", Range(0, 1)) = 0.025 | ||
[HDR] _SpecularColor ("Specular Color", Color) = (1.0, 1.0, 1.0, 1.0) | ||
|
||
[Toggle(_FOG)] _Fog ("Fog", Float) = 1 | ||
[Toggle(_ADDITIONAL_LIGHTS_ENABLED)] _AdditionalLights ("Additonal Lights", Float) = 1 | ||
[Toggle(_ADDITIONAL_LIGHTS_SPECULAR)] _AdditionalLightsSpecular ("Additonal Lights Specular", Float) = 0 | ||
[Toggle(_ENVIRONMENT_LIGHTING_ENABLED)] _EnvironmentLightingEnabled ("Environment Lighting", Float) = 1 | ||
[Toggle(_SHADOW_MASK)] _ShadowMask ("Baked Shadows", Float) = 0 | ||
[Toggle(_VERTEX_COLOR)] _VertexColor ("Vertex Color", Float) = 0 | ||
|
||
[Slider(0, 1)] | ||
_Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5 | ||
|
||
// Blending state | ||
[Toggle] _ZWrite("Z Write", Float) = 1.0 | ||
[Enum(UnityEngine.Rendering.CullMode)] _Cull("Culling", Float) = 0 | ||
|
||
[HideInInspector] _Surface("__surface", Float) = 0.0 | ||
[HideInInspector] _Blend("__blend", Float) = 0.0 | ||
[HideInInspector] _SrcBlend("__src", Float) = 1.0 | ||
[HideInInspector] _DstBlend("__dst", Float) = 0.0 | ||
[Toggle] _AlphaClip("Alpha Clipping", Float) = 0.0 | ||
|
||
// Editmode props | ||
[HideInInspector] _QueueOffset("Queue Offset", Float) = 0.0 | ||
|
||
[Toggle(_REFLECTIONS)] _Reflections("Reflections", Float) = 0.0 | ||
[Toggle(_REFLECTION_PROBES)] _ReflectionProbes("Reflection Probes", Float) = 0.0 | ||
_ReflectionSmoothness ("Smoothness", Range(0, 1)) = 0.5 | ||
_ReflectionBlend ("Blend", Range(0, 1)) = 0.5 | ||
|
||
} | ||
SubShader | ||
{ | ||
Tags{"RenderType" = "Opaque" "RenderPipeline" = "UniversalRenderPipeline" "IgnoreProjector" = "True"} | ||
LOD 300 | ||
|
||
Pass | ||
{ | ||
Name "ForwardLit" | ||
Tags{"LightMode" = "UniversalForward"} | ||
|
||
Blend[_SrcBlend][_DstBlend] | ||
ZWrite[_ZWrite] | ||
Cull[_Cull] | ||
|
||
HLSLPROGRAM | ||
|
||
#pragma vertex vert | ||
#pragma fragment frag | ||
|
||
#pragma shader_feature_local _NORMALMAP | ||
#pragma shader_feature_local _FOG | ||
#pragma shader_feature_local _VERTEX_COLOR | ||
#pragma shader_feature_local _ADDITIONAL_LIGHTS_ENABLED | ||
#pragma shader_feature_local _SPECULAR | ||
#pragma shader_feature_local _ANISO_SPECULAR | ||
#pragma shader_feature_local _ADDITIONAL_LIGHTS_SPECULAR | ||
#pragma shader_feature_local _ENVIRONMENT_LIGHTING_ENABLED | ||
#pragma shader_feature_local _SHADOW_MASK | ||
|
||
#pragma shader_feature_local_fragment _FRESNEL | ||
#pragma shader_feature_local_fragment _EMISSION | ||
#pragma shader_feature_local_fragment _RAMP_TRIPLE | ||
#pragma shader_feature_local_fragment _RAMP_MAP | ||
#pragma shader_feature_local_fragment _PURE_SHADOW_COLOR | ||
|
||
#pragma shader_feature_local_fragment _ALPHATEST_ON | ||
#pragma shader_feature_local_fragment _ALPHAPREMULTIPLY_ON | ||
|
||
#pragma shader_feature_local_fragment _REFLECTIONS | ||
#pragma shader_feature_local_fragment _REFLECTION_PROBES | ||
|
||
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN | ||
#pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS | ||
#pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS | ||
#pragma multi_compile_fragment _ _SHADOWS_SOFT | ||
#pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION | ||
#pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING | ||
#pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION | ||
|
||
#pragma multi_compile _ LIGHTMAP_SHADOW_MIXING | ||
#pragma multi_compile _ SHADOWS_SHADOWMASK | ||
|
||
|
||
// Unity | ||
#pragma multi_compile _ DIRLIGHTMAP_COMBINED | ||
#pragma multi_compile _ LIGHTMAP_ON | ||
#pragma multi_compile_fog | ||
|
||
#pragma multi_compile_instancing | ||
|
||
|
||
#if defined(_ADDITIONAL_LIGHTS) && defined(_ADDITIONAL_LIGHTS_ENABLED) | ||
#define TOON_ADDITIONAL_LIGHTS | ||
#endif | ||
|
||
#if defined(_ADDITIONAL_LIGHTS_VERTEX) && defined(_ADDITIONAL_LIGHTS_ENABLED) | ||
#define TOON_ADDITIONAL_LIGHTS_VERTEX | ||
#endif | ||
|
||
#if defined(_ADDITIONAL_LIGHTS_SPECULAR) && defined(_SPECULAR) | ||
#define TOON_ADDITIONAL_LIGHTS_SPECULAR | ||
#endif | ||
|
||
#include "Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Shaders/ToonShaderInput.hlsl" | ||
#include "Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Shaders/ToonShaderForwardPass_AppData.hlsl" | ||
#include "Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Shaders/ToonShaderForwardPass.hlsl" | ||
|
||
ENDHLSL | ||
} | ||
|
||
Pass | ||
{ | ||
Name "ShadowCaster" | ||
Tags{"LightMode" = "ShadowCaster"} | ||
|
||
ZWrite On | ||
ZTest LEqual | ||
ColorMask 0 | ||
Cull[_Cull] | ||
|
||
HLSLPROGRAM | ||
#pragma target 2.0 | ||
|
||
#pragma shader_feature_local_fragment _ALPHATEST_ON | ||
|
||
#pragma vertex ShadowPassVertex | ||
#pragma fragment ShadowPassFragment | ||
|
||
#pragma multi_compile_instancing | ||
|
||
#include "Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Shaders/ToonShaderInput.hlsl" | ||
#include "Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Shaders/ToonShaderShadowCasterPass.hlsl" | ||
|
||
ENDHLSL | ||
} | ||
|
||
Pass | ||
{ | ||
Name "Meta" | ||
Tags{"LightMode" = "Meta"} | ||
|
||
Cull Off | ||
|
||
HLSLPROGRAM | ||
|
||
#pragma vertex MetaPassVertex | ||
#pragma fragment MetaPassFragment | ||
|
||
#pragma shader_feature_local _NORMALMAP | ||
#pragma shader_feature_local _VERTEX_COLOR | ||
#pragma shader_feature_local _ADDITIONAL_LIGHTS_ENABLED | ||
#pragma shader_feature_local _SPECULAR | ||
#pragma shader_feature_local _ANISO_SPECULAR | ||
#pragma shader_feature_local _ADDITIONAL_LIGHTS_SPECULAR | ||
#pragma shader_feature_local _ENVIRONMENT_LIGHTING_ENABLED | ||
|
||
#pragma shader_feature_local_fragment _SURFACE_TYPE_TRANSPARENT | ||
#pragma shader_feature_local_fragment _FRESNEL | ||
#pragma shader_feature_local_fragment _EMISSION | ||
#pragma shader_feature_local_fragment _RAMP_TRIPLE | ||
#pragma multi_compile_local_fragment _ _RAMP_MAP _PURE_SHADOW_COLOR | ||
|
||
#pragma shader_feature_local_fragment _ALPHATEST_ON | ||
|
||
#include "Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Shaders/ToonShaderInput.hlsl" | ||
#include "Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Shaders/ToonShaderMetaPass.hlsl" | ||
|
||
ENDHLSL | ||
} | ||
|
||
Pass | ||
{ | ||
Name "DepthOnly" | ||
Tags{"LightMode" = "DepthOnly"} | ||
|
||
ZWrite On | ||
ColorMask 0 | ||
Cull[_Cull] | ||
|
||
HLSLPROGRAM | ||
|
||
#pragma target 2.0 | ||
|
||
#pragma shader_feature_local_fragment _ALPHATEST_ON | ||
|
||
#pragma vertex DepthOnlyVertex | ||
#pragma fragment DepthOnlyFragment | ||
|
||
#pragma multi_compile_instancing | ||
|
||
|
||
#include "Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Shaders/ToonShaderInput.hlsl" | ||
#include "Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Shaders/ToonShaderDepthOnlyPass.hlsl" | ||
|
||
ENDHLSL | ||
} | ||
|
||
Pass | ||
{ | ||
Name "DepthNormals" | ||
Tags{"LightMode" = "DepthNormals"} | ||
|
||
ZWrite On | ||
Cull[_Cull] | ||
|
||
HLSLPROGRAM | ||
#pragma target 2.0 | ||
|
||
#pragma shader_feature_local_fragment _ALPHATEST_ON | ||
|
||
#pragma vertex DepthNormalsVertex | ||
#pragma fragment DepthNormalsFragment | ||
|
||
#pragma multi_compile_instancing | ||
|
||
#include "Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Shaders/ToonShaderInput.hlsl" | ||
#include "Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Shaders/ToonShaderDepthNormalsPass.hlsl" | ||
ENDHLSL | ||
} | ||
} | ||
|
||
CustomEditor "DELTation.ToonShader.Editor.ToonShaderEditor" | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
3 changes: 3 additions & 0 deletions
3
Packages/com.deltation.toon-shader/Assets/DELTation/ToonShader/Editor/Custom.meta
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
64 changes: 64 additions & 0 deletions
64
...deltation.toon-shader/Assets/DELTation/ToonShader/Editor/Custom/CustomToonShaderEditor.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
using System; | ||
using System.IO; | ||
using DELTation.ToonShader.Custom; | ||
using UnityEditor; | ||
using UnityEngine; | ||
|
||
namespace DELTation.ToonShader.Editor.Custom | ||
{ | ||
[CustomEditor(typeof(CustomToonShader))] | ||
public class CustomToonShaderEditor : UnityEditor.Editor | ||
{ | ||
public override void OnInspectorGUI() | ||
{ | ||
base.OnInspectorGUI(); | ||
|
||
var customToonShader = (CustomToonShader)target; | ||
|
||
EditorGUI.BeginDisabledGroup(true); | ||
EditorGUILayout.ObjectField(nameof(customToonShader.Shader), customToonShader.Shader, typeof(Shader), false | ||
); | ||
EditorGUI.EndDisabledGroup(); | ||
|
||
|
||
if (GUILayout.Button("Generate")) | ||
GenerateShaderFile(customToonShader); | ||
} | ||
|
||
private void GenerateShaderFile(CustomToonShader customToonShader) | ||
{ | ||
var path = AssetDatabase.GetAssetPath(customToonShader); | ||
var assetName = Path.GetFileNameWithoutExtension(path); | ||
var directoryName = Path.GetDirectoryName(path)!; | ||
|
||
var sourceShaderCode = | ||
GenerateShaderSource(customToonShader, assetName); | ||
var shaderAssetPath = customToonShader.Shader != null | ||
? AssetDatabase.GetAssetPath(customToonShader.Shader) | ||
: Path.Combine(directoryName, assetName + ".shader"); | ||
File.WriteAllText(Path.GetFullPath(shaderAssetPath), sourceShaderCode); | ||
AssetDatabase.ImportAsset(shaderAssetPath); | ||
|
||
var newShader = AssetDatabase.LoadAssetAtPath<Shader>(shaderAssetPath); | ||
customToonShader.Shader = newShader; | ||
EditorUtility.SetDirty(newShader); | ||
EditorUtility.SetDirty(customToonShader); | ||
AssetDatabase.SaveAssets(); | ||
} | ||
|
||
private static string GenerateShaderSource(CustomToonShader customToonShader, string assetName) | ||
{ | ||
var sourceShaderCodeLines = GetSourceShaderCode(customToonShader.SourceShader); | ||
sourceShaderCodeLines[0] = $"Shader \"DELTation/Custom/{assetName}\""; | ||
var sourceShaderCode = string.Join(Environment.NewLine, sourceShaderCodeLines); | ||
return sourceShaderCode; | ||
} | ||
|
||
private static string[] GetSourceShaderCode(Shader sourceShader) | ||
{ | ||
var path = AssetDatabase.GetAssetPath(sourceShader); | ||
var fullPath = Path.GetFullPath(path); | ||
return File.ReadAllLines(fullPath); | ||
} | ||
} | ||
} |
3 changes: 3 additions & 0 deletions
3
...tion.toon-shader/Assets/DELTation/ToonShader/Editor/Custom/CustomToonShaderEditor.cs.meta
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
4 changes: 3 additions & 1 deletion
4
...ltation.toon-shader/Assets/DELTation/ToonShader/Editor/DELTation.ToonShader.Editor.asmdef
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.