Flatkit 추가 및 설정
This commit is contained in:
56
Assets/FlatKit/Demos/[Demo] Desert/Shaders/DesertPillar.hlsl
Normal file
56
Assets/FlatKit/Demos/[Demo] Desert/Shaders/DesertPillar.hlsl
Normal file
@@ -0,0 +1,56 @@
|
||||
#ifndef LINE_KIT_DEMOS_DESERT_PILLAR_INCLUDED
|
||||
#define LINE_KIT_DEMOS_DESERT_PILLAR_INCLUDED
|
||||
|
||||
#include "Noise/ClassicNoise3D.hlsl"
|
||||
|
||||
float Hash(float x) {
|
||||
float p = 1;
|
||||
#if defined(_TYPE_A)
|
||||
p = 43.5453;
|
||||
#endif
|
||||
return frac(sin(x) * p) * 10;
|
||||
}
|
||||
|
||||
void PillarColor_float(float2 UV, float3 ObjectPositionWS, float3 ObjectScale, float3 PositionWS, float3 NormalWS,
|
||||
float3 LightDirection, float LightAttenuation, out float3 Color) {
|
||||
float noise = 0;
|
||||
const float hash = Hash(ObjectPositionWS.x + ObjectPositionWS.y + ObjectPositionWS.z);
|
||||
const float3 p = (PositionWS + hash) / ObjectScale * _ScaleFactor;
|
||||
|
||||
#if defined(_TYPE_A)
|
||||
noise += ClassicNoise(p * _NoiseScale1 * 1.0) * 1.0;
|
||||
noise += ClassicNoise(p * _NoiseScale2 * 2.0) * 0.5;
|
||||
#elif defined(_TYPE_B)
|
||||
noise = ClassicNoise(p.y * 2 + atan(p.x / p.z) * 50 * _NoiseScale1);
|
||||
#elif defined(_TYPE_C)
|
||||
noise = ClassicNoise(p.y * _NoiseScale1.x +
|
||||
ClassicNoise((UV.x * _NoiseScale1.y *
|
||||
sin(p.y * _NoiseScale2.z)) * _NoiseScale2.x) *
|
||||
_NoiseScale2.y);
|
||||
#endif
|
||||
|
||||
const float section23 = step(_Distribution.x, noise);
|
||||
const float section3 = step(_Distribution.y, noise);
|
||||
Color = lerp(_Color1, lerp(_Color2, _Color3, section3), section23).rgb;
|
||||
|
||||
// Apply _ColorTop to the faces pointing up.
|
||||
const float3 up = float3(0, 1, 0);
|
||||
const float isTop = step(1 - _TopSize, dot(up, NormalWS));
|
||||
Color = lerp(Color, _ColorTop, isTop);
|
||||
|
||||
const float shadowStrength = _ShadowStrength;
|
||||
const float shadowSize = _ShadowSize;
|
||||
const float shadowSharpness = _ShadowSharpness;
|
||||
const float3 shadowDirection = normalize(-LightDirection + NormalWS * (1 - shadowSize));
|
||||
float shadow = saturate(dot(shadowDirection, NormalWS));
|
||||
const float shadowBand = (1.0 - shadowSharpness) * 0.5;
|
||||
shadow = smoothstep(shadowSize - shadowBand, shadowSize + shadowBand, shadow);
|
||||
shadow = lerp(1, shadow, shadowStrength);
|
||||
shadow = min(shadow, LightAttenuation);
|
||||
shadow = 1 - shadow;
|
||||
|
||||
// Give shadow tint of _ShadowTint and blend it with the color.
|
||||
Color = lerp(Color, _ShadowTint.rgb, shadow * _ShadowTint.a);
|
||||
}
|
||||
|
||||
#endif // LINE_KIT_DEMOS_DESERT_PILLAR_INCLUDED
|
||||
Reference in New Issue
Block a user