A game about forced loneliness, made by TACStudios
1#ifndef UNITY_MACROS_INCLUDED 2#define UNITY_MACROS_INCLUDED 3 4// Some shader compiler don't support to do multiple ## for concatenation inside the same macro, it require an indirection. 5// This is the purpose of this macro 6#define MERGE_NAME(X, Y) X##Y 7#define CALL_MERGE_NAME(X, Y) MERGE_NAME(X, Y) 8 9// These define are use to abstract the way we sample into a cubemap array. 10// Some platform don't support cubemap array so we fallback on 2D latlong 11#ifdef UNITY_NO_CUBEMAP_ARRAY 12#define TEXTURECUBE_ARRAY_ABSTRACT TEXTURE2D_ARRAY 13#define TEXTURECUBE_ARRAY_PARAM_ABSTRACT TEXTURE2D_ARRAY_PARAM 14#define TEXTURECUBE_ARRAY_ARGS_ABSTRACT TEXTURE2D_ARRAY_ARGS 15#define SAMPLE_TEXTURECUBE_ARRAY_LOD_ABSTRACT(textureName, samplerName, coord3, index, lod) SAMPLE_TEXTURE2D_ARRAY_LOD(textureName, samplerName, DirectionToLatLongCoordinate(coord3), index, lod) 16#else 17#define TEXTURECUBE_ARRAY_ABSTRACT TEXTURECUBE_ARRAY 18#define TEXTURECUBE_ARRAY_PARAM_ABSTRACT TEXTURECUBE_ARRAY_PARAM 19#define TEXTURECUBE_ARRAY_ARGS_ABSTRACT TEXTURECUBE_ARRAY_ARGS 20#define SAMPLE_TEXTURECUBE_ARRAY_LOD_ABSTRACT(textureName, samplerName, coord3, index, lod) SAMPLE_TEXTURECUBE_ARRAY_LOD(textureName, samplerName, coord3, index, lod) 21#endif 22 23#define PI 3.14159265358979323846 24#define TWO_PI 6.28318530717958647693 25#define FOUR_PI 12.5663706143591729538 26#define INV_PI 0.31830988618379067154 27#define INV_TWO_PI 0.15915494309189533577 28#define INV_FOUR_PI 0.07957747154594766788 29#define HALF_PI 1.57079632679489661923 30#define INV_HALF_PI 0.63661977236758134308 31#define LOG2_E 1.44269504088896340736 32#define INV_SQRT2 0.70710678118654752440 33#define PI_DIV_FOUR 0.78539816339744830961 34 35#define MILLIMETERS_PER_METER 1000 36#define METERS_PER_MILLIMETER rcp(MILLIMETERS_PER_METER) 37#define CENTIMETERS_PER_METER 100 38#define METERS_PER_CENTIMETER rcp(CENTIMETERS_PER_METER) 39 40#define FLT_INF asfloat(0x7F800000) 41#define FLT_NAN asfloat(0xffc00000) 42#define FLT_EPS 5.960464478e-8 // 2^-24, machine epsilon: 1 + EPS = 1 (half of the ULP for 1.0f) 43#define FLT_MIN 1.175494351e-38 // Minimum normalized positive floating-point number 44#ifndef FLT_MAX 45#define FLT_MAX 3.402823466e+38 // Maximum representable floating-point number 46#endif 47#define HALF_EPS 4.8828125e-4 // 2^-11, machine epsilon: 1 + EPS = 1 (half of the ULP for 1.0f) 48#define HALF_MIN 6.103515625e-5 // 2^-14, the same value for 10, 11 and 16-bit: https://www.khronos.org/opengl/wiki/Small_Float_Formats 49#define HALF_MIN_SQRT 0.0078125 // 2^-7 == sqrt(HALF_MIN), useful for ensuring HALF_MIN after x^2 50#define HALF_MAX 65504.0 51#define UINT_MAX 0xFFFFFFFFu 52#define INT_MAX 0x7FFFFFFF 53 54#define GENERATE_INT_FLOAT_1_ARG(FunctionName, Parameter1, FunctionBody) \ 55 float FunctionName(float Parameter1) { FunctionBody; } \ 56 uint FunctionName(uint Parameter1) { FunctionBody; } \ 57 int FunctionName(int Parameter1) { FunctionBody; } 58 59#define TEMPLATE_1_FLT(FunctionName, Parameter1, FunctionBody) \ 60 float FunctionName(float Parameter1) { FunctionBody; } \ 61 float2 FunctionName(float2 Parameter1) { FunctionBody; } \ 62 float3 FunctionName(float3 Parameter1) { FunctionBody; } \ 63 float4 FunctionName(float4 Parameter1) { FunctionBody; } 64 65#define TEMPLATE_1_FLT_HALF(FunctionName, Parameter1, FunctionBody) \ 66 min16float FunctionName(min16float Parameter1) { FunctionBody; } \ 67 min16float2 FunctionName(min16float2 Parameter1) { FunctionBody; } \ 68 min16float3 FunctionName(min16float3 Parameter1) { FunctionBody; } \ 69 min16float4 FunctionName(min16float4 Parameter1) { FunctionBody; } \ 70 float FunctionName(float Parameter1) { FunctionBody; } \ 71 float2 FunctionName(float2 Parameter1) { FunctionBody; } \ 72 float3 FunctionName(float3 Parameter1) { FunctionBody; } \ 73 float4 FunctionName(float4 Parameter1) { FunctionBody; } 74 75#define TEMPLATE_1_HALF(FunctionName, Parameter1, FunctionBody) \ 76 min16float FunctionName(min16float Parameter1) { FunctionBody; } \ 77 min16float2 FunctionName(min16float2 Parameter1) { FunctionBody; } \ 78 min16float3 FunctionName(min16float3 Parameter1) { FunctionBody; } \ 79 min16float4 FunctionName(min16float4 Parameter1) { FunctionBody; } 80 81#define TEMPLATE_1_INT(FunctionName, Parameter1, FunctionBody) \ 82 int FunctionName(int Parameter1) { FunctionBody; } \ 83 int2 FunctionName(int2 Parameter1) { FunctionBody; } \ 84 int3 FunctionName(int3 Parameter1) { FunctionBody; } \ 85 int4 FunctionName(int4 Parameter1) { FunctionBody; } \ 86 uint FunctionName(uint Parameter1) { FunctionBody; } \ 87 uint2 FunctionName(uint2 Parameter1) { FunctionBody; } \ 88 uint3 FunctionName(uint3 Parameter1) { FunctionBody; } \ 89 uint4 FunctionName(uint4 Parameter1) { FunctionBody; } 90 91#define TEMPLATE_2_FLT(FunctionName, Parameter1, Parameter2, FunctionBody) \ 92 float FunctionName(float Parameter1, float Parameter2) { FunctionBody; } \ 93 float2 FunctionName(float2 Parameter1, float2 Parameter2) { FunctionBody; } \ 94 float3 FunctionName(float3 Parameter1, float3 Parameter2) { FunctionBody; } \ 95 float4 FunctionName(float4 Parameter1, float4 Parameter2) { FunctionBody; } 96 97#define TEMPLATE_2_FLT_HALF(FunctionName, Parameter1, Parameter2, FunctionBody) \ 98 min16float FunctionName(min16float Parameter1, min16float Parameter2) { FunctionBody; } \ 99 min16float2 FunctionName(min16float2 Parameter1, min16float2 Parameter2) { FunctionBody; } \ 100 min16float3 FunctionName(min16float3 Parameter1, min16float3 Parameter2) { FunctionBody; } \ 101 min16float4 FunctionName(min16float4 Parameter1, min16float4 Parameter2) { FunctionBody; } \ 102 float FunctionName(float Parameter1, float Parameter2) { FunctionBody; } \ 103 float2 FunctionName(float2 Parameter1, float2 Parameter2) { FunctionBody; } \ 104 float3 FunctionName(float3 Parameter1, float3 Parameter2) { FunctionBody; } \ 105 float4 FunctionName(float4 Parameter1, float4 Parameter2) { FunctionBody; } 106 107#define TEMPLATE_2_HALF(FunctionName, Parameter1, Parameter2, FunctionBody) \ 108 min16float FunctionName(min16float Parameter1, min16float Parameter2) { FunctionBody; } \ 109 min16float2 FunctionName(min16float2 Parameter1, min16float2 Parameter2) { FunctionBody; } \ 110 min16float3 FunctionName(min16float3 Parameter1, min16float3 Parameter2) { FunctionBody; } \ 111 min16float4 FunctionName(min16float4 Parameter1, min16float4 Parameter2) { FunctionBody; } 112 113#define TEMPLATE_2_INT(FunctionName, Parameter1, Parameter2, FunctionBody) \ 114 int FunctionName(int Parameter1, int Parameter2) { FunctionBody; } \ 115 int2 FunctionName(int2 Parameter1, int2 Parameter2) { FunctionBody; } \ 116 int3 FunctionName(int3 Parameter1, int3 Parameter2) { FunctionBody; } \ 117 int4 FunctionName(int4 Parameter1, int4 Parameter2) { FunctionBody; } \ 118 uint FunctionName(uint Parameter1, uint Parameter2) { FunctionBody; } \ 119 uint2 FunctionName(uint2 Parameter1, uint2 Parameter2) { FunctionBody; } \ 120 uint3 FunctionName(uint3 Parameter1, uint3 Parameter2) { FunctionBody; } \ 121 uint4 FunctionName(uint4 Parameter1, uint4 Parameter2) { FunctionBody; } 122 123#define TEMPLATE_3_FLT(FunctionName, Parameter1, Parameter2, Parameter3, FunctionBody) \ 124 float FunctionName(float Parameter1, float Parameter2, float Parameter3) { FunctionBody; } \ 125 float2 FunctionName(float2 Parameter1, float2 Parameter2, float2 Parameter3) { FunctionBody; } \ 126 float3 FunctionName(float3 Parameter1, float3 Parameter2, float3 Parameter3) { FunctionBody; } \ 127 float4 FunctionName(float4 Parameter1, float4 Parameter2, float4 Parameter3) { FunctionBody; } 128 129#define TEMPLATE_3_FLT_HALF(FunctionName, Parameter1, Parameter2, Parameter3, FunctionBody) \ 130 min16float FunctionName(min16float Parameter1, min16float Parameter2, min16float Parameter3) { FunctionBody; } \ 131 min16float2 FunctionName(min16float2 Parameter1, min16float2 Parameter2, min16float2 Parameter3) { FunctionBody; } \ 132 min16float3 FunctionName(min16float3 Parameter1, min16float3 Parameter2, min16float3 Parameter3) { FunctionBody; } \ 133 min16float4 FunctionName(min16float4 Parameter1, min16float4 Parameter2, min16float4 Parameter3) { FunctionBody; } \ 134 float FunctionName(float Parameter1, float Parameter2, float Parameter3) { FunctionBody; } \ 135 float2 FunctionName(float2 Parameter1, float2 Parameter2, float2 Parameter3) { FunctionBody; } \ 136 float3 FunctionName(float3 Parameter1, float3 Parameter2, float3 Parameter3) { FunctionBody; } \ 137 float4 FunctionName(float4 Parameter1, float4 Parameter2, float4 Parameter3) { FunctionBody; } 138 139#define TEMPLATE_3_HALF(FunctionName, Parameter1, Parameter2, Parameter3, FunctionBody) \ 140 min16float FunctionName(min16float Parameter1, min16float Parameter2, min16float Parameter3) { FunctionBody; } \ 141 min16float2 FunctionName(min16float2 Parameter1, min16float2 Parameter2, min16float2 Parameter3) { FunctionBody; } \ 142 min16float3 FunctionName(min16float3 Parameter1, min16float3 Parameter2, min16float3 Parameter3) { FunctionBody; } \ 143 min16float4 FunctionName(min16float4 Parameter1, min16float4 Parameter2, min16float4 Parameter3) { FunctionBody; } 144 145#define TEMPLATE_3_INT(FunctionName, Parameter1, Parameter2, Parameter3, FunctionBody) \ 146 int FunctionName(int Parameter1, int Parameter2, int Parameter3) { FunctionBody; } \ 147 int2 FunctionName(int2 Parameter1, int2 Parameter2, int2 Parameter3) { FunctionBody; } \ 148 int3 FunctionName(int3 Parameter1, int3 Parameter2, int3 Parameter3) { FunctionBody; } \ 149 int4 FunctionName(int4 Parameter1, int4 Parameter2, int4 Parameter3) { FunctionBody; } \ 150 uint FunctionName(uint Parameter1, uint Parameter2, uint Parameter3) { FunctionBody; } \ 151 uint2 FunctionName(uint2 Parameter1, uint2 Parameter2, uint2 Parameter3) { FunctionBody; } \ 152 uint3 FunctionName(uint3 Parameter1, uint3 Parameter2, uint3 Parameter3) { FunctionBody; } \ 153 uint4 FunctionName(uint4 Parameter1, uint4 Parameter2, uint4 Parameter3) { FunctionBody; } 154 155#define TEMPLATE_SWAP(FunctionName) \ 156 void FunctionName(inout min16float a, inout min16float b) { min16float t = a; a = b; b = t; } \ 157 void FunctionName(inout min16float2 a, inout min16float2 b) { min16float2 t = a; a = b; b = t; } \ 158 void FunctionName(inout min16float3 a, inout min16float3 b) { min16float3 t = a; a = b; b = t; } \ 159 void FunctionName(inout min16float4 a, inout min16float4 b) { min16float4 t = a; a = b; b = t; } \ 160 void FunctionName(inout float a, inout float b) { float t = a; a = b; b = t; } \ 161 void FunctionName(inout float2 a, inout float2 b) { float2 t = a; a = b; b = t; } \ 162 void FunctionName(inout float3 a, inout float3 b) { float3 t = a; a = b; b = t; } \ 163 void FunctionName(inout float4 a, inout float4 b) { float4 t = a; a = b; b = t; } \ 164 void FunctionName(inout int a, inout int b) { int t = a; a = b; b = t; } \ 165 void FunctionName(inout int2 a, inout int2 b) { int2 t = a; a = b; b = t; } \ 166 void FunctionName(inout int3 a, inout int3 b) { int3 t = a; a = b; b = t; } \ 167 void FunctionName(inout int4 a, inout int4 b) { int4 t = a; a = b; b = t; } \ 168 void FunctionName(inout uint a, inout uint b) { uint t = a; a = b; b = t; } \ 169 void FunctionName(inout uint2 a, inout uint2 b) { uint2 t = a; a = b; b = t; } \ 170 void FunctionName(inout uint3 a, inout uint3 b) { uint3 t = a; a = b; b = t; } \ 171 void FunctionName(inout uint4 a, inout uint4 b) { uint4 t = a; a = b; b = t; } \ 172 void FunctionName(inout bool a, inout bool b) { bool t = a; a = b; b = t; } \ 173 void FunctionName(inout bool2 a, inout bool2 b) { bool2 t = a; a = b; b = t; } \ 174 void FunctionName(inout bool3 a, inout bool3 b) { bool3 t = a; a = b; b = t; } \ 175 void FunctionName(inout bool4 a, inout bool4 b) { bool4 t = a; a = b; b = t; } 176 177 178// MACRO from Legacy Untiy 179// Transforms 2D UV by scale/bias property 180#define TRANSFORM_TEX(tex, name) ((tex.xy) * name##_ST.xy + name##_ST.zw) 181#define GET_TEXELSIZE_NAME(name) (name##_TexelSize) 182 183#if UNITY_REVERSED_Z 184# define COMPARE_DEVICE_DEPTH_CLOSER(shadowMapDepth, zDevice) (shadowMapDepth > zDevice) 185# define COMPARE_DEVICE_DEPTH_CLOSEREQUAL(shadowMapDepth, zDevice) (shadowMapDepth >= zDevice) 186#else 187# define COMPARE_DEVICE_DEPTH_CLOSER(shadowMapDepth, zDevice) (shadowMapDepth < zDevice) 188# define COMPARE_DEVICE_DEPTH_CLOSEREQUAL(shadowMapDepth, zDevice) (shadowMapDepth <= zDevice) 189#endif 190 191#endif // UNITY_MACROS_INCLUDED