Skip to content

Conversation

@CubeBerry
Copy link
Owner

@CubeBerry CubeBerry commented Dec 17, 2025

  • First intention of this branch is to implement frustum culling using mesh nodes functionality of work graphs. However, there is a bug regarding DirectX 12 Agility SDK ([DX12]DirectX 12 Agility SDK Issue Regarding Shader Model 6.9 #79). Also, I considered this to be implemented after Render Graph is implemented to the engine.
  • Instead, added WorkGraphsContext files (.hpp, .cpp) and fixed CMakeLists to choose stable/preview version of Agility SDK. Mesh Shader, Work Graphs is keep supported in stable version (1.618.4). Check README.md for how to toggle Agility SDK preview.

CubeBerry and others added 20 commits December 5, 2025 11:29
- Divided Sprite into DynamicSprite, StaticSprite. DynamicSprite is for sprite that can be allocated/deallocated dynamically. StaticSprite is for sprite that won't be allocated/deallocated for entire state (ex. terrain, building).
- Strictly separated descriptor heap partition.
- Changed SpriteManager to pointer variable in Engine.hpp.
- Still working on work graphs frustum culling.
- DynamicSprite and StaticSprite is now separated.
- StaticSprite needs unified buffer structure so that many of variables should be fixed.
- Going to start on dividing BufferWrapper into StaticBufferWrapper, DynamicBufferWrapper, MeshShaderBufferWrapper.
- Optimized BufferWrapper to support instance rendering and bindless rendering easily. Also to support dynamic, static purpose mesh.
- Still need to figure out a way to indicate SubMesh is DYNAMIC/STATIC when RenderManager's CreateMesh function is called.
- When CreateMesh3D is called, regardless of SpriteType(DYNAMIC, STATIC), it creates data and buffer of DynamicSprite3DMesh struct.
- SpriteManager handles StaticSprite. When RegisterStaticSprite() is called, it gathers whole data of DynamicSprite3DMesh (but created as StaticSprite) and initializes buffers.
- Need to figure out a way to utilize index for bindless buffers.
- Only debug environment of DXIL compile is supported due to preview functionality of mesh nodes.
- StaticSprite3D contains bindless uniform data.
- Pixel shader should be modified to support bindless rendering.
- Need to edit register key to enable mesh nodes functionality on Radeon RX 9070 XT GPU.
- Couldn't find a way to enable mesh nodes functionality on Radeon GPU.
- Need to initialize DXWorkGraphsStateObject using constructor for Mesh Nodes.
- Revert back DirectX 12 Agility SDK version to 1.615.0-preview.
- Need to figure out which render target format and depth format should be used for DXWorkGraphsStateObject.
- SetGraphics should be used instead of SetCompute because Work Graphs Mesh Nodes is considered as graphics pipeline.
- Can choose between stable and preview version of Agility SDK by turning ON/OFF of option(USE_PREVIEW_SDK "Enable DirectX 12 Agility SDK Preview Version (715)" OFF) in root directory CMakeLists.txt.
- Also, this can be toggled by adding command line -D USE_PREVIEW_SDK=ON
@CubeBerry CubeBerry self-assigned this Dec 17, 2025
@CubeBerry CubeBerry added the enhancement New feature or request label Dec 17, 2025
- Disabled the code because this is not supported yet.
- This code have been tested with Work Graphs Frustum Culling.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants