BITFALL/Assets/Plugins/_MK/MKGlow/Shaders/Inc/Downsample.hlsl

110 lines
3.3 KiB
HLSL
Raw Normal View History

2023-10-20 19:31:12 +08:00
//////////////////////////////////////////////////////
// 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