mirror of
https://github.com/muskit/H3VR-TNH-Quality-of-Life-Improvements.git
synced 2026-06-03 04:34:26 -07:00
Initial commit
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
// Alloy Physical Shader Framework
|
||||
// Copyright 2013-2017 RUST LLC.
|
||||
// http://www.alloy.rustltd.com/
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// @file ReflectionProbe.cginc
|
||||
/// @brief Deferred reflection probe pass vertex & fragment shaders.
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef ALLOY_SHADERS_DEFERRED_REFLECTION_PROBE_CGINC
|
||||
#define ALLOY_SHADERS_DEFERRED_REFLECTION_PROBE_CGINC
|
||||
|
||||
#define A_INDIRECT_LIGHTING_PASS
|
||||
|
||||
#include "Assets/Alloy/Shaders/Framework/Deferred.cginc"
|
||||
|
||||
unity_v2f_deferred aMainVertexShader(
|
||||
float4 vertex : POSITION,
|
||||
float3 normal : NORMAL)
|
||||
{
|
||||
return vert_deferred(vertex, normal);
|
||||
}
|
||||
|
||||
half4 aMainFragmentShader(
|
||||
unity_v2f_deferred i) : SV_Target
|
||||
{
|
||||
UnityGIInput d;
|
||||
ASurface s = aDeferredSurface(i);
|
||||
float blendDistance = unity_SpecCube1_ProbePosition.w; // will be set to blend distance for this probe
|
||||
|
||||
d.worldPos = s.positionWorld;
|
||||
d.worldViewDir = s.viewDirWorld; // ???
|
||||
d.probeHDR[0] = unity_SpecCube0_HDR;
|
||||
|
||||
#ifdef UNITY_SPECCUBE_BOX_PROJECTION
|
||||
d.probePosition[0] = unity_SpecCube0_ProbePosition;
|
||||
d.boxMin[0].xyz = unity_SpecCube0_BoxMin - float4(blendDistance,blendDistance,blendDistance,0);
|
||||
d.boxMin[0].w = 1; // 1 in .w allow to disable blending in UnityGI_IndirectSpecular call
|
||||
d.boxMax[0].xyz = unity_SpecCube0_BoxMax + float4(blendDistance,blendDistance,blendDistance,0);
|
||||
#endif
|
||||
|
||||
Unity_GlossyEnvironmentData g;
|
||||
AIndirect ind = aNewIndirect();
|
||||
|
||||
g.roughness = s.roughness;
|
||||
g.reflUVW = s.reflectionVectorWorld;
|
||||
ind.specular = UnityGI_IndirectSpecular(d, 1.0h, g);
|
||||
|
||||
// Calculate falloff value, so reflections on the edges of the probe would gradually blend to previous reflection.
|
||||
// Also this ensures that pixels not located in the reflection probe AABB won't
|
||||
// accidentally pick up reflections from this probe.
|
||||
half3 distance = aDistanceFromAabb(s.positionWorld, unity_SpecCube0_BoxMin.xyz, unity_SpecCube0_BoxMax.xyz);
|
||||
half falloff = saturate(1.0 - length(distance) / blendDistance);
|
||||
|
||||
return half4(aIndirectLighting(ind, s), falloff);
|
||||
}
|
||||
|
||||
#endif // ALLOY_SHADERS_DEFERRED_REFLECTION_PROBE_CGINC
|
||||
Reference in New Issue
Block a user