33 lines
1.3 KiB
C#
33 lines
1.3 KiB
C#
|
using UnityEditor.AssetImporters;
|
||
|
using System.IO;
|
||
|
|
||
|
namespace UnityEditor.Rendering.UnifiedRayTracing
|
||
|
{
|
||
|
[ScriptedImporter(1, "urtshader")]
|
||
|
internal class UnifiedRTShaderImporter : ScriptedImporter
|
||
|
{
|
||
|
public override void OnImportAsset(AssetImportContext ctx)
|
||
|
{
|
||
|
string source = File.ReadAllText(ctx.assetPath);
|
||
|
|
||
|
var com = ShaderUtil.CreateComputeShaderAsset(ctx, computeShaderTemplate.Replace("SHADERCODE", source));
|
||
|
var rt = ShaderUtil.CreateRayTracingShaderAsset(ctx,
|
||
|
raytracingShaderTemplate.Replace("SHADERCODE", source));
|
||
|
|
||
|
ctx.AddObjectToAsset("ComputeShader", com);
|
||
|
ctx.AddObjectToAsset("RayTracingShader", rt);
|
||
|
ctx.SetMainObject(com);
|
||
|
}
|
||
|
|
||
|
const string computeShaderTemplate =
|
||
|
"#define UNIFIED_RT_BACKEND_COMPUTE\n" +
|
||
|
"SHADERCODE\n" +
|
||
|
"#include_with_pragmas \"Packages/com.unity.rendering.light-transport/Runtime/UnifiedRayTracing/Compute/ComputeRaygenShader.hlsl\"\n";
|
||
|
|
||
|
const string raytracingShaderTemplate =
|
||
|
"#define UNIFIED_RT_BACKEND_HARDWARE\n" +
|
||
|
"SHADERCODE\n" +
|
||
|
"#include_with_pragmas \"Packages/com.unity.rendering.light-transport/Runtime/UnifiedRayTracing/Hardware/HardwareRaygenShader.hlsl\"\n";
|
||
|
}
|
||
|
}
|