Files
2026-10-09 17:25:14 +03:00

123 lines
3.1 KiB
HLSL

//////////////////////////////////////////////////////
// MK Toon Forward Data //
// //
// Created by Michael Kremmel //
// www.michaelkremmel.de //
// Copyright © 2020 All rights reserved. //
//////////////////////////////////////////////////////
#ifndef MK_TOON_IO_FORWARD
#define MK_TOON_IO_FORWARD
#include "../Lighting.hlsl"
/////////////////////////////////////////////////////////////////////////////////////////////
// INPUT
/////////////////////////////////////////////////////////////////////////////////////////////
struct VertexInputForward
{
#ifdef MK_VERTEX_COLOR_REQUIRED
//use vertexcolors if required
half4 color : COLOR0;
#endif
//vertex position - always needed
float4 vertex : POSITION;
#if defined(MK_TCM) || defined(MK_TCD)
//texcoords0 if needed
#if defined(MK_FLIPBOOK)// && !defined(UNITY_PARTICLE_INSTANCING_ENABLED)
float4 texcoord0 : TEXCOORD0;
float texcoordBlend : TEXCOORD3;
#else
#if defined(MK_SECONDARY_UV_SET)
float2 texcoord0 : TEXCOORD0;
float2 texcoord7 : TEXCOORD7;
#else
float2 texcoord0 : TEXCOORD0;
#endif
#endif
#endif
#if defined(MK_FORWARD_BASE_PASS) && defined(DYNAMICLIGHTMAP_ON)
//dynammic lightmap uv
DECLARE_DYNAMIC_LIGHTMAP_INPUT(2)
#endif
#ifdef MK_NORMAL
half3 normal : NORMAL;
#endif
#ifdef MK_LIT
//static lightmap uv
DECLARE_STATIC_LIGHTMAP_INPUT(1);
//use tangents only if tbn matrix is required
#if defined(MK_TBN) || defined(MK_TANGENT_VERTEX)
half4 tangent : TANGENT;
#endif
#else
#if defined(MK_TBN) || defined(MK_TANGENT_VERTEX)
half4 tangent : TANGENT;
#endif
#endif
UNITY_VERTEX_INPUT_INSTANCE_ID
};
/////////////////////////////////////////////////////////////////////////////////////////////
// OUTPUT
/////////////////////////////////////////////////////////////////////////////////////////////
//If no parallax is used, then a 3 component tbn is enough
#ifdef MK_PARALLAX
#ifndef TBN_TYPE
#define TBN_TYPE half4
#endif
#else
#ifndef TBN_TYPE
#define TBN_TYPE half3
#endif
#endif
//Output Setup
struct VertexOutputForward
{
#if defined(MK_TCM) || defined(MK_TCD)
float4 uv : TEXCOORD0;
#endif
#ifdef MK_VERTEX_COLOR_REQUIRED
half4 color : COLOR0;
#endif
//WorldPos + Fog
#if defined(MK_POS_WORLD) || defined(MK_FOG)
float4 positionWorld : TEXCOORD1; //posWorld XYZ Fog W
#endif
#ifdef MK_NORMAL
TBN_TYPE normalWorld : TEXCOORD2;
#endif
#ifdef MK_LIT
#if defined(MK_TBN)
TBN_TYPE tangentWorld : TEXCOORD8;
TBN_TYPE bitangentWorld : TEXCOORD9;
#endif
//Interplators 5,6,7 + C1 are reserved for lighting stuff
#endif
#ifdef MK_BARYCENTRIC_POS_CLIP
float4 positionClip : TEXCOORD3;
#endif
#ifdef MK_POS_NULL_CLIP
float4 nullClip : TEXCOORD4;
#endif
#ifdef MK_FLIPBOOK
float3 flipbookUV : TEXCOORD10;
#endif
#ifdef USE_APV_PROBE_OCCLUSION
float4 probeOcclusion : TEXCOORD11;
#endif
UNITY_VERTEX_INPUT_INSTANCE_ID
UNITY_VERTEX_OUTPUT_STEREO
};
#endif