public HDRenderPipelineInstance(HDRenderPipeline owner) { m_Owner = owner; m_CameraColorBuffer = Shader.PropertyToID("_CameraColorTexture"); m_CameraSubsurfaceBuffer = Shader.PropertyToID("_CameraSubsurfaceTexture"); m_CameraFilteringBuffer = Shader.PropertyToID("_CameraFilteringBuffer"); m_CameraDepthStencilBuffer = Shader.PropertyToID("_CameraDepthTexture"); m_CameraStencilBuffer = Shader.PropertyToID("_CameraStencilTexture"); m_CameraColorBufferRT = new RenderTargetIdentifier(m_CameraColorBuffer); m_CameraSubsurfaceBufferRT = new RenderTargetIdentifier(m_CameraSubsurfaceBuffer); m_CameraFilteringBufferRT = new RenderTargetIdentifier(m_CameraFilteringBuffer); m_CameraDepthStencilBufferRT = new RenderTargetIdentifier(m_CameraDepthStencilBuffer); m_CameraStencilBufferRT = new RenderTargetIdentifier(m_CameraStencilBuffer); m_DebugViewMaterialGBuffer = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/DebugViewMaterialGBuffer"); m_CombineSubsurfaceScattering = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/CombineSubsurfaceScattering"); m_DebugDisplayShadowMap = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/DebugDisplayShadowMap"); m_ShadowPass = new ShadowRenderPass(owner.shadowSettings); // Init Gbuffer description m_gbufferManager.gbufferCount = m_LitRenderLoop.GetMaterialGBufferCount(); RenderTextureFormat[] RTFormat; RenderTextureReadWrite[] RTReadWrite; m_LitRenderLoop.GetMaterialGBufferDescription(out RTFormat, out RTReadWrite); for (int gbufferIndex = 0; gbufferIndex < m_gbufferManager.gbufferCount; ++gbufferIndex) { m_gbufferManager.SetBufferDescription(gbufferIndex, "_GBufferTexture" + gbufferIndex, RTFormat[gbufferIndex], RTReadWrite[gbufferIndex]); } m_VelocityBuffer = Shader.PropertyToID("_VelocityTexture"); if (ShaderConfig.s_VelocityInGbuffer == 1) { // If velocity is in GBuffer then it is in the last RT. Assign a different name to it. m_gbufferManager.SetBufferDescription(m_gbufferManager.gbufferCount, "_VelocityTexture", Builtin.RenderLoop.GetVelocityBufferFormat(), Builtin.RenderLoop.GetVelocityBufferReadWrite()); m_gbufferManager.gbufferCount++; } m_VelocityBufferRT = new RenderTargetIdentifier(m_VelocityBuffer); m_DistortionBuffer = Shader.PropertyToID("_DistortionTexture"); m_DistortionBufferRT = new RenderTargetIdentifier(m_DistortionBuffer); m_LitRenderLoop.Build(); if (owner.lightLoopProducer) { m_LightLoop = owner.lightLoopProducer.CreateLightLoop(); } if (m_LightLoop != null) { m_LightLoop.Build(owner.textureSettings); } m_SkyManager.skyParameters = owner.skyParametersToUse; }
public override void Build(RenderPipelineResources renderPipelineResources) { m_InitPreFGD = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/PreIntegratedFGD"); // For DisneyDiffuse integration values goes from (0.5 to 1.53125). GGX need 0 to 1. Use float format. m_PreIntegratedFGD = new RenderTexture(128, 128, 0, RenderTextureFormat.RGB111110Float, RenderTextureReadWrite.Linear); m_PreIntegratedFGD.filterMode = FilterMode.Bilinear; m_PreIntegratedFGD.wrapMode = TextureWrapMode.Clamp; m_PreIntegratedFGD.hideFlags = HideFlags.DontSave; m_PreIntegratedFGD.Create(); m_LtcData = new Texture2DArray(k_LtcLUTResolution, k_LtcLUTResolution, 3, TextureFormat.RGBAHalf, false /*mipmap*/, true /* linear */) { hideFlags = HideFlags.HideAndDontSave, wrapMode = TextureWrapMode.Clamp, filterMode = FilterMode.Bilinear }; LoadLUT(m_LtcData, 0, TextureFormat.RGBAHalf, s_LtcGGXMatrixData); LoadLUT(m_LtcData, 1, TextureFormat.RGBAHalf, s_LtcDisneyDiffuseMatrixData); // TODO: switch to RGBA64 when it becomes available. LoadLUT(m_LtcData, 2, TextureFormat.RGBAHalf, s_LtcGGXMagnitudeData, s_LtcGGXFresnelData, s_LtcDisneyDiffuseMagnitudeData); m_LtcData.Apply(); m_isInit = false; }
public void Build() { // Create unititialized. Lazy initialization is performed later. m_iblFilterGgx = new IBLFilterGGX(); // TODO: We need to have an API to send our sky information to Enlighten. For now use a workaround through skybox/cubemap material... m_StandardSkyboxMaterial = Utilities.CreateEngineMaterial("Skybox/Cubemap"); m_CurrentUpdateTime = 0.0f; }
void InitializeSSS() { m_ProfileMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/DrawGaussianProfile"); m_TransmittanceMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/DrawTransmittanceGraph"); m_ProfileImages = new RenderTexture[SubsurfaceScatteringSettings.maxNumProfiles]; m_TransmittanceImages = new RenderTexture[SubsurfaceScatteringSettings.maxNumProfiles]; for (int i = 0; i < SubsurfaceScatteringSettings.maxNumProfiles; i++) { m_ProfileImages[i] = new RenderTexture(256, 256, 0, RenderTextureFormat.DefaultHDR); m_TransmittanceImages[i] = new RenderTexture(16, 256, 0, RenderTextureFormat.DefaultHDR); } }
void OnEnable() { m_FinalPassMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/FinalPass"); m_EyeAdaptationMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/EyeAdaptation"); m_EyeCompute = Resources.Load <ComputeShader>("EyeHistogram"); m_HistogramBuffer = new ComputeBuffer(k_HistogramBins, sizeof(uint)); m_AutoExposurePool[0] = new RenderTexture(1, 1, 0, RenderTextureFormat.RFloat); m_AutoExposurePool[1] = new RenderTexture(1, 1, 0, RenderTextureFormat.RFloat); m_FirstFrame = true; }
void OnEnable() { m_StdDev1 = serializedObject.FindProperty("stdDev1"); m_StdDev2 = serializedObject.FindProperty("stdDev2"); m_LerpWeight = serializedObject.FindProperty("lerpWeight"); m_TexturingMode = serializedObject.FindProperty("texturingMode"); m_Transmission = serializedObject.FindProperty("enableTransmission"); m_ThicknessRemap = serializedObject.FindProperty("thicknessRemap"); m_ProfileMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/DrawGaussianProfile"); m_TransmittanceMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/DrawTransmittanceGraph"); m_ProfileImage = new RenderTexture(256, 256, 0, RenderTextureFormat.DefaultHDR); m_TransmittanceImage = new RenderTexture(16, 256, 0, RenderTextureFormat.DefaultHDR); }
public void Initialize(ScriptableRenderContext context) { if (!m_ComputeGgxIblSampleDataCS) { m_ComputeGgxIblSampleDataCS = Resources.Load <ComputeShader>("ComputeGgxIblSampleData"); m_ComputeGgxIblSampleDataKernel = m_ComputeGgxIblSampleDataCS.FindKernel("ComputeGgxIblSampleData"); } if (!m_BuildProbabilityTablesCS && SupportMIS) { m_BuildProbabilityTablesCS = Resources.Load <ComputeShader>("BuildProbabilityTables"); m_ConditionalDensitiesKernel = m_BuildProbabilityTablesCS.FindKernel("ComputeConditionalDensities"); m_MarginalRowDensitiesKernel = m_BuildProbabilityTablesCS.FindKernel("ComputeMarginalRowDensities"); } if (!m_GgxConvolveMaterial) { m_GgxConvolveMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/GGXConvolve"); } if (!m_GgxIblSampleData) { m_GgxIblSampleData = new RenderTexture(k_GgxIblMaxSampleCount, k_GgxIblMipCountMinusOne, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); m_GgxIblSampleData.useMipMap = false; m_GgxIblSampleData.autoGenerateMips = false; m_GgxIblSampleData.enableRandomWrite = true; m_GgxIblSampleData.filterMode = FilterMode.Point; m_GgxIblSampleData.Create(); m_ComputeGgxIblSampleDataCS.SetTexture(m_ComputeGgxIblSampleDataKernel, "output", m_GgxIblSampleData); var cmd = new CommandBuffer() { name = "Compute GGX IBL Sample Data" }; cmd.DispatchCompute(m_ComputeGgxIblSampleDataCS, m_ComputeGgxIblSampleDataKernel, 1, 1, 1); context.ExecuteCommandBuffer(cmd); cmd.Dispose(); } }
// <<< Old SSS Model void OnEnable() { m_ScatteringDistance = serializedObject.FindProperty("scatteringDistance"); m_MaxRadius = serializedObject.FindProperty("m_MaxRadius"); m_ShapeParam = serializedObject.FindProperty("m_ShapeParam"); m_TransmissionTint = serializedObject.FindProperty("transmissionTint"); m_TexturingMode = serializedObject.FindProperty("texturingMode"); m_TransmissionMode = serializedObject.FindProperty("transmissionMode"); m_ThicknessRemap = serializedObject.FindProperty("thicknessRemap"); m_WorldScale = serializedObject.FindProperty("worldScale"); // Old SSS Model >>> m_ScatterDistance1 = serializedObject.FindProperty("scatterDistance1"); m_ScatterDistance2 = serializedObject.FindProperty("scatterDistance2"); m_LerpWeight = serializedObject.FindProperty("lerpWeight"); // <<< Old SSS Model // These shaders don't need to be reference by RenderPipelineResource as they are not use at runtime m_ProfileMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/DrawSssProfile"); m_TransmittanceMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/DrawTransmittanceGraph"); m_ProfileImage = new RenderTexture(256, 256, 0, RenderTextureFormat.DefaultHDR); m_TransmittanceImage = new RenderTexture(16, 256, 0, RenderTextureFormat.DefaultHDR); }
void OnEnable() { m_EyeAdaptationMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/EyeAdaptation"); m_FinalPassMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/FinalPass"); m_EyeCompute = Resources.Load <ComputeShader>("EyeHistogram"); m_HistogramBuffer = new ComputeBuffer(k_HistogramBins, sizeof(uint)); m_AutoExposurePool[0] = new RenderTexture(1, 1, 0, RenderTextureFormat.RFloat); m_AutoExposurePool[1] = new RenderTexture(1, 1, 0, RenderTextureFormat.RFloat); m_BlueNoiseTextures = new Texture2D[k_BlueNoiseTextureCount]; for (int i = 0; i < k_BlueNoiseTextureCount; i++) { m_BlueNoiseTextures[i] = Resources.Load <Texture2D>("Textures/LDR_LLL1_" + i); } m_TempRt = Shader.PropertyToID("_Source"); m_DefaultSpectralLut = Resources.Load <Texture2D>("Textures/SpectralLut_GreenPurple"); m_FirstFrame = true; }
public void Initialize(CommandBuffer cmd) { if (!m_ComputeGgxIblSampleDataCS) { m_ComputeGgxIblSampleDataCS = m_RenderPipelinesResources.computeGgxIblSampleData; m_ComputeGgxIblSampleDataKernel = m_ComputeGgxIblSampleDataCS.FindKernel("ComputeGgxIblSampleData"); } if (!m_BuildProbabilityTablesCS && SupportMIS) { m_BuildProbabilityTablesCS = m_RenderPipelinesResources.buildProbabilityTables; m_ConditionalDensitiesKernel = m_BuildProbabilityTablesCS.FindKernel("ComputeConditionalDensities"); m_MarginalRowDensitiesKernel = m_BuildProbabilityTablesCS.FindKernel("ComputeMarginalRowDensities"); } if (!m_GgxConvolveMaterial) { m_GgxConvolveMaterial = Utilities.CreateEngineMaterial(m_RenderPipelinesResources.GGXConvolve); } if (!m_GgxIblSampleData) { m_GgxIblSampleData = new RenderTexture(k_GgxIblMaxSampleCount, k_GgxIblMipCountMinusOne, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); m_GgxIblSampleData.useMipMap = false; m_GgxIblSampleData.autoGenerateMips = false; m_GgxIblSampleData.enableRandomWrite = true; m_GgxIblSampleData.filterMode = FilterMode.Point; m_GgxIblSampleData.Create(); m_ComputeGgxIblSampleDataCS.SetTexture(m_ComputeGgxIblSampleDataKernel, "output", m_GgxIblSampleData); using (new Utilities.ProfilingSample("Compute GGX IBL Sample Data", cmd)) { cmd.DispatchCompute(m_ComputeGgxIblSampleDataCS, m_ComputeGgxIblSampleDataKernel, 1, 1, 1); } } }
public override void Build() { m_SkyHDRIMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/Sky/SkyHDRI"); }
public void Build(RenderPipelineResources renderPipelineResources) { m_Material = Utilities.CreateEngineMaterial(renderPipelineResources.screenSpaceAmbientOcclusionShader); m_Material.hideFlags = HideFlags.DontSave; }
public override void Build() { m_ProceduralSkyMaterial = Utilities.CreateEngineMaterial("Hidden/HDRenderPipeline/Sky/SkyProcedural"); }