{"id":18782070,"url":"https://github.com/gpuopen-librariesandsdks/workgraphcomputerasterizer","last_synced_at":"2025-04-13T12:07:49.494Z","repository":{"id":199995387,"uuid":"704433249","full_name":"GPUOpen-LibrariesAndSDKs/WorkGraphComputeRasterizer","owner":"GPUOpen-LibrariesAndSDKs","description":"A compute/workgraph workload running inside the Cauldron framework","archived":false,"fork":false,"pushed_at":"2024-03-13T12:11:25.000Z","size":519,"stargazers_count":26,"open_issues_count":0,"forks_count":2,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-13T12:07:44.336Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GPUOpen-LibrariesAndSDKs.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-10-13T08:47:47.000Z","updated_at":"2025-04-12T12:18:17.000Z","dependencies_parsed_at":"2024-03-13T13:28:40.980Z","dependency_job_id":"23894c13-8612-41a6-afef-3d48ece8c7fb","html_url":"https://github.com/GPUOpen-LibrariesAndSDKs/WorkGraphComputeRasterizer","commit_stats":null,"previous_names":["gpuopen-librariesandsdks/workgraphcomputerasterizer"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GPUOpen-LibrariesAndSDKs%2FWorkGraphComputeRasterizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GPUOpen-LibrariesAndSDKs%2FWorkGraphComputeRasterizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GPUOpen-LibrariesAndSDKs%2FWorkGraphComputeRasterizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GPUOpen-LibrariesAndSDKs%2FWorkGraphComputeRasterizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GPUOpen-LibrariesAndSDKs","download_url":"https://codeload.github.com/GPUOpen-LibrariesAndSDKs/WorkGraphComputeRasterizer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248710433,"owners_count":21149190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T20:34:43.800Z","updated_at":"2025-04-13T12:07:49.472Z","avatar_url":"https://github.com/GPUOpen-LibrariesAndSDKs.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Work Graphs Compute Rasterizer Sample\n\nA compute rasterizer sample implemented with Work Graphs running inside the [Cauldron framework](https://github.com/GPUOpen-LibrariesAndSDKs/Cauldron).\n\n![Screenshot](screenshot.png)\n\n# Build Instructions\n\n### Prerequisites\n\nTo build the Work Graphs Compute Rasterizer Sample, you must first install the following tools:\n\n- [CMake 3.16](https://cmake.org/download/)\n- [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/)\n- [Windows 10 SDK 10.0.18362.0](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk)\n\n### Getting up and running\n\nFollow the next steps:\n\n1) Clone the repo with its submodules:\n    ```\n    \u003e git clone https://github.com/GPUOpen-LibrariesAndSDKs/WorkGraphComputeRasterizer --recurse-submodules\n    ```\n\n2) Generate the solutions:\n    ```\n    \u003e cd WorkGraphComputeRasterizer\\build\n    \u003e GenerateSolutions.bat\n    ```\n\n3) Open the solution in the DX12 directory, compile and run. VK isn't supported.\n\n4) The define `ENABLE_WORKGRAPHS` enables Work graphs. It's enabled by default. It can be disabled if [PIX](https://devblogs.microsoft.com/pix/introduction/),    [RenderDoc](https://renderdoc.org) or another tool without Work graphs    support is used to debug. Use CMake to disable the feature:\n    ```\n    \u003e cmake -DGFX_API_WG=OFF\n    ```\n\n5) The media samples from Cauldron may change and not all scenes may load, you can adjust scenes in [src\\Common\\GLTFSample.json](src\\Common\\GLTFSample.json)\n\n6) You can request precise profiling data through commandline by passing json as arguments:\n    ```\n    \u003e cd WorkGraphComputeRasterizer\\bin\n    \u003e GLTFSample_DX12.exe { \"algorithm\" : 4, \"bins\" : 13, \"threadlaunch\" : true, ^\n        \"stablePowerState\" : true, \"profile\" : true, \"ProfileSettings\": { \"filter\" : ^\n        \"Rasterize\", \"exitWhenTimeEnds\": true, \"resultsFilename\": \"Sponza.csv\", ^\n        \"warmUpFrames\": 50, \"durationFrames\": 20 } }\n    ```\n\n   These are the custom parameters for the rasterizer, the many other options can be looked up in the Cauldron docs:\n\n   `algorithm`:\n   \u003e 0 - monolithic compute rasterizer, called once per object\n   \u003e 1 - monolithic compute rasterizer, all objects are consumed by one ExecuteIndirect\n   \u003e 2 - multi-pass compute rasterizer, all objects are consumed by a pipeline of three ExecuteIndirect\n   \u003e 3 - workgraph rasterizer, called once per object\n   \u003e 4 - workgraph rasterizer, called once in total with all object batched\n   \u003e 5 - workgraph rasterizer, all objects are consumed by an initial Broadcaster node\n\n   `bins`:\n   \u003e 1 to 15: number of buckets/bins to group triangles by, 2^(bin-1) = area\n\n   `threadlaunch`:\n   \u003e false/true: use a thread-launch or coalesce node for triangle rasterization\n\n   `profile`:\n   \u003e false/true: enables automatic profiling and generation of a csv file\n\n   `filter`:\n   \u003e label: the label of the pass to collect timestamps for, if empty all passes are included in the csv\n\n   `resultsFilename`:\n   \u003e filename: the name of the csv in the current directory\n\n   `warmUpFrames`:\n   \u003e 0 to inf: how many frames to wait for initialization to settle\n\n   `durationFrames`:\n   \u003e 0 to inf: how many frames to include in the csv\n\n   The values in the resulting csv are raw gpu ticks without any conversion.\n   \n7) The algorithm and some results are presented in this GPUOpen blog entry:\n\n   https://gpuopen.com/learn/work_graphs_learning_sample/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpuopen-librariesandsdks%2Fworkgraphcomputerasterizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgpuopen-librariesandsdks%2Fworkgraphcomputerasterizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpuopen-librariesandsdks%2Fworkgraphcomputerasterizer/lists"}