110 lines
3.3 KiB
HLSL
110 lines
3.3 KiB
HLSL
|
//////////////////////////////////////////////////////
|
|||
|
// MK Glow Downsample //
|
|||
|
// //
|
|||
|
// Created by Michael Kremmel //
|
|||
|
// www.michaelkremmel.de //
|
|||
|
// Copyright © 2021 All rights reserved. //
|
|||
|
//////////////////////////////////////////////////////
|
|||
|
#ifndef MK_GLOW_DOWNSAMPLE
|
|||
|
#define MK_GLOW_DOWNSAMPLE
|
|||
|
|
|||
|
#include "../Inc/Common.hlsl"
|
|||
|
|
|||
|
#ifdef MK_BLOOM
|
|||
|
UNIFORM_SAMPLER_AND_TEXTURE_2D(_BloomTex)
|
|||
|
#ifdef COMPUTE_SHADER
|
|||
|
UNIFORM_RWTEXTURE_2D(_BloomTargetTex)
|
|||
|
#else
|
|||
|
uniform float2 _BloomTex_TexelSize;
|
|||
|
#endif
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef MK_LENS_FLARE
|
|||
|
UNIFORM_SAMPLER_AND_TEXTURE_2D(_LensFlareTex)
|
|||
|
#ifdef COMPUTE_SHADER
|
|||
|
UNIFORM_RWTEXTURE_2D(_LensFlareTargetTex)
|
|||
|
#else
|
|||
|
uniform float2 _LensFlareTex_TexelSize;
|
|||
|
#endif
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef MK_GLARE
|
|||
|
#ifdef COMPUTE_SHADER
|
|||
|
#ifdef MK_GLARE_1
|
|||
|
UNIFORM_RWTEXTURE_2D(_Glare0TargetTex)
|
|||
|
#endif
|
|||
|
#ifdef MK_GLARE_2
|
|||
|
UNIFORM_RWTEXTURE_2D(_Glare1TargetTex)
|
|||
|
#endif
|
|||
|
#ifdef MK_GLARE_3
|
|||
|
UNIFORM_RWTEXTURE_2D(_Glare2TargetTex)
|
|||
|
#endif
|
|||
|
#ifdef MK_GLARE_4
|
|||
|
UNIFORM_RWTEXTURE_2D(_Glare3TargetTex)
|
|||
|
#endif
|
|||
|
#else
|
|||
|
uniform float2 _Glare0Tex_TexelSize;
|
|||
|
uniform float2 _ResolutionScale;
|
|||
|
|
|||
|
uniform half4 _GlareScattering; // 0 1 2 3
|
|||
|
uniform half4 _GlareDirection01; // 0 1
|
|||
|
uniform half4 _GlareDirection23; // 2 3
|
|||
|
uniform float4 _GlareOffset; // 0 1 2 3
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef MK_GLARE_1
|
|||
|
UNIFORM_SAMPLER_AND_TEXTURE_2D(_Glare0Tex)
|
|||
|
#endif
|
|||
|
#ifdef MK_GLARE_2
|
|||
|
UNIFORM_SAMPLER_AND_TEXTURE_2D(_Glare1Tex)
|
|||
|
#endif
|
|||
|
#ifdef MK_GLARE_3
|
|||
|
UNIFORM_SAMPLER_AND_TEXTURE_2D(_Glare2Tex)
|
|||
|
#endif
|
|||
|
#ifdef MK_GLARE_4
|
|||
|
UNIFORM_SAMPLER_AND_TEXTURE_2D(_Glare3Tex)
|
|||
|
#endif
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef COMPUTE_SHADER
|
|||
|
#define HEADER [numthreads(8,8,1)] void Downsample (uint2 id : SV_DispatchThreadID)
|
|||
|
#else
|
|||
|
#define HEADER FragmentOutputAuto frag (VertGeoOutputSimple o)
|
|||
|
#endif
|
|||
|
|
|||
|
HEADER
|
|||
|
{
|
|||
|
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(o);
|
|||
|
#ifndef COMPUTE_SHADER
|
|||
|
FragmentOutputAuto fO;
|
|||
|
INITIALIZE_STRUCT(FragmentOutputAuto, fO);
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef MK_BLOOM
|
|||
|
BLOOM_RENDER_TARGET = DownsampleHQ(PASS_TEXTURE_2D(_BloomTex, sampler_linear_clamp_BloomTex), BLOOM_UV, BLOOM_TEXEL_SIZE);
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef MK_LENS_FLARE
|
|||
|
LENS_FLARE_RENDER_TARGET = DownsampleMQ(PASS_TEXTURE_2D(_LensFlareTex, sampler_linear_clamp_LensFlareTex), LENS_FLARE_UV, LENS_FLARE_TEXEL_SIZE);
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef MK_GLARE
|
|||
|
#ifdef MK_GLARE_1
|
|||
|
GLARE0_RENDER_TARGET = DownsampleLineMQ(PASS_TEXTURE_2D(_Glare0Tex, sampler_linear_clamp_Glare0Tex), GLARE_UV, GLARE0_TEXEL_SIZE * RESOLUTION_SCALE, GLARE0_DIRECTION, GLARE0_OFFSET);
|
|||
|
#endif
|
|||
|
#ifdef MK_GLARE_2
|
|||
|
GLARE1_RENDER_TARGET = DownsampleLineMQ(PASS_TEXTURE_2D(_Glare1Tex, sampler_linear_clamp_Glare1Tex), GLARE_UV, GLARE0_TEXEL_SIZE * RESOLUTION_SCALE, GLARE1_DIRECTION, GLARE1_OFFSET);
|
|||
|
#endif
|
|||
|
#ifdef MK_GLARE_3
|
|||
|
GLARE2_RENDER_TARGET = DownsampleLineMQ(PASS_TEXTURE_2D(_Glare2Tex, sampler_linear_clamp_Glare2Tex), GLARE_UV, GLARE0_TEXEL_SIZE * RESOLUTION_SCALE, GLARE2_DIRECTION, GLARE2_OFFSET);
|
|||
|
#endif
|
|||
|
#ifdef MK_GLARE_4
|
|||
|
GLARE3_RENDER_TARGET = DownsampleLineMQ(PASS_TEXTURE_2D(_Glare3Tex, sampler_linear_clamp_Glare3Tex), GLARE_UV, GLARE0_TEXEL_SIZE * RESOLUTION_SCALE, GLARE3_DIRECTION, GLARE3_OFFSET);
|
|||
|
#endif
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef COMPUTE_SHADER
|
|||
|
return fO;
|
|||
|
#endif
|
|||
|
}
|
|||
|
#endif
|