#ifndef CORRUPTION_DEFINES_INCLUDED
#define CORRUPTION_DEFINES_INCLUDED

#include "UnityPBSLighting.cginc"
#include "Autolight.cginc"
#include "../Common/Utilities.cginc"
#include "../Common/Noise.cginc"
#include "../Common/Color.cginc"

UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture);
float4 _CameraDepthTexture_TexelSize;
float3 wPos;

sampler2D _StarTex;
samplerCUBE _CubemapTex;
float4 _Color, _RimColor;
float3 _CubemapRotation;
float2 _StarTexScale;
float _MaxRotation, _Threshold;
float _Radius, _RimWidth, _RimPower;
float _SimplexScale;
float _RimBrightness, _StarBrightness;
float _Rotation, _RotationSpeed;
float _NoiseSpeed;
uint _NoiseIterations, _StarIterations;
uint _TextureBlendMode;

struct appdata {
	float4 vertex : POSITION;
	float4 uv : TEXCOORD0;
	UNITY_VERTEX_INPUT_INSTANCE_ID
};

struct v2f{
	float4 pos : SV_POSITION;
	float4 uv : TEXCOORD0;
	float3 raycast : TEXCOORD1;
	float3 worldPos : TEXCOORD2;
	float3 objPos : TEXCOORD3;
	bool isReflection : TEXCOORD4;
	UNITY_VERTEX_INPUT_INSTANCE_ID 
	UNITY_VERTEX_OUTPUT_STEREO
};

struct Ray {
	float3 origin; // origin of ray
	float3 dir; // direction of ray (unit length assumed)
};

static const float4 kernel10[10] = {
	float4(0.1094615,0.5242077,0.4103162,0.5811607),
	float4(0.618497,0.7541848,0.7961841,0.5251553),
	float4(0.0268888,0.597996,0.6776286,0.8250506),
	float4(0.1856688,0.6066927,0.3694414,0.9334932),
	float4(0.0181179,0.7472348,0.6624749,0.1957627),
	float4(0.8664547,0.6637973,0.910411,0.6891307),
	float4(0.3513095,0.5644325,0.4566466,0.7382287),
	float4(0.7508639,0.6730916,0.2798718,0.3423366),
	float4(0.9299719,0.9815703,0.7703365,0.3945645),
	float4(0.0650494,0.3470043,0.1590463,0.772713)
};

static const float sphereDistances[10] = {
    1737000,
    1537000,
	1237000,
	1937000,
	2037000,
	1137000,
	1037000,
	2237000,
	2337000,
	937000
};

#include "CorruptionFunctions.cginc"

#endif