949 lines
24 KiB
HLSL
949 lines
24 KiB
HLSL
//////////////////////////////////////////////////////
|
|
// MK Toon Config //
|
|
// //
|
|
// Created by Michael Kremmel //
|
|
// www.michaelkremmel.de //
|
|
// Copyright © 2021 All rights reserved. //
|
|
//////////////////////////////////////////////////////
|
|
|
|
#ifndef MK_TOON_DEFINES
|
|
#define MK_TOON_DEFINES
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Custom User Config
|
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
/*
|
|
//Enable vertex colors be combined with the albedo map
|
|
#ifndef MK_COMBINE_VERTEX_COLOR_WITH_ALBEDO_MAP
|
|
#define MK_COMBINE_VERTEX_COLOR_WITH_ALBEDO_MAP
|
|
#endif
|
|
*/
|
|
|
|
/*
|
|
//Enable outline distance based fading
|
|
//Also set compile directive on project window: MK_TOON_OUTLINE_FADE
|
|
#ifndef MK_OUTLINE_FADE
|
|
#define MK_OUTLINE_FADE
|
|
#endif
|
|
*/
|
|
|
|
/*
|
|
//Enable Point Filtering instead of Bilinear
|
|
//This can't be customized by the user in any other way, since sampler objects has to be are hardcoded
|
|
#ifndef MK_POINT_FILTERING
|
|
#define MK_POINT_FILTERING
|
|
#endif
|
|
*/
|
|
|
|
|
|
//Enable screen spaced dissolve instead of tangent spaced
|
|
/*
|
|
#ifndef MK_DISSOLVE_PROJECTION_SCREEN_SPACE
|
|
#define MK_DISSOLVE_PROJECTION_SCREEN_SPACE
|
|
#endif
|
|
*/
|
|
|
|
// ------------------------------------------------------------------------------------------
|
|
|
|
#if defined(MK_URP)
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
#elif defined(MK_LWRP)
|
|
#include "Packages/com.unity.render-pipelines.lightweight/ShaderLibrary/Core.hlsl"
|
|
#else
|
|
#include "UnityCG.cginc"
|
|
#endif
|
|
|
|
// ------------------------------------------------------------------------------------------
|
|
// Note: Every define should have a "MK" prefix to avoid compile issues when using external funtions
|
|
// ------------------------------------------------------------------------------------------
|
|
|
|
// because of maximum of interpolators / graphics API operations some features are dependent of Shader Models
|
|
// Aniso Spec, Normal Mapping, Heightmapping, Vertex Animation Map are foreced to required SM30+
|
|
// Flipbook requires SM35+
|
|
// the following maps are skipped on < SM35: Depth => SoftFade, Occlusion, DetailNormal, Normal, DissolveBorder, Height, PBS1, Gooch Bright and Dark, Thickness
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Basic setup
|
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//SRP's dont accept fixed variables, switched to half instead while defining pipeline
|
|
#if defined(MK_URP) || defined(MK_LWRP)
|
|
#ifndef autoLP
|
|
#define autoLP half
|
|
#endif
|
|
#ifndef autoLP2
|
|
#define autoLP2 half2
|
|
#endif
|
|
#ifndef autoLP3
|
|
#define autoLP3 half3
|
|
#endif
|
|
#ifndef autoLP4
|
|
#define autoLP4 half4
|
|
#endif
|
|
#else
|
|
#ifndef autoLP
|
|
#define autoLP fixed
|
|
#endif
|
|
#ifndef autoLP2
|
|
#define autoLP2 fixed2
|
|
#endif
|
|
#ifndef autoLP3
|
|
#define autoLP3 fixed3
|
|
#endif
|
|
#ifndef autoLP4
|
|
#define autoLP4 fixed4
|
|
#endif
|
|
#endif
|
|
|
|
//Just a safety thing, not supported on every device
|
|
#if defined(UNITY_COMPILER_HLSL) || defined(SHADER_API_PSSL) || defined(UNITY_COMPILER_HLSLCC)
|
|
#define INITIALIZE_STRUCT(type, name) name = (type)0;
|
|
#else
|
|
#define INITIALIZE_STRUCT(type, name)
|
|
#endif
|
|
|
|
#if defined(MK_PARTICLES)
|
|
#else //Standard
|
|
#ifndef MK_STANDARD
|
|
#define MK_STANDARD
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MK_LEGACY_RP
|
|
#ifndef MK_PARTICLES
|
|
//handle particles instancing on legacy rp
|
|
#include "UnityStandardParticleInstancing.cginc"
|
|
#endif
|
|
#endif
|
|
|
|
#if !defined(MK_PBS) && !defined(MK_SIMPLE) && !defined(MK_UNLIT)
|
|
#ifndef MK_UNLIT
|
|
#define MK_UNLIT
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_PBS) || defined(MK_SIMPLE)
|
|
#ifndef MK_LIT
|
|
#define MK_LIT
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MK_PBS
|
|
#if defined(_MK_WORKFLOW_SPECULAR)
|
|
#ifndef MK_WORKFLOW_SPECULAR
|
|
#define MK_WORKFLOW_SPECULAR
|
|
#endif
|
|
#elif defined(_MK_WORKFLOW_ROUGHNESS)
|
|
#ifndef MK_WORKFLOW_ROUGHNESS
|
|
#define MK_WORKFLOW_ROUGHNESS
|
|
#endif
|
|
#else
|
|
#ifndef MK_WORKFLOW_METALLIC
|
|
#define MK_WORKFLOW_METALLIC
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_WORKFLOW_METALLIC) || defined(MK_WORKFLOW_SPECULAR) || defined(MK_WORKFLOW_ROUGHNESS)
|
|
#ifndef MK_WORKFLOW_PBS
|
|
#define MK_WORKFLOW_PBS
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MK_WORKFLOW_PBS
|
|
#ifdef _MK_PBS_MAP_0
|
|
#ifndef MK_PBS_MAP_0
|
|
#define MK_PBS_MAP_0
|
|
#endif
|
|
#endif
|
|
#if defined(_MK_PBS_MAP_1) && SHADER_TARGET >= 35
|
|
#ifndef MK_PBS_MAP_1
|
|
#define MK_PBS_MAP_1
|
|
#endif
|
|
#endif
|
|
#else
|
|
#ifdef _MK_PBS_MAP_0
|
|
#ifndef MK_PBS_MAP_0
|
|
#define MK_PBS_MAP_0
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef _MK_SURFACE_TYPE_TRANSPARENT
|
|
#ifndef MK_SURFACE_TYPE_TRANSPARENT
|
|
#define MK_SURFACE_TYPE_TRANSPARENT
|
|
#endif
|
|
#else
|
|
#ifndef MK_SURFACE_TYPE_OPAQUE
|
|
#define MK_SURFACE_TYPE_OPAQUE
|
|
#endif
|
|
#endif
|
|
#ifdef _MK_ALPHA_CLIPPING
|
|
#ifndef MK_ALPHA_CLIPPING
|
|
#define MK_ALPHA_CLIPPING
|
|
#endif
|
|
#endif
|
|
#if defined(MK_ALPHA_CLIPPING) || defined(MK_SURFACE_TYPE_TRANSPARENT)
|
|
#ifndef MK_ALPHA_LOOKUP
|
|
#define MK_ALPHA_LOOKUP
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_FLIPBOOK) && SHADER_TARGET >= 35
|
|
//flipbook can only be used if > 10 interpolators are available
|
|
#ifndef MK_FLIPBOOK
|
|
#define MK_FLIPBOOK
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MK_SURFACE_TYPE_TRANSPARENT
|
|
#if defined(_MK_BLEND_PREMULTIPLY)
|
|
#ifndef MK_BLEND_PREMULTIPLY
|
|
#define MK_BLEND_PREMULTIPLY
|
|
#endif
|
|
// Premul and additive results in the same keyword but different blend => premul
|
|
#elif defined(_MK_BLEND_ADDITIVE)
|
|
#ifndef MK_BLEND_ADDITIVE
|
|
#define MK_BLEND_ADDITIVE
|
|
#endif
|
|
#elif defined(_MK_BLEND_MULTIPLY)
|
|
#ifndef MK_BLEND_MULTIPLY
|
|
#define MK_BLEND_MULTIPLY
|
|
#endif
|
|
#else
|
|
#ifndef MK_BLEND_ALPHA
|
|
#define MK_BLEND_ALPHA
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MK_PARTICLES
|
|
#if defined(_MK_COLOR_BLEND_ADDITIVE)
|
|
#ifndef MK_COLOR_BLEND_ADDITIVE
|
|
#define MK_COLOR_BLEND_ADDITIVE
|
|
#endif
|
|
#elif defined(_MK_COLOR_BLEND_SUBTRACTIVE)
|
|
#ifndef MK_COLOR_BLEND_SUBTRACTIVE
|
|
#define MK_COLOR_BLEND_SUBTRACTIVE
|
|
#endif
|
|
#elif defined(_MK_COLOR_BLEND_OVERLAY)
|
|
#ifndef MK_COLOR_BLEND_OVERLAY
|
|
#define MK_COLOR_BLEND_OVERLAY
|
|
#endif
|
|
#elif defined(_MK_COLOR_BLEND_COLOR)
|
|
#ifndef MK_COLOR_BLEND_COLOR
|
|
#define MK_COLOR_BLEND_COLOR
|
|
#endif
|
|
#elif defined(_MK_COLOR_BLEND_DIFFERENCE)
|
|
#ifndef MK_COLOR_BLEND_DIFFERENCE
|
|
#define MK_COLOR_BLEND_DIFFERENCE
|
|
#endif
|
|
#else
|
|
#ifndef MK_COLOR_BLEND_MULTIPLY
|
|
#define MK_COLOR_BLEND_MULTIPLY
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_COLOR_BLEND_ADDITIVE) || defined(MK_COLOR_BLEND_SUBTRACTIVE) || defined(MK_COLOR_BLEND_OVERLAY) || defined(MK_COLOR_BLEND_COLOR) || defined(MK_COLOR_BLEND_DIFFERENCE) || defined(MK_COLOR_BLEND_MULTIPLY)
|
|
#ifndef MK_COLOR
|
|
#define MK_COLOR
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_SOFT_FADE) && SHADER_TARGET >= 35
|
|
#ifndef MK_SOFT_FADE
|
|
#define MK_SOFT_FADE
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef _MK_CAMERA_FADE
|
|
#ifndef MK_CAMERA_FADE
|
|
#define MK_CAMERA_FADE
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef _MK_ALBEDO_MAP
|
|
#ifndef MK_ALBEDO_MAP
|
|
#define MK_ALBEDO_MAP
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef _MK_DETAIL_MAP
|
|
#ifndef MK_DETAIL_MAP
|
|
#define MK_DETAIL_MAP
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MK_DETAIL_MAP
|
|
#if defined(_MK_DETAIL_BLEND_MIX)
|
|
#ifndef MK_DETAIL_BLEND_MIX
|
|
#define MK_DETAIL_BLEND_MIX
|
|
#endif
|
|
#elif defined(_MK_DETAIL_BLEND_ADD)
|
|
#ifndef MK_DETAIL_BLEND_ADD
|
|
#define MK_DETAIL_BLEND_ADD
|
|
#endif
|
|
#else
|
|
#ifndef MK_DETAIL_BLEND_MULTIPLY
|
|
#define MK_DETAIL_BLEND_MULTIPLY
|
|
#endif
|
|
#endif
|
|
#endif
|
|
#if defined(_MK_DETAIL_NORMAL_MAP) && SHADER_TARGET >= 35
|
|
#ifndef MK_DETAIL_NORMAL_MAP
|
|
#define MK_DETAIL_NORMAL_MAP
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_ALBEDO_MAP)
|
|
#ifndef MK_TEXCLR
|
|
#define MK_TEXCLR
|
|
#endif
|
|
#else
|
|
#ifndef MK_VERTCLR
|
|
#define MK_VERTCLR
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MK_COMBINE_VERTEX_COLOR_WITH_ALBEDO_MAP
|
|
#ifndef MK_VERTCLR
|
|
#define MK_VERTCLR
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MK_LIT
|
|
#ifdef _MK_RECEIVE_SHADOWS
|
|
#ifndef MK_RECEIVE_SHADOWS
|
|
#define MK_RECEIVE_SHADOWS
|
|
#endif
|
|
#endif
|
|
#ifdef _MK_THRESHOLD_MAP
|
|
#ifndef MK_THRESHOLD_MAP
|
|
#define MK_THRESHOLD_MAP
|
|
#endif
|
|
#endif
|
|
#ifdef MK_FORWARD_BASE_PASS
|
|
#if defined(MK_URP) && defined(_ADDITIONAL_LIGHTS_VERTEX) || defined(MK_LWRP) && defined(_ADDITIONAL_LIGHTS_VERTEX) || defined(MK_LEGACY_RP) && defined(VERTEXLIGHT_ON)
|
|
#ifndef MK_VERTEX_LIGHTING
|
|
#define MK_VERTEX_LIGHTING
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_NORMAL_MAP) && SHADER_TARGET >= 35
|
|
#ifndef MK_NORMAL_MAP
|
|
#define MK_NORMAL_MAP
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef _MK_LIGHT_TRANSMISSION_TRANSLUCENT
|
|
#ifndef MK_LIGHT_TRANSMISSION_TRANSLUCENT
|
|
#define MK_LIGHT_TRANSMISSION_TRANSLUCENT
|
|
#endif
|
|
#endif
|
|
#ifdef _MK_LIGHT_TRANSMISSION_SUB_SURFACE_SCATTERING
|
|
#ifndef MK_LIGHT_TRANSMISSION_SUB_SURFACE_SCATTERING
|
|
#define MK_LIGHT_TRANSMISSION_SUB_SURFACE_SCATTERING
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_THICKNESS_MAP) && SHADER_TARGET >= 35
|
|
#ifndef MK_THICKNESS_MAP
|
|
#define MK_THICKNESS_MAP
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_LIGHT_TRANSMISSION_TRANSLUCENT) || defined(MK_LIGHT_TRANSMISSION_SUB_SURFACE_SCATTERING)
|
|
#ifndef MK_LightTransmission
|
|
#define MK_LightTransmission
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_HEIGHT_MAP) && SHADER_TARGET >= 35
|
|
#ifndef MK_HEIGHT_MAP
|
|
#define MK_HEIGHT_MAP
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_OCCLUSION_MAP) && SHADER_TARGET >= 35
|
|
#ifndef MK_OCCLUSION_MAP
|
|
#define MK_OCCLUSION_MAP
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_LIGHT_CEL)
|
|
#ifndef MK_LIGHT_CEL
|
|
#define MK_LIGHT_CEL
|
|
#endif
|
|
#elif defined(_MK_LIGHT_BANDED)
|
|
#ifndef MK_LIGHT_BANDED
|
|
#define MK_LIGHT_BANDED
|
|
#endif
|
|
#elif defined(_MK_LIGHT_RAMP)
|
|
#ifndef MK_LIGHT_RAMP
|
|
#define MK_LIGHT_RAMP
|
|
#endif
|
|
#else
|
|
#ifndef MK_LIGHT_BUILTIN
|
|
#define MK_LIGHT_BUILTIN
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_ARTISTIC_DRAWN)
|
|
#ifndef MK_ARTISTIC_DRAWN
|
|
#define MK_ARTISTIC_DRAWN
|
|
#endif
|
|
#elif defined(_MK_ARTISTIC_HATCHING)
|
|
#ifndef MK_ARTISTIC_HATCHING
|
|
#define MK_ARTISTIC_HATCHING
|
|
#endif
|
|
#elif defined(_MK_ARTISTIC_SKETCH)
|
|
#ifndef MK_ARTISTIC_SKETCH
|
|
#define MK_ARTISTIC_SKETCH
|
|
#endif
|
|
#else
|
|
#ifndef MK_ARTISTIC_OFF
|
|
#define MK_ARTISTIC_OFF
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_ARTISTIC_DRAWN) || defined(MK_ARTISTIC_HATCHING) || defined(MK_ARTISTIC_SKETCH)
|
|
#ifndef MK_ARTISTIC
|
|
#define MK_ARTISTIC
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_ARTISTIC)
|
|
#if defined(_MK_ARTISTIC_PROJECTION_SCREEN_SPACE)
|
|
#ifndef MK_ARTISTIC_PROJECTION_SCREEN_SPACE
|
|
#define MK_ARTISTIC_PROJECTION_SCREEN_SPACE
|
|
#endif
|
|
#else
|
|
#ifndef MK_ARTISTIC_PROJECTION_TANGENT_SPACE
|
|
#define MK_ARTISTIC_PROJECTION_TANGENT_SPACE
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_ARTISTIC_ANIMATION_STUTTER)
|
|
#ifndef MK_ARTISTIC_ANIMATION_STUTTER
|
|
#define MK_ARTISTIC_ANIMATION_STUTTER
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_GOOCH_RAMP)
|
|
#ifndef MK_GOOCH_RAMP
|
|
#define MK_GOOCH_RAMP
|
|
#endif
|
|
#endif
|
|
#if defined(_MK_GOOCH_BRIGHT_MAP) && SHADER_TARGET >= 35
|
|
#ifndef MK_GOOCH_BRIGHT_MAP
|
|
#define MK_GOOCH_BRIGHT_MAP
|
|
#endif
|
|
#endif
|
|
#if defined(_MK_GOOCH_DARK_MAP) && SHADER_TARGET >= 35
|
|
#ifndef MK_GOOCH_DARK_MAP
|
|
#define MK_GOOCH_DARK_MAP
|
|
#endif
|
|
#endif
|
|
#if defined(MK_GOOCH_BRIGHT_MAP) && defined(MK_GOOCH_DARK_MAP)
|
|
#ifndef MK_GOOCH_BRIGHT_AND_DARK_MAP
|
|
#define MK_GOOCH_BRIGHT_AND_DARK_MAP
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_GOOCH_BRIGHT_MAP) || defined(MK_GOOCH_DARK_MAP) || defined(MK_GOOCH_BRIGHT_AND_DARK_MAP)
|
|
#ifndef MK_GOOCH_MAP
|
|
#define MK_GOOCH_MAP
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_FORWARD_BASE_PASS)
|
|
#if defined(_MK_RIM_DEFAULT)
|
|
#ifndef MK_RIM_DEFAULT
|
|
#define MK_RIM_DEFAULT
|
|
#endif
|
|
#elif defined(_MK_RIM_SPLIT)
|
|
#ifndef MK_RIM_SPLIT
|
|
#define MK_RIM_SPLIT
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_RIM_DEFAULT) || defined(MK_RIM_SPLIT)
|
|
#ifndef MK_RIM
|
|
#define MK_RIM
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_FORWARD_BASE_PASS)
|
|
#ifdef _MK_IRIDESCENCE_DEFAULT
|
|
#ifndef MK_IRIDESCENCE_DEFAULT
|
|
#define MK_IRIDESCENCE_DEFAULT
|
|
#endif
|
|
#endif
|
|
#ifdef MK_IRIDESCENCE_DEFAULT
|
|
#ifndef MK_IRIDESCENCE
|
|
#define MK_IRIDESCENCE
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if (defined(MK_META_PASS) || defined(MK_FORWARD_BASE_PASS))
|
|
#ifdef _MK_EMISSION
|
|
#ifndef MK_EMISSION
|
|
#define MK_EMISSION
|
|
#endif
|
|
#endif
|
|
#ifdef _MK_EMISSION_MAP
|
|
#ifndef MK_EMISSION_MAP
|
|
#define MK_EMISSION_MAP
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_DIFFUSE_OREN_NAYAR)
|
|
#ifndef MK_DIFFUSE_OREN_NAYAR
|
|
#define MK_DIFFUSE_OREN_NAYAR
|
|
#endif
|
|
#elif defined(_MK_DIFFUSE_MINNAERT)
|
|
#ifndef MK_DIFFUSE_MINNAERT
|
|
#define MK_DIFFUSE_MINNAERT
|
|
#endif
|
|
#else
|
|
#ifndef MK_DIFFUSE_LAMBERT
|
|
#define MK_DIFFUSE_LAMBERT
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_WRAPPED_DIFFUSE)
|
|
#ifndef MK_WRAPPED_DIFFUSE
|
|
#define MK_WRAPPED_DIFFUSE
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_SPECULAR_ISOTROPIC)
|
|
#ifndef MK_SPECULAR_ISOTROPIC
|
|
#define MK_SPECULAR_ISOTROPIC
|
|
#endif
|
|
#elif defined(_MK_SPECULAR_ANISOTROPIC) && SHADER_TARGET >= 30
|
|
#ifndef MK_SPECULAR_ANISOTROPIC
|
|
#define MK_SPECULAR_ANISOTROPIC
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_SPECULAR_ISOTROPIC) || defined(MK_SPECULAR_ANISOTROPIC)
|
|
#ifndef MK_SPECULAR
|
|
#define MK_SPECULAR
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_FORWARD_BASE_PASS)
|
|
#if defined(_MK_ENVIRONMENT_REFLECTIONS_ADVANCED)
|
|
#ifndef MK_ENVIRONMENT_REFLECTIONS_ADVANCED
|
|
#define MK_ENVIRONMENT_REFLECTIONS_ADVANCED
|
|
#endif
|
|
#elif defined(_MK_ENVIRONMENT_REFLECTIONS_AMBIENT)
|
|
#ifndef MK_ENVIRONMENT_REFLECTIONS_AMBIENT
|
|
#define MK_ENVIRONMENT_REFLECTIONS_AMBIENT
|
|
#endif
|
|
#else
|
|
#ifndef MK_ENVIRONMENT_REFLECTIONS_OFF
|
|
#define MK_ENVIRONMENT_REFLECTIONS_OFF
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_ENVIRONMENT_REFLECTIONS_ADVANCED) || defined(MK_ENVIRONMENT_REFLECTIONS_AMBIENT)
|
|
#ifndef MK_ENVIRONMENT_REFLECTIONS
|
|
#define MK_ENVIRONMENT_REFLECTIONS
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_FORWARD_BASE_PASS) && defined(MK_ENVIRONMENT_REFLECTIONS)
|
|
#ifdef _MK_FRESNEL_HIGHLIGHTS
|
|
#ifndef MK_FRESNEL_HIGHLIGHTS
|
|
#define MK_FRESNEL_HIGHLIGHTS
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_ENVIRONMENT_REFLECTIONS) || defined(MK_EMISSION) || defined(MK_FRESNEL_HIGHLIGHTS)
|
|
#ifndef MK_INDIRECT
|
|
#define MK_INDIRECT
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_COLOR_GRADING_ALBEDO)
|
|
#ifndef MK_COLOR_GRADING_ALBEDO
|
|
#define MK_COLOR_GRADING_ALBEDO
|
|
#endif
|
|
#elif defined(_MK_COLOR_GRADING_FINAL_OUTPUT)
|
|
#ifndef MK_COLOR_GRADING_FINAL_OUTPUT
|
|
#define MK_COLOR_GRADING_FINAL_OUTPUT
|
|
#endif
|
|
#endif
|
|
#if defined(MK_COLOR_GRADING_ALBEDO) || defined(MK_COLOR_GRADING_FINAL_OUTPUT)
|
|
#ifndef MK_COLOR_GRADING
|
|
#define MK_COLOR_GRADING
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_VERTEX_ANIMATION_SINE)
|
|
#ifndef MK_VERTEX_ANIMATION_SINE
|
|
#define MK_VERTEX_ANIMATION_SINE
|
|
#endif
|
|
#elif defined(_MK_VERTEX_ANIMATION_PULSE)
|
|
#ifndef MK_VERTEX_ANIMATION_PULSE
|
|
#define MK_VERTEX_ANIMATION_PULSE
|
|
#endif
|
|
#elif defined(_MK_VERTEX_ANIMATION_NOISE)
|
|
#ifndef MK_VERTEX_ANIMATION_NOISE
|
|
#define MK_VERTEX_ANIMATION_NOISE
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_VERTEX_ANIMATION_SINE) || defined(MK_VERTEX_ANIMATION_PULSE) || defined(MK_VERTEX_ANIMATION_NOISE)
|
|
#ifndef MK_VERTEX_ANIMATION
|
|
#define MK_VERTEX_ANIMATION
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_VERTEX_ANIMATION)
|
|
#if defined(_MK_VERTEX_ANIMATION_MAP) && SHADER_TARGET >= 30
|
|
#ifndef MK_VERTEX_ANIMATION_MAP
|
|
#define MK_VERTEX_ANIMATION_MAP
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_VERTEX_ANIMATION_STUTTER)
|
|
#ifndef MK_VERTEX_ANIMATION_STUTTER
|
|
#define MK_VERTEX_ANIMATION_STUTTER
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_VERTEX_ANIMATION_MAP)
|
|
#define PASS_VERTEX_ANIMATION_UV(uv) uv
|
|
#else
|
|
#define PASS_VERTEX_ANIMATION_UV(uv) 0
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_DISSOLVE_DEFAULT)
|
|
#ifndef MK_DISSOLVE_DEFAULT
|
|
#define MK_DISSOLVE_DEFAULT
|
|
#endif
|
|
#elif defined(_MK_DISSOLVE_BORDER_COLOR)
|
|
#ifndef MK_DISSOLVE_BORDER_COLOR
|
|
#define MK_DISSOLVE_BORDER_COLOR
|
|
#endif
|
|
#elif defined(_MK_DISSOLVE_BORDER_RAMP) && SHADER_TARGET >= 35
|
|
#ifndef MK_DISSOLVE_BORDER_RAMP
|
|
#define MK_DISSOLVE_BORDER_RAMP
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_DISSOLVE_DEFAULT) || defined(MK_DISSOLVE_BORDER_COLOR) || defined(MK_DISSOLVE_BORDER_RAMP)
|
|
#ifndef MK_DISSOLVE
|
|
#define MK_DISSOLVE
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MK_OUTLINE_PASS
|
|
#if defined(_MK_OUTLINE_HULL_ORIGIN)
|
|
#ifndef MK_OUTLINE_HULL_ORIGIN
|
|
#define MK_OUTLINE_HULL_ORIGIN
|
|
#endif
|
|
#elif defined(_MK_OUTLINE_HULL_CLIP)
|
|
#ifndef MK_OUTLINE_HULL_CLIP
|
|
#define MK_OUTLINE_HULL_CLIP
|
|
#endif
|
|
#else
|
|
#ifndef MK_OUTLINE_HULL_OBJECT
|
|
#define MK_OUTLINE_HULL_OBJECT
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_OUTLINE_DATA_UV7)
|
|
#ifndef MK_OUTLINE_DATA_UV7
|
|
#define MK_OUTLINE_DATA_UV7
|
|
#endif
|
|
#else
|
|
#ifndef MK_OUTLINE_DATA_NORMAL
|
|
#define MK_OUTLINE_DATA_NORMAL
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_OUTLINE_NOISE)
|
|
#ifndef MK_OUTLINE_NOISE
|
|
#define MK_OUTLINE_NOISE
|
|
#endif
|
|
#else
|
|
#ifndef MK_OUTLINE_NOISE_OFF
|
|
#define MK_OUTLINE_NOISE_OFF
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_MK_OUTLINE_MAP)
|
|
#ifndef MK_OUTLINE_MAP
|
|
#define MK_OUTLINE_MAP
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MK_REFRACTION
|
|
#ifdef _MK_REFRACTION_DISTORTION_MAP
|
|
#ifndef MK_REFRACTION_DISTORTION_MAP
|
|
#define MK_REFRACTION_DISTORTION_MAP
|
|
#endif
|
|
#endif
|
|
#ifdef _MK_INDEX_OF_REFRACTION
|
|
#ifndef MK_INDEX_OF_REFRACTION
|
|
#define MK_INDEX_OF_REFRACTION
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_LIT) || defined(MK_INDEX_OF_REFRACTION) || defined(MK_VERTEX_ANIMATION_PULSE) || defined(MK_VERTEX_ANIMATION_NOISE)
|
|
#ifndef MK_NORMAL
|
|
#define MK_NORMAL
|
|
#endif
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Constants
|
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
#ifndef OUTLINE_OBJECT_SCALE
|
|
#define OUTLINE_OBJECT_SCALE 0.00000025
|
|
#endif
|
|
#ifndef OUTLINE_ORIGIN_SCALE
|
|
#define OUTLINE_ORIGIN_SCALE 0.0015
|
|
#endif
|
|
#ifndef K_SPEC_DIELECTRIC_MIN
|
|
#define K_SPEC_DIELECTRIC_MIN 0.04
|
|
#endif
|
|
#ifndef K_SPEC_DIELECTRIC_MAX
|
|
#define K_SPEC_DIELECTRIC_MAX 0.96
|
|
#endif
|
|
#ifndef HALF_MIN
|
|
#define HALF_MIN 6.10e-5
|
|
#endif
|
|
#ifndef ONE_MINUS_HALF_MIN
|
|
#define ONE_MINUS_HALF_MIN 0.999939
|
|
#endif
|
|
#ifndef T_Q
|
|
#define T_Q 0.125
|
|
#endif
|
|
#ifndef T_H
|
|
#define T_H 0.25
|
|
#endif
|
|
#ifndef T_V
|
|
#define T_V 0.5
|
|
#endif
|
|
#ifndef THRESHOLD_OFFSET_NORMALIZER
|
|
#define THRESHOLD_OFFSET_NORMALIZER 0.125
|
|
#endif
|
|
/*
|
|
#ifndef SHINE_MULT
|
|
//approximately URP smoothness base
|
|
#define SHINE_MULT 1024
|
|
#endif
|
|
*/
|
|
#ifndef PI
|
|
#define PI 3.141592
|
|
#endif
|
|
#ifndef PI_TWO
|
|
#define PI_TWO 6.283185
|
|
#endif
|
|
#ifndef PI_H
|
|
#define PI_H 1.570796
|
|
#endif
|
|
#ifndef PI_P2
|
|
#define PI_P2 9.869604
|
|
#endif
|
|
#ifndef INV_PI
|
|
#define INV_PI 0.318309
|
|
#endif
|
|
#ifndef REL_LUMA
|
|
#define REL_LUMA half3(0.2126,0.7152,0.0722)
|
|
#endif
|
|
#ifndef REFRACTION_DISTORTION_SCALE
|
|
#define REFRACTION_DISTORTION_SCALE 0.1
|
|
#endif
|
|
#ifndef HALF3_ONE
|
|
#define HALF3_ONE half3(1.0h, 1.0h, 1.0h)
|
|
#endif
|
|
#ifndef REFERENCE_RESOLUTION
|
|
#define REFERENCE_RESOLUTION half2(3840, 2160)
|
|
#endif
|
|
#ifndef REFERENCE_ASPECT
|
|
#define REFERENCE_ASPECT half2(1.777778, 0.5625)
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Input dependent defines
|
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
#if defined(MK_POLYBRUSH) || defined(MK_OUTLINE_MAP) || defined(MK_VERTEX_ANIMATION_MAP) || defined(MK_THRESHOLD_MAP) || defined(MK_PARTICLES) || defined(MK_ALBEDO_MAP) || defined(MK_DISSOLVE) || defined(MK_GOOCH_MAP) || defined(MK_LightTransmission) || defined(MK_NORMAL_MAP) || defined(MK_DETAIL_NORMAL_MAP) || defined(MK_EMISSION_MAP) || defined(MK_OCCLUSION_MAP) || defined(MK_ARTISTIC_HATCHING) || defined(MK_ARTISTIC_DRAWN) || defined(MK_ARTISTIC_SKETCH) || defined(MK_REFRACTION_DISTORTION_MAP)
|
|
#ifndef MK_TCM
|
|
#define MK_TCM
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_DETAIL_MAP) || defined(MK_DETAIL_NORMAL_MAP)
|
|
#ifndef MK_TCD
|
|
#define MK_TCD
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_LIT) && (defined(MK_TCM) || defined(MK_TCD)) && defined(MK_HEIGHT_MAP) && defined(_MK_PARALLAX) && SHADER_TARGET >= 30
|
|
#ifndef MK_PARALLAX
|
|
#define MK_PARALLAX
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_PARALLAX)
|
|
#ifndef MK_VD_O
|
|
#define MK_VD_O
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_NORMAL_MAP) || defined(MK_DETAIL_NORMAL_MAP) || defined(MK_VD_O) || defined(MK_SPECULAR_ANISOTROPIC)
|
|
#ifndef MK_TBN
|
|
#define MK_TBN
|
|
#endif
|
|
#else
|
|
#ifndef MK_WN
|
|
#define MK_WN
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_REFRACTION) || defined(MK_IRIDESCENCE) || defined(MK_LightTransmission) || defined(MK_RIM) || defined(MK_SPECULAR) || defined(LIGHTMAP_ON) || defined(UNITY_SHOULD_SAMPLE_SH) || defined(DYNAMICLIGHTMAP_ON) || defined(DIRLIGHTMAP_COMBINED) || defined(MK_RIM) || defined(MK_ENVIRONMENT_REFLECTIONS_ADVANCED) || defined(MK_FRESNEL_HIGHLIGHTS) || defined(MK_DIFFUSE_MINNAERT) || defined(MK_DIFFUSE_OREN_NAYAR)
|
|
#ifndef MK_VD
|
|
#define MK_VD
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_ARTISTIC) && defined(MK_ARTISTIC_PROJECTION_SCREEN_SPACE) || defined(MK_DISSOLVE_PROJECTION_SCREEN_SPACE)
|
|
#ifndef MK_NORMALIZED_SCREEN_UV
|
|
#define MK_NORMALIZED_SCREEN_UV
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_REFRACTION) || defined(MK_SOFT_FADE) || defined(MK_CAMERA_FADE) || defined(MK_NORMALIZED_SCREEN_UV)
|
|
#ifndef MK_SCREEN_UV
|
|
#define MK_SCREEN_UV
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_NORMALIZED_SCREEN_UV)
|
|
#ifndef MK_POS_NULL_CLIP
|
|
#define MK_POS_NULL_CLIP
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_POS_NULL_CLIP) || defined(MK_REFRACTION) || defined(MK_SOFT_FADE) || defined(MK_CAMERA_FADE)
|
|
#ifndef MK_POS_CLIP
|
|
#define MK_POS_CLIP
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef MK_LIT
|
|
#ifndef MK_N_DOT_L
|
|
#define MK_N_DOT_L
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_IRIDESCENCE) || defined(MK_FRESNEL_HIGHLIGHTS) || defined(MK_SPECULAR) || defined(MK_DIFFUSE_MINNAERT) || defined(MK_DIFFUSE_OREN_NAYAR) || defined(MK_RIM)
|
|
#ifndef MK_V_DOT_N
|
|
#define MK_V_DOT_N
|
|
#endif
|
|
#endif
|
|
#ifdef MK_DIFFUSE_OREN_NAYAR
|
|
#ifndef MK_V_DOT_L
|
|
#define MK_V_DOT_L
|
|
#endif
|
|
#endif
|
|
#if defined(MK_SPECULAR)
|
|
#ifdef MK_SPECULAR_ANISOTROPIC
|
|
#ifndef MK_T_DOT_HV
|
|
#define MK_T_DOT_HV
|
|
#endif
|
|
#ifndef MK_B_DOT_HV
|
|
#define MK_B_DOT_HV
|
|
#endif
|
|
#endif
|
|
#ifndef MK_HV
|
|
#define MK_HV
|
|
#endif
|
|
#ifndef MK_N_DOT_HV
|
|
#define MK_N_DOT_HV
|
|
#endif
|
|
//used for C.Sch Fresnel, if switched back to Schlick this should be disabled
|
|
#ifndef MK_L_DOT_HV
|
|
#define MK_L_DOT_HV
|
|
#endif
|
|
/*
|
|
//used for Schlick Fresnel
|
|
#ifndef MK_V_DOT_HV
|
|
#define MK_V_DOT_HV
|
|
#endif
|
|
*/
|
|
#endif
|
|
|
|
#ifdef MK_LightTransmission
|
|
#ifndef MK_LND
|
|
#define MK_LND
|
|
#endif
|
|
#ifndef MK_V_DOT_LND
|
|
#define MK_V_DOT_LND
|
|
#endif
|
|
#endif
|
|
|
|
/*
|
|
#ifdef MK_LIGHTMODEL_PHONG
|
|
#ifndef MK_ML_REF_N
|
|
#define MK_ML_REF_N
|
|
#endif
|
|
#endif
|
|
*/
|
|
#ifdef MK_ENVIRONMENT_REFLECTIONS_ADVANCED
|
|
#ifndef MK_MV_REF_N
|
|
#define MK_MV_REF_N
|
|
#endif
|
|
#endif
|
|
/*
|
|
#if defined(MK_TLD) || defined(MK_TLM)
|
|
#ifndef MK_ML_DOT_V
|
|
#define MK_ML_DOT_V
|
|
#endif
|
|
#endif
|
|
*/
|
|
/*
|
|
#ifdef MK_LIGHTMODEL_PHONG
|
|
#ifndef MK_ML_REF_N_DOT_V
|
|
#define MK_ML_REF_N_DOT_V
|
|
#endif
|
|
#endif
|
|
*/
|
|
|
|
#if defined(MK_TBN) || defined(MK_FLIPBOOK) || defined(MK_TCM) || defined(MK_TCD) || defined(MK_T_DOT_HV) || defined(MK_B_DOT_HV) || defined(MK_WORKFLOW_PBS) || defined(MK_ML_REF_N_DOT_V) || defined(MK_ML_DOT_V) || defined(MK_MV_REF_N) || defined(MK_ML_REF_N) || defined(MK_N_DOT_HV) || defined(MK_HV) || defined(MK_N_DOT_L) || defined(MK_V_DOT_L) || defined(MK_V_DOT_N) || defined(MK_LIT) || defined(MK_DISSOLVE) || defined(MK_REFRACTION)
|
|
#ifndef MK_SURFACE_DATA_REQUIRED
|
|
#define MK_SURFACE_DATA_REQUIRED
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_LIT) || defined(MK_VD)
|
|
#ifndef MK_POS_WORLD
|
|
#define MK_POS_WORLD
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(MK_FORWARD_BASE_PASS) || defined(MK_OUTLINE_PASS)
|
|
#ifndef MK_FOG
|
|
#define MK_FOG
|
|
#endif
|
|
#endif
|
|
#endif |