112 lines
5.4 KiB
C#

using System;
using UnityEngine.Experimental.Rendering;
namespace UnityEngine.Rendering.HighDefinition
{
partial class HDRenderPipelineRayTracingResources : ScriptableObject
{
// Reflection
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Reflections/RaytracingReflections.raytrace")]
public RayTracingShader reflectionRaytracingRT;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Reflections/RaytracingReflections.compute")]
public ComputeShader reflectionRaytracingCS;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/RaytracingReflectionFilter.compute")]
public ComputeShader reflectionBilateralFilterCS;
// Shadows
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RaytracingShadow.raytrace")]
public RayTracingShader shadowRaytracingRT;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RayTracingContactShadow.raytrace")]
public RayTracingShader contactShadowRayTracingRT;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RaytracingShadow.compute")]
public ComputeShader shadowRaytracingCS;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RaytracingShadowFilter.compute")]
public ComputeShader shadowFilterCS;
// Recursive tracing
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/RaytracingRenderer.raytrace")]
public RayTracingShader forwardRaytracing;
// Light cluster
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightCluster.compute")]
public ComputeShader lightClusterBuildCS;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/DebugLightCluster.shader")]
public Shader lightClusterDebugS;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/DebugLightCluster.compute")]
public ComputeShader lightClusterDebugCS;
// Indirect Diffuse
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/IndirectDiffuse/RaytracingIndirectDiffuse.raytrace")]
public RayTracingShader indirectDiffuseRaytracingRT;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/IndirectDiffuse/RaytracingIndirectDiffuse.compute")]
public ComputeShader indirectDiffuseRaytracingCS;
// Ambient Occlusion
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/RaytracingAmbientOcclusion.raytrace")]
public RayTracingShader aoRaytracingRT;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/RaytracingAmbientOcclusion.compute")]
public ComputeShader aoRaytracingCS;
// Sub-Surface Scattering
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/RayTracingSubSurface.raytrace")]
public RayTracingShader subSurfaceRayTracingRT;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/SubSurface/RayTracingSubSurface.compute")]
public ComputeShader subSurfaceRayTracingCS;
// Denoising
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Denoising/TemporalFilter.compute")]
public ComputeShader temporalFilterCS;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Denoising/SimpleDenoiser.compute")]
public ComputeShader simpleDenoiserCS;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Denoising/DiffuseDenoiser.compute")]
public ComputeShader diffuseDenoiserCS;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Denoising/ReflectionDenoiser.compute")]
public ComputeShader reflectionDenoiserCS;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Denoising/DiffuseShadowDenoiser.compute")]
public ComputeShader diffuseShadowDenoiserCS;
// Deferred Lighting
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Deferred/RaytracingGBuffer.raytrace")]
public RayTracingShader gBufferRaytracingRT;
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Deferred/RaytracingDeferred.compute")]
public ComputeShader deferredRaytracingCS;
// Path Tracing
[Reload("Runtime/RenderPipeline/PathTracing/Shaders/PathTracingMain.raytrace")]
public RayTracingShader pathTracing;
// Ray Binning
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/Common/RayBinning.compute")]
public ComputeShader rayBinningCS;
// Ray count
[Reload("Runtime/RenderPipeline/Raytracing/Shaders/CountTracedRays.compute")]
public ComputeShader countTracedRays;
// Filtering for reflections
[Reload("Runtime/RenderPipelineResources/Texture/ReflectionKernelMapping.png")]
public Texture2D reflectionFilterMapping;
#if UNITY_EDITOR
[UnityEditor.CustomEditor(typeof(HDRenderPipelineRayTracingResources))]
class RenderPipelineRayTracingResourcesEditor : UnityEditor.Editor
{
public override void OnInspectorGUI()
{
DrawDefaultInspector();
// Add a "Reload All" button in inspector when we are in developer's mode
if (UnityEditor.EditorPrefs.GetBool("DeveloperMode")
&& GUILayout.Button("Reload All"))
{
foreach (var field in typeof(HDRenderPipelineRayTracingResources).GetFields())
field.SetValue(target, null);
ResourceReloader.ReloadAllNullIn(target, HDUtils.GetHDRenderPipelinePath());
}
}
}
#endif
}
}