internal void GetRuntimeResources(ref ProbeReferenceVolume.RuntimeResources rr) { rr.L0 = m_Pool.TexL0; rr.L1_R = m_Pool.TexL1_R; rr.L1_G = m_Pool.TexL1_G; rr.L1_B = m_Pool.TexL1_B; }
internal void GetRuntimeResources(ref ProbeReferenceVolume.RuntimeResources rr) { // If we are pending an update of the actual compute buffer we do it here if (m_NeedUpdateIndexComputeBuffer) { UploadIndexData(); } rr.index = m_PhysicalIndexBuffer; }
internal void GetRuntimeResources(ref ProbeReferenceVolume.RuntimeResources rr) { rr.L0_L1rx = m_Pool.TexL0_L1rx; rr.L1_G_ry = m_Pool.TexL1_G_ry; rr.L1_B_rz = m_Pool.TexL1_B_rz; rr.L2_0 = m_Pool.TexL2_0; rr.L2_1 = m_Pool.TexL2_1; rr.L2_2 = m_Pool.TexL2_2; rr.L2_3 = m_Pool.TexL2_3; }
internal void GetRuntimeResources(ref ProbeReferenceVolume.RuntimeResources rr) { rr.L0_L1rx = m_Pool.TexL0_L1rx as RenderTexture; rr.L1_G_ry = m_Pool.TexL1_G_ry as RenderTexture; rr.L1_B_rz = m_Pool.TexL1_B_rz as RenderTexture; rr.L2_0 = m_Pool.TexL2_0 as RenderTexture; rr.L2_1 = m_Pool.TexL2_1 as RenderTexture; rr.L2_2 = m_Pool.TexL2_2 as RenderTexture; rr.L2_3 = m_Pool.TexL2_3 as RenderTexture; rr.Validity = m_Pool.TexValidity; }
internal void GetRuntimeResources(ref ProbeReferenceVolume.RuntimeResources rr) { rr.index = m_IndexBuffer; }
static void PerformDilation(ProbeReferenceVolume.Cell cell, ProbeDilationSettings settings) { InitDilationShaders(); DataForDilation data = new DataForDilation(cell, settings.dilationValidityThreshold); var cmd = CommandBufferPool.Get("Cell Dilation"); cmd.SetComputeBufferParam(dilationShader, dilationKernel, _ProbePositionsBuffer, data.positionBuffer); cmd.SetComputeBufferParam(dilationShader, dilationKernel, _OutputProbes, data.outputProbes); cmd.SetComputeBufferParam(dilationShader, dilationKernel, _NeedDilating, data.needDilatingBuffer); int probeCount = cell.probePositions.Length; cmd.SetComputeVectorParam(dilationShader, _DilationParameters, new Vector4(probeCount, settings.dilationValidityThreshold, settings.dilationDistance, ProbeReferenceVolume.instance.MinBrickSize())); cmd.SetComputeVectorParam(dilationShader, _DilationParameters2, new Vector4(settings.squaredDistWeighting ? 1 : 0, 0, 0, 0)); var refVolume = ProbeReferenceVolume.instance; ProbeReferenceVolume.RuntimeResources rr = refVolume.GetRuntimeResources(); bool validResources = rr.index != null && rr.L0_L1rx != null && rr.L1_G_ry != null && rr.L1_B_rz != null; if (validResources) { cmd.SetGlobalBuffer(_APVResIndex, rr.index); cmd.SetGlobalBuffer(_APVResCellIndices, rr.cellIndices); cmd.SetGlobalTexture(_APVResL0_L1Rx, rr.L0_L1rx); cmd.SetGlobalTexture(_APVResL1G_L1Ry, rr.L1_G_ry); cmd.SetGlobalTexture(_APVResL1B_L1Rz, rr.L1_B_rz); cmd.SetGlobalTexture(_APVResL2_0, rr.L2_0); cmd.SetGlobalTexture(_APVResL2_1, rr.L2_1); cmd.SetGlobalTexture(_APVResL2_2, rr.L2_2); cmd.SetGlobalTexture(_APVResL2_3, rr.L2_3); } ProbeVolumeShadingParameters parameters; parameters.normalBias = 0; parameters.viewBias = 0; parameters.scaleBiasByMinDistanceBetweenProbes = false; parameters.samplingNoise = 0; parameters.weight = 1f; parameters.leakReductionMode = APVLeakReductionMode.None; parameters.occlusionWeightContribution = 0.0f; parameters.minValidNormalWeight = 0.0f; parameters.frameIndexForNoise = 0; parameters.reflNormalizationLowerClamp = 0.1f; parameters.reflNormalizationUpperClamp = 1.0f; ProbeReferenceVolume.instance.UpdateConstantBuffer(cmd, parameters); int groupCount = (probeCount + 63) / 64; cmd.DispatchCompute(dilationShader, dilationKernel, groupCount, 1, 1); cmd.WaitAllAsyncReadbackRequests(); Graphics.ExecuteCommandBuffer(cmd); data.ExtractDilatedProbes(); data.Dispose(); }