Files
VR-GAME/Library/Artifacts/12/124d11780d225ba3553c8cc428afe218

209 lines
19 KiB
Plaintext
Raw Normal View History

2026-04-25 12:12:07 +07:00
,Mp,@0.0.0<00><><EFBFBD><EFBFBD><00><00><><EFBFBD> x2<78><32>%<25>Qyb<79> <20>!y3<00>7<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00>E<00> <00><00>,<00>.<00>5<00>>a<00> <00><00>,<00>.<00>5<00><00><00>r<00> <00><00>, <00>.<00>5
<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00> Q<00>j<00><00><00>S<00><><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><01><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><01>e<00><00><><EFBFBD><EFBFBD><EFBFBD><01>H<00>{<00><><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00>H<00><><00><><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00>H<00><><00><><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00>y<00>
<00> <00><00>,!<00>.<00>5"<00><00><><00><><EFBFBD><EFBFBD>#@1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>$<00><00><00>%.<00>j<00>&H<00><><00><><EFBFBD><EFBFBD>'<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>(@<00><00><00>)Q<00>j<00>*H<00><><00><><EFBFBD><EFBFBD>+<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>,@<00><00><00>-Q<00>j<00>.H<00><><00><><EFBFBD><EFBFBD>/<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>0@<00><00><00>1Q<00>j<00>2ComputeShaderImporterPPtr<EditorExtension>m_FileIDm_PathIDPPtr<PrefabInstance>m_ExternalObjectsSourceAssetIdentifiertypeassemblynamem_UsedFileIDsm_UserDatam_AssetBundleNamem_AssetBundleVariantH<00><>Ğ<EFBFBD>-Z<><58><D7AA>a<EFBFBD>4]<5D>=7<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00>E<00> <00><00>$<00>.<00>-<00>6a<00> <00><00>$<00>.<00>-<00><00><00>r<00> <00><00>$ <00>.<00>-
<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00> Q<00>j<00><00><00>K<00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><00>Tj<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00>q<00><00><><00><00><><00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><00>H<00><><00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> Q<00>j<00><00><00><><00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> <00>j<00><><EFBFBD><EFBFBD><EFBFBD> <00>
<00><00><><00><><EFBFBD><EFBFBD>!<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>"@ <00><00><00># <00><00>j<00>$
<00><00><><00><><EFBFBD><EFBFBD>%<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>&<00> <00><00><00>' <00>j<00><><EFBFBD><EFBFBD><EFBFBD>(<00> H<00><><00><><EFBFBD><EFBFBD>)<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>*@<00><00><00>+Q<00>j<00>, H<00><00><><EFBFBD><EFBFBD>-<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>.@<00><00><00>/Q<00>j<00>0 <00><00>1 <00><00>2 <00><00>*3 <00><00>74
<00><00>?<00><><EFBFBD><EFBFBD>5<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>6<00> <00><00><00>7 <00>j<00><><EFBFBD><EFBFBD><EFBFBD>8<00> H<00><><00><><EFBFBD><EFBFBD>9<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>:@<00><00><00>;Q<00>j<00>< H<00><00><><EFBFBD><EFBFBD>=<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>>@<00><00><00>?Q<00>j<00>@ <00><00>A <00><00>B <00><00>*C <00><00>7D
<00><00>H<00><><EFBFBD><EFBFBD>E<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>F@ <00><00><00>G Xj<00>H <00><00>tI <00><00>J
<00><00>|<00><><EFBFBD><EFBFBD>K<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>L<00> <00><00><00>M <00>j<00><><EFBFBD><EFBFBD><EFBFBD>N<00> H<00><><00><><EFBFBD><EFBFBD>O<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>P@<00><00><00>QQ<00>j<00>R H<00><00><><EFBFBD><EFBFBD>S<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>T@<00><00><00>UQ<00>j<00>V <00><00>W <00><00>X <00><00>*Y <00><00>7Z
<00><00><><00><><EFBFBD><EFBFBD>[<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>\<00> <00><00><00>] <00>j<00><><EFBFBD><EFBFBD><EFBFBD>^<00> H<00><><00><><EFBFBD><EFBFBD>_<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>`@<00><00><00>aQ<00>j<00>b H<00><00><><EFBFBD><EFBFBD>c<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>d@<00><00><00>eQ<00>j<00>f <00><00>g <00><00>h <00><00>*i <00><00>7j
<00><00><><00><><EFBFBD><EFBFBD>k<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>l@ <00><00><00>m <00><00>j<00>n
;<00><><00><><EFBFBD><EFBFBD>o 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>p <00><00><00>q <00><00>j<00>r
.<00><>s
<00><00><><00><><EFBFBD><EFBFBD>t<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>u<00> <00><00><00>v H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>w<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>x@<00><00><00>yQ<00>j<00>z
L<00><>{@<00><00><><00><><EFBFBD><EFBFBD>|<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>}<00> <00><00><00>~ <00>j<00><><EFBFBD><EFBFBD><EFBFBD><00>
H<00><><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00>
<00><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00><00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00><00><00>#<00><00><00>,<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> 3j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>
H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00>F<00>
<00><00>K<00>
<00><00>R<00>
<00><00>\<00>
<00><00>e<00>L<00>n<00>@<00><00><><00>L<00><><00>@<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00><><00><00><00><00><00><00><00><00><00><00><00><00>(<00>H<00>6<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00>H<00>E<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00>H<00>L<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00><00><00>W<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>H<00>
<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00><00><00>d<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00>.<00>s<00><00><00><><00><00><00><><00><00><00><><00><00><00><><00><00><00><><00><00><00><><00><00><00><><00><00><00><><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>H<00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00>H<00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00>H<00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00><00><00><><00><00><00>#<00>L<00>(<00>L<00>0<00>@ComputeShaderPPtr<EditorExtension>m_FileIDm_PathIDPPtr<PrefabInstance>variantsComputeShaderPlatformVarianttargetRenderertargetLevelkernelsComputeShaderKernelParentnameuniqueVariantsComputeShaderKernelcbVariantIndicescbsComputeShaderResourcegeneratedNamebindPointsamplerBindPointtexDimensionresTypetexturesbuiltinSamplersComputeShaderBuiltinSamplersamplerinBuffersoutBufferscodethreadGroupSizerequirementskeywordsisCompiledvariantIndicesglobalKeywordslocalKeywordsdynamicKeywordsconstantBuffersComputeShaderCBbyteSizeparamsComputeShaderParamtypeoffsetarraySizerowCountcolCountresourcesResolvedcompilerPlatformneedsReflectionDataComputeShaderCompilationContextm_CompilationContextBuildTargetSelectionbuildTargetplatformsubTargetextendedPlatformisEditorplatformGroupsourceFileNamesourcesourceFilekernelMacrosprunedKeywordscompilationFlagssupportedAPIsuseDxcAPIsneverUseDxcAPIsincludeHash0includeHash1includeHash2includeHash3buildTargetAPIMaskerrorsShaderErrormessagemessageDetailsfilelinewarningruntimeErrorH<00>mP<00> <00>mDebug VisualizeA<> VisualizeA<>
 VisualizeA<> VisualizeA<> VisualizeA<> Debug.compute3#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5
#pragma kernel Visualize
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/GBufferCommon.hlsl"
#include "Packages/com.unity.render-pipelines.core/Runtime/Sampling/Common.hlsl"
#include "Packages/com.unity.render-pipelines.core/Runtime/Sampling/Hashes.hlsl"
#include "SurfaceCacheCore/PatchUtil.hlsl"
#include "SurfaceCacheCore/RingBuffer.hlsl"
StructuredBuffer<uint> _RingConfigBuffer;
StructuredBuffer<SphericalHarmonics::RGBL1> _PatchIrradiances;
StructuredBuffer<uint> _PatchCellIndices;
StructuredBuffer<PatchUtil::PatchGeometry> _PatchGeometries;
StructuredBuffer<PatchUtil::PatchStatisticsSet> _PatchStatistics;
StructuredBuffer<uint> _CellPatchIndices;
StructuredBuffer<int3> _CascadeOffsets;
RWStructuredBuffer<PatchUtil::PatchCounterSet> _PatchCounterSets;
RWTexture2D<float4> _Result;
Texture2D<float> _ScreenDepths;
Texture2D<float3> _ScreenShadedNormals;
Texture2D<float3> _ScreenFlatNormals;
uint _RingConfigOffset;
uint _GridSize;
uint _CascadeCount;
float _VoxelMinSize;
uint _ViewMode;
uint _ShowSamplePosition;
float4x4 _ClipToWorldTransform;
uint _FrameIdx;
float3 _GridTargetPos;
uint _DummyBlackbox; // By using a uniform we force the compiler to not make any assumptions.
float3 IsActuallyNan(float3 val) {
return isnan(asfloat(_DummyBlackbox ^ asuint(val)));
}
float3 IsActuallyInf(float3 val) {
return isinf(asfloat(_DummyBlackbox ^ asuint(val)));
}
[numthreads(8,8,1)]
void Visualize(uint2 threadIdx : SV_DispatchThreadID)
{
uint2 screenSize;
_ScreenDepths.GetDimensions(screenSize.x, screenSize.y);
float3 output;
const float statusBarHeight = 0.05f;
if (float(threadIdx.y) / screenSize.y < statusBarHeight)
{
const RingBuffer::Config ringConfig = RingBuffer::LoadConfig(_RingConfigBuffer, _RingConfigOffset);
const uint patchIdx = float(threadIdx.x) / screenSize.x * patchCapacity;
if (RingBuffer::IsPositionUnused(ringConfig, patchIdx))
{
output = float3(1.0f, 1.0f, 1.0f);
}
else
{
if (_PatchCellIndices[patchIdx] == PatchUtil::invalidCellIndex)
output = float3(1.0f, 0.0f, 0.0f);
else
output = float3(0.0f, 1.0f, 0.0f);
}
}
else
{
const float ndcDepth = LoadNdcDepth(_ScreenDepths, threadIdx);
if (ndcDepth == invalidNdcDepth)
return;
const float2 uv = (float2(threadIdx.xy) + 0.5f) / float2(screenSize);
const float3 worldPos = ComputeWorldSpacePosition(uv, ndcDepth, _ClipToWorldTransform);
const float3 worldShadedNormal = UnpackGBufferNormal(_ScreenShadedNormals[threadIdx.xy]);
const float3 worldFlatNormal = _ScreenFlatNormals[threadIdx.xy];
PatchUtil::VolumePositionResolution posResolution = PatchUtil::ResolveVolumePosition(worldPos, _GridTargetPos, _GridSize, _CascadeOffsets, _CascadeCount, _VoxelMinSize);
output = float3(1.0f, 0.0f, 1.0f);
if (posResolution.isValid())
{
const uint directionIdx = PatchUtil::GetDirectionIndex(worldFlatNormal, PatchUtil::gridCellAngularResolution);
const uint3 positionStorageSpace = PatchUtil::ConvertGridSpaceToStorageSpace(posResolution.positionGridSpace, _GridSize, _CascadeOffsets[posResolution.cascadeIdx]);
const uint cellIdx = PatchUtil::GetCellIndex(posResolution.cascadeIdx, positionStorageSpace, directionIdx, _GridSize, PatchUtil::gridCellAngularResolution);
const uint patchIdx = _CellPatchIndices[cellIdx];
const bool hasPatch = (patchIdx != PatchUtil::invalidPatchIndex);
SphericalHarmonics::RGBL1 patchIrradiance = (SphericalHarmonics::RGBL1)0;
float3 patchPos = 0; // initializing value only to silence shader warning
if (hasPatch)
{
patchIrradiance = _PatchIrradiances[patchIdx];
patchPos = _PatchGeometries[patchIdx].position;
PatchUtil::WriteLastFrameAccess(_PatchCounterSets, patchIdx, _FrameIdx);
}
if (_ShowSamplePosition == 1 && hasPatch && length(worldPos - patchPos) < 0.12f)
{
output = 30.0f;
}
else if (_ViewMode == 0)
{
const float arbitraryBoost = 5.0f;
output = arbitraryBoost * float3(
UintToFloat01(LowBiasHash32(cellIdx, 0)),
UintToFloat01(LowBiasHash32(cellIdx, 1)),
UintToFloat01(LowBiasHash32(cellIdx, 2)));
}
else if (_ViewMode == 1)
{
if (hasPatch)
{
const float3 shEval = SphericalHarmonics::Eval(patchIrradiance, worldShadedNormal);
if (any(IsActuallyNan(shEval)))
output = float3(1, 0, 0);
else if (any(IsActuallyInf(shEval)))
output = float3(0, 1, 0);
else
output = max(0, shEval);
}
}
else if (_ViewMode == 2) // fast irradiance
{
if (hasPatch)
{
output = _PatchStatistics[patchIdx].mean * SphericalHarmonics::y0;
}
}
else if (_ViewMode == 3) // coefficient of variation
{
if (hasPatch)
{
const PatchUtil::PatchStatisticsSet stats = _PatchStatistics[patchIdx];
output = sqrt(stats.variance) / max(0.01f, stats.mean) / 20.0f;
}
}
else if (_ViewMode == 4)
{
if (hasPatch)
{
const PatchUtil::PatchStatisticsSet stats = _PatchStatistics[patchIdx];
float3 longIrradiance = _PatchIrradiances[patchIdx].l0;
float3 shortStdDev = sqrt(stats.variance);
float3 drift = abs(longIrradiance - stats.mean) / max(0.001f, shortStdDev);
output = drift * 0.25f;
}
}
else if (_ViewMode == 5)
{
if (hasPatch)
{
output = sqrt(_PatchStatistics[patchIdx].variance) * 0.1f;
}
}
else if (_ViewMode == 6)
{
if (hasPatch)
{
const float3 green = float3(0, 1, 0);
const float3 red = float3(1, 0, 0);
const PatchUtil::PatchCounterSet counterSet = _PatchCounterSets[patchIdx];
const uint updateCount = PatchUtil::GetUpdateCount(counterSet);
const float s = float(updateCount) / PatchUtil::updateMax;
const float3 redGreenMix = lerp(red, green, s);
const float3 checker = UintToFloat01(LowBiasHash32(cellIdx, 0)); // To make cells visible.
output = lerp(redGreenMix, checker, 0.25f);
}
}
else if (_ViewMode == 7)
{
output = worldFlatNormal * 0.5f + 0.5f;
}
}
}
_Result[threadIdx.xy] = float4(output, 1.0f);
}
cPackages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/Debug.compute Visualize<10><><00><><EFBFBD><EFBFBD>„"5<><35><EFBFBD><EFBFBD>6