alipbcs / zetaray Goto Github PK
View Code? Open in Web Editor NEWReal-time Direct3D 12 ray tracer
License: MIT License
Real-time Direct3D 12 ray tracer
License: MIT License
Hi,
I've now tried building & running this using two different machines (a really beefy NVidia A6000 desktop machine, and an RTX 2080 super laptop), without much success. I'm using VS 2022 version 17.5.2 and CMake 3.25.1.
On both machines I'm able to build the solution in VS 2022 without errors, but when I launch the Zetalab app using cornell box gltf as the test scene, it just flashes up for a half a sec (I can see an empty app frame for a while), and quits silently without any error.
I wonder if there's some step(s) that I'm doing wrong, or am I missing something? Can you share a build I could try?
Both Release and Debug builds fail:
Tests\TestMath.cpp(376,23): error C2039: 'DegreeToRadians': is not a member of 'ZetaRay::Math'
Hi,
I just found out that this project assumed max 16 threads for some reason?
Everything about threads just breaks on my rig which has 16 physical cores detected.
I think it is because this project has fixed a maximum of 16 threads, and that you have related num of threads equal to physical cores + num backgrounds threads (which in my case is 16 + 2 = 18 exceed MAX_NUM_THREADS which causes numerous heap corruption for cocurrent queue)
In my local workspace, limiting physical cores fix's this issue for short, but it's weird.
cmake .
-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.20348.0 to target Windows 10.0.19045.
-- The CXX compiler identification is MSVC 19.39.33522.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Downloading DXC from https://github.com/microsoft/DirectXShaderCompiler/releases/download/v1.8.2403/dxc_2024_03_07.zip...
-- Downloading ImGui 1.90 from https://github.com/ocornut/imgui/archive/refs/tags/v1.90.zip...
-- Downloading ImPlot 0.15 from https://github.com/epezent/implot/archive/refs/tags/v0.15.zip...
-- Downloading imnodes from https://github.com/Nelarius/imnodes/archive/d88f99125bb72cdb71b4c27ff6eb7f318d89a4c5.zip...
-- Downloading WinPixEventRuntime from https://www.nuget.org/api/v2/package/WinPixEventRuntime/1.0.231030001...
-- Downloading xxHash 0.8.1 from https://github.com/Cyan4973/xxHash/archive/refs/tags/v0.8.1.zip...
-- Downloading cgltf 1.13 from https://github.com/jkuhlmann/cgltf/archive/refs/tags/v1.13.zip...
CMake Error at CMake/Setupcgltf.cmake:20 (message):
Setting up cgltf failed.
Call Stack (most recent call first):
Source/ZetaCore/CMakeLists.txt:72 (Setupcgltf)
-- Configuring incomplete, errors occurred!
cmake .
-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.20348.0 to target Windows 10.0.19045.
-- The CXX compiler identification is MSVC 19.39.33522.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Downloading DXC from https://github.com/microsoft/DirectXShaderCompiler/releases/download/v1.8.2403/dxc_2024_03_07.zip...
-- Downloading ImGui 1.90 from https://github.com/ocornut/imgui/archive/refs/tags/v1.90.zip...
-- Downloading ImPlot 0.15 from https://github.com/epezent/implot/archive/refs/tags/v0.15.zip...
-- Downloading imnodes from https://github.com/Nelarius/imnodes/archive/d88f99125bb72cdb71b4c27ff6eb7f318d89a4c5.zip...
-- Downloading WinPixEventRuntime from https://www.nuget.org/api/v2/package/WinPixEventRuntime/1.0.231030001...
-- Downloading xxHash 0.8.1 from https://github.com/Cyan4973/xxHash/archive/refs/tags/v0.8.1.zip...
-- Downloading cgltf 1.13 from https://github.com/jkuhlmann/cgltf/archive/refs/tags/v1.13.zip...
CMake Error at CMake/Setupcgltf.cmake:20 (message):
Setting up cgltf failed.
Call Stack (most recent call first):
Source/ZetaCore/CMakeLists.txt:72 (Setupcgltf)
-- Configuring incomplete, errors occurred!
Rebuild started at 09:40...
1>------ Rebuild All started: Project: CopyWinPixDLL, Configuration: Debug x64 ------
2>------ Rebuild All started: Project: CopyFsr2SDKBins, Configuration: Debug x64 ------
3>------ Rebuild All started: Project: CopyFontDLL, Configuration: Debug x64 ------
4>------ Rebuild All started: Project: CopyDX12AgilitySDKBins, Configuration: Debug x64 ------
5>------ Rebuild All started: Project: CompileShaders, Configuration: Debug x64 ------
1>1>Copying WinPixEventRuntime.dll into D:/Personal/Projects/ProjZetaRay/bin...
2>1>Copying ffx_fsr2_api_dx12_x64.dll into D:/Personal/Projects/ProjZetaRay/bin/...
2>2>Copying ffx_fsr2_api_x64.dll into D:/Personal/Projects/ProjZetaRay/bin/...
3>1>Copying Font.dll into D:/Personal/Projects/ProjZetaRay/bin/...
4>1>Copying D3D12Core.dll into D:/Personal/Projects/ProjZetaRay/bin/D3D12/...
4>2>Copying d3d12SDKLayers.dll into D:/Personal/Projects/ProjZetaRay/bin/D3D12/...
5>16>Compiling HLSL source file PresampleEmissives.hlsl...
5>13>Compiling HLSL source file IndirectDnsr_Spatial.hlsl...
5>10>Compiling HLSL source file FireflyFilter.hlsl...
6>------ Rebuild All started: Project: ZetaCore, Configuration: Debug x64 ------
5>14>Compiling HLSL source file IndirectDnsr_Temporal.hlsl...
5>6>Compiling HLSL source file AutoExposure_Histogram.hlsl...
5>15>Compiling HLSL source file Inscattering.hlsl...
5>8>Compiling HLSL source file EstimateCurvature.hlsl...
5>4>Compiling HLSL source file Compositing.hlsl...
5>In file included from D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/IndirectDnsr_Temporal.hlsl:3:
5>In file included from D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_Resampling.hlsli:4:
5>D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_PathTracing.hlsli(244,13): error G5793C645: parameter 'eta' is uninitialized when used here [-Werror,-Wparameter-usage]
5> return false;
5> ^~~~~~
5>D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_PathTracing.hlsli:237:40: note: variable 'eta' is declared here
5> out BSDF::ShadingData surface, out float eta)
5> ^
5>
5>The system cannot find the batch label specified - VCEnd
5>5>Compiling HLSL source file BuildLightVoxelGrid.hlsl...
5>D:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(237,5): error MSB8066: Custom build for 'D:\Personal\Projects\ProjZetaRay\build\CMakeFiles\301b84fbc1b63d76d4a5fe3509caba56\IndirectDnsr_Temporal_cs.cso.rule' exited with code 1.
5>3>Compiling DXIL library GBufferRT.hlsl...
5>1>Compiling HLSL source file AutoExposure_ExpectedVal.hlsl...
5>12>Compiling HLSL source file ImGui.hlsl...
5>2>Compiling HLSL source file GBufferRT_Inline.hlsl...
5>9>Compiling HLSL source file EstimateTriLumen.hlsl...
5>11>Compiling HLSL source file GenerateDepthBuffer.hlsl...
5>7>Compiling HLSL source file Display.hlsl...
5>6>Compiling HLSL source file ReSTIR_DI_DNSR_Spatial.hlsl...
6>CommandList.cpp
6>CommandQueue.cpp
6>DescriptorHeap.cpp
6>Device.cpp
6>Direct3DUtil.cpp
6>GpuMemory.cpp
6>GpuTimer.cpp
6>PipelineStateLibrary.cpp
6>RendererCore.cpp
6>RenderGraph.cpp
6>RootSignature.cpp
6>SharedShaderResources.cpp
6>BVH.cpp
6>Common.cpp
6>Sampling.cpp
6>Surface.cpp
5>1>Compiling HLSL source file ReSTIR_DI_SpatioTemporal_LP.hlsl...
5>12>Compiling HLSL source file ReSTIR_DI_DNSR_Temporal.hlsl...
5>8>Compiling HLSL source file ReSTIR_DI_SpatioTemporal.hlsl...
5>In file included from D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_NPS.hlsl:5:
5>In file included from D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_LVG.hlsl:7:
5>In file included from D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI.hlsl:1:
5>In file included from D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_Resampling.hlsli:4:
5>In file included from D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI.hlsl:1:
5>In file included from D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI.hlsl:1:
5>In file included from D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_Resampling.hlsli:4:
5>In file included from D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_Resampling.hlsli:4:
5>D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_PathTracing.hlsli(244,13): error G5793C645: parameter 'eta' is uninitialized when used here [-Werror,-Wparameter-usage]
5> return false;
5> ^~~~~~
5>D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_PathTracing.hlsli:237:40: note: variable 'eta' is declared here
5> out BSDF::ShadingData surface, out float eta)
5> ^
5>
5>The system cannot find the batch label specified - VCEnd
5>11>Compiling HLSL source file ReSTIR_GI_NPS.hlsl...
5>D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_PathTracing.hlsli(244,13): error G5793C645: parameter 'eta' is uninitialized when used here [-Werror,-Wparameter-usage]
5> return false;
5> ^~~~~~
5>D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_PathTracing.hlsli(244,13): error G5793C645: parameter 'eta' is uninitialized when used here [-Werror,-Wparameter-usage]
5>D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_PathTracing.hlsli:237:40: note: variable 'eta' is declared here
5> return false;
5> out BSDF::ShadingData surface, out float eta)
5> ^~~~~~
5> ^
5>
5>D:/Personal/Projects/ProjZetaRay/Source/ZetaRenderPass/IndirectLighting/ReSTIR_GI_PathTracing.hlsli:237:40: note: variable 'eta' is declared here
5>The system cannot find the batch label specified - VCEnd
5> out BSDF::ShadingData surface, out float eta)
5>9>Compiling HLSL source file ReSTIR_GI_LVG.hlsl...
5> ^
5>
5>The system cannot find the batch label specified - VCEnd
5>10>Compiling HLSL source file ReSTIR_GI.hlsl...
5>D:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(237,5): error MSB8066: Custom build for 'D:\Personal\Projects\ProjZetaRay\build\CMakeFiles\301b84fbc1b63d76d4a5fe3509caba56\ReSTIR_GI_cs.cso.rule' exited with code 1.
5>D:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(237,5): error MSB8066: Custom build for 'D:\Personal\Projects\ProjZetaRay\build\CMakeFiles\301b84fbc1b63d76d4a5fe3509caba56\ReSTIR_GI_NPS_cs.cso.rule' exited with code 1.
5>D:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(237,5): error MSB8066: Custom build for 'D:\Personal\Projects\ProjZetaRay\build\CMakeFiles\301b84fbc1b63d76d4a5fe3509caba56\ReSTIR_GI_LVG_cs.cso.rule' exited with code 1.
5>16>Compiling HLSL source file SkyDI_DNSR_Spatial.hlsl...
5>15>Compiling HLSL source file SkyDI_DNSR_Temporal.hlsl...
5>5>Compiling HLSL source file SkyDI_SpatioTemporal.hlsl...
5>7>Compiling HLSL source file SkyViewLUT.hlsl...
5>4>Compiling HLSL source file SunShadow.hlsl...
5>6>Compiling HLSL source file TAA.hlsl...
5>2>Compiling HLSL source file ffx_denoiser_spatial_filter.hlsl...
6>glTF.cpp
6>Mesh.cpp
6>RtAccelerationStructure.cpp
5>13>Compiling HLSL source file ffx_denoiser_temporal.hlsl...
6>Sampler.cpp
6>Asset.cpp
6>Camera.cpp
6>SceneCore.cpp
6>MemoryPool.cpp
6>MemoryArena.cpp
6>OffsetAllocator.cpp
6>Param.cpp
6>Task.cpp
6>ThreadPool.cpp
6>ThreadSafeMemoryArena.cpp
6>Error.cpp
6>Win32App.cpp
6>Win32Filesystem.cpp
6>Win32Timer.cpp
6>Win32Common.cpp
6>imgui.cpp
6>imgui_draw.cpp
6>imgui_tables.cpp
6>imgui_widgets.cpp
5>Done building project "CompileShaders.vcxproj" -- FAILED.
6>imnodes.cpp
6>implot.cpp
6>implot_items.cpp
6>ZetaCore.vcxproj -> D:\Personal\Projects\ProjZetaRay\bin\ZetaCored.lib
7>------ Rebuild All started: Project: ZetaRenderPass, Configuration: Debug x64 ------
8>------ Rebuild All started: Project: Tests, Configuration: Debug x64 ------
9>------ Rebuild All started: Project: BCnCompressglTF, Configuration: Debug x64 ------
8>TestContainer.cpp
8>TestMath.cpp
8>TestAliasTable.cpp
8>TestOffsetAllocator.cpp
8>TestOptional.cpp
9>BC.cpp
7>RenderPass.cpp
8>main.cpp
9>BC4BC5.cpp
9>BC6HBC7.cpp
9>DirectXTexCompress.cpp
9>DirectXTexConvert.cpp
9>DirectXTexDDS.cpp
9>DirectXTexImage.cpp
9>DirectXTexMipmaps.cpp
9>DirectXTexMisc.cpp
9>DirectXTexResize.cpp
9>DirectXTexUtil.cpp
9>DirectXTexFlipRotate.cpp
9>DirectXTexWIC.cpp
9>BCDirectCompute.cpp
9>DirectXTexCompressGPU.cpp
9>DirectXTexD3D11.cpp
7>AutoExposure.cpp
7>Compositing.cpp
7>DirectLighting.cpp
7>SkyDI.cpp
7>Display.cpp
7>FSR2.cpp
7>GBufferRT.cpp
7>GenerateDepthBuffer.cpp
7>GuiPass.cpp
7>IndirectLighting.cpp
7>PreLighting.cpp
7>Sky.cpp
7>SunShadow.cpp
7>TAA.cpp
8>D:\Personal\Projects\ProjZetaRay\Tests\TestMath.cpp(376,23): error C2039: 'DegreeToRadians': is not a member of 'ZetaRay::Math'
8>D:\Personal\Projects\ProjZetaRay\Source\ZetaCore\Math\Sampling.h(11,11):
8>see declaration of 'ZetaRay::Math'
8>D:\Personal\Projects\ProjZetaRay\Tests\TestMath.cpp(376,23): error C3861: 'DegreeToRadians': identifier not found
9>texconv.cpp
9>BCnCompressglTF.cpp
7>ZetaRenderPass.vcxproj -> D:\Personal\Projects\ProjZetaRay\bin\ZetaRenderPassd.lib
10>------ Rebuild All started: Project: ZetaRenderer, Configuration: Debug x64 ------
8>Done building project "Tests.vcxproj" -- FAILED.
10>GBuffer.cpp
10>PostProcessor.cpp
10>RayTracer.cpp
10>DefaultRenderer.cpp
10>ZetaRenderer.vcxproj -> D:\Personal\Projects\ProjZetaRay\bin\ZetaRendererd.lib
11>------ Rebuild All started: Project: ZetaLab, Configuration: Debug x64 ------
11>ZetaLab.cpp
11> Creating library D:/Personal/Projects/ProjZetaRay/bin/ZetaLabd.lib and object D:/Personal/Projects/ProjZetaRay/bin/ZetaLabd.exp
11>ZetaLab.vcxproj -> D:\Personal\Projects\ProjZetaRay\bin\ZetaLabd.exe
9>BCnCompressglTF.vcxproj -> D:\Personal\Projects\ProjZetaRay\bin\BCnCompressglTFd.exe
12>------ Skipped Rebuild All: Project: ALL_BUILD, Configuration: Debug x64 ------
12>Project not selected to build for this solution configuration
========== Rebuild All: 9 succeeded, 2 failed, 1 skipped ==========
========== Rebuild completed at 09:41 and took 12.961 seconds ==========
Several problems with build solution.
Hi,
Just found out that some of the api requires deverloper mode enable for the Windows operating system.
Mentioned by Microsoft here : https://learn.microsoft.com/en-us/windows/win32/api/d3d12/nf-d3d12-id3d12device-setstablepowerstate
I think this should be noted by users
Hi,
I was running this project with latest commit 3c57d8166f7044eef7b151797508892714fab1ee
1,
But I found that the already preprocessed gltf cornell box scene mentioned in the README fails to render with complete darkness
2,
So I was trying to debug this scene with RenderDoc v1.28 (latest stable release), but when launching from renderdoc, I got this
Triggerd by this line of code
ZetaRay/ZetaCore/Core/Device.cpp
Line 97 in 3c57d81
I tried to change it to,
Check(feature.RaytracingTier != D3D12_RAYTRACING_TIER_NOT_SUPPORTED, "Raytracing Tier not supported.");
and it still fails with renderdoc but pass the ordinary launch. I guess it is a problem regard to renderdoc not supporting dx12 raytracing? But I cannot find any solutions online.
I wonder what tools you used to debug shader in this case. I am pretty sure it is problem with ray tracing shaders but I am not sure where to start at this embarrassing moment.
My rig is RTX2080super desktop.
Thanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.