์•ˆ๋…•ํ•˜์„ธ์š”.

28afc229f79c28a8699fe8b115ef046c0e6e260c


์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋œจ๋Š” ์ค‘์ธ๋ฐ...

3eb5d122eac52be87eb1d19528d527037ba2b2f14695
์ฝ”๋“œ๋Š” ์œ„์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณต๋ถ™ ์›ํ•˜์‹œ๋ฉด..

#ifndef CUSTOM_SHADOWS_INCLUDED

#define CUSTOM_SHADOWS_INCLUDED

//#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Shadow/ShadowSamplingTent.hlsl"


#define MAX_SHADOWED_DIRECTIONAL_LIGHT_COUNT 4


TEXTURE2D_SHADOW(_DirectionalShadowAtlas);

#define SHADOW_SAMPLER sampler_linear_clamp_compare

SAMPLER_CMP(SHADOW_SAMPLER);


CBUFFER_START(_CustomShadows)

float4x4 _DirectionalShadowMatrices[MAX_SHADOWED_DIRECTIONAL_LIGHT_COUNT];

CBUFFER_END


float SampleDirectionalShadowAtlas(float3 positionSTS)

{

ย  ย  return SAMPLE_TEXTURE2D_SHADOW

ย  ย  (_DirectionalShadowAtlas, SHADOW_SAMPLER, positionSTS);

}


float GetDirectionalShadowAttenuation(DirectionalShadowData data, Surface surfaceWS)

{

ย  ย  if (data.strength <=0.0)

ย  ย  {

ย  ย  ย  ย  return 1.0;

ย  ย  }

ย  ย ย 

ย  ย  float3 positionSTS = mul(

ย  ย  ย  ย  _DirectionalShadowMatrices[data.tileIndex],

ย  ย  ย  ย  float4(surfaceWS.position, 1.0)

ย  ย  ).xyz;

ย  ย  float shadow = SampleDirectionalShadowAtlas(positionSTS);

ย  ย  return lerp(1.0, shadow, data.strength);

}

#endif

์ด๊ฑด๋ฐ ๊ฐˆํ”ผ๋ฅผ ๋ชป์žก๊ฒ ๋„ค์š”.


Shadows๋Š”ย 

01b4c416e4c12be87eb1d19528d527038685154324b9
์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Common.hlsl ํŒŒ์ผ์— SAMPLE_TEXTURE2D_SHADOW๋ฅผ includeํ•˜๋Š” ๋ถ€๋ถ„๋“ค์ด ์žˆ๋Š” ๊ฑด ํ™•์ธํ–ˆ๋Š”๋ฐ ์™œ ์•ˆ๋ ๊นŒ.. ์–ด๋””์„œ ์ž˜๋ชปํ•œ๊ฑธ๊นŒ ๊ฐˆํ”ผ๋ฅผ ๋ชป์žก๊ฒ ๋„ค์š”.

๋” ํ•„์š”ํ•˜์‹  ์ •๋ณด ์žˆ์œผ๋ฉด ์˜ฌ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.