IN THIS ARTICLE
Atom Sample Viewer
The Atom Sample Viewer showcases samples of features and rendering techniques that the Atom Renderer supports.
To do:A GitHub issue has been created for this task here.
Quick Start
Before starting, you must get a local copy of the Atom Sample Viewer repository from GitHub and build it using Visual Studio. Follow the instructions in the Setting Up Atom Projects page to get set up.
To launch the Atom Sample Viewer, run AtomSampleViewerStandalone.exe
located in the directory <build>/bin/profile
. The following list of samples can be viewed in the Atom Sample Viewer.
Debug Menus
The following debug menus in the Atom Sample Viewer are tools for profiling and debugging systems across the rendering engine. You can run these tools while viewing samples in the Atom Sample Viewer.
Menu | Description |
---|---|
CPU Profiler | Provides CPU timing information, including the time spent working on RHI threads and on waiting for the GPU work to complete. |
Culling Debug Window | Provides information on what the culling system is doing in real time. |
GPU Profiler | Provides information on the GPU workload for each render pass. |
Pass Tree | Displays a pass hierarchy and pass details. |
Transient Attachment Profiler | Provides information about transient allocations that happen during a frame. |
Graphics Feature Samples
The following samples demonstrate graphics features and rendering techniques that can enhance the visual effects in your simulation.
Sample | Description |
---|---|
Area Lights | Demonstrates different area light types with modifiable parameters. |
Bloom | Demonstrates bloom effects with modifiable parameters. |
Checkerboard Render Pipeline | Demonstrates how to set up a basic checkerboard render pipeline. |
Depth of Field | Demonstrates the depth of field effect with modifiable parameters. |
Diffuse Global Illumination | Demonstrates diffuse global illumination using ray-traced light probes. |
Exposure | Demonstrates camera exposure with eye adaptation and other modifiable parameters. |
Light Culling | Demonstrates the light culling system with configurable parameters to spawn a large amount of lights and decals. |
Parallax | Demonstrates the effects of parallax mapping and pixel depth offset. |
Shadow | Demonstrates shadow effects for directional lights and spot lights with a configurable lighting setup. |
Shadowed Bistro | Similar to the Shadow sample, in a more complex scene. |
Skinned Mesh | Demonstrates how to create skinned mesh, calculate bone transforms, and render using the Skinned Mesh Feature Processor. |
SSAO | Demonstrates screen space ambient occlusion (SSAO) with modifiable parameters. |
SSR | Demonstrates screen space reflections (SSR) on different ground materials. |
Tonemapping | Visualizes how ACES tone mapping affects various colors and levels of brightness. |
Transparency | Demonstrates transparent materials. |
Rendering Hardware Interface (RHI) Samples
The following samples demonstrate rendering features in the RHI.
Sample | Description |
---|---|
Alpha to Coverage | Demonstrates alpha to coverage, a multi-sampling technique for anti-aliasing. |
Async Compute | Demonstrates the use of asynchronous compute to render meshes with shadows, and to apply simple tonemapping during post-processing. |
Bindless Prototype | Explores a method for supporting bindless resources by allocating a sizeable float buffer. |
Compute | Demonstrates the functionality of a dispatch pipeline by calculating a 2D fractal on a compute shader. |
Copy Queue | Demonstrates queued uploads of data to the GPU while rendering. |
Dual Source Blending | Demonstrates the functionality of dual source blending. |
Indirect Rendering | Demonstrates indirect rendering by executing commands from the GPU rather than from the CPU. |
Input Assembly | Demonstrates how to handle vertex buffer generation on a compute shader, and how to declare shader inputs. |
MSAA | Demonstrates multisampling anti-aliasing (MSAA) on a simple triangle. |
Multiple Views | Demonstrates how to render to multiple views. |
Multi-Render Target | Demonstrates how to render to multiple targets, merge them together, and render the final output to the screen. |
Multi-Thread | Demonstrates parallelization by the Frame Scheduler by executing multi-threaded command lists. |
Multi-Viewport Swapchain | Demonstrates swap chains by animating colors across multiple screens. |
Queries | Demonstrates query pools, which manage a collection of queries, for occlusion queries, predication, timestamp information, and pipeline statistics. |
Ray Tracing | Demonstrates ray tracing against a simple scene. |
Spherical Harmonics | Demonstrates functionalities provided by the spherical harmonics (SH) library. |
Stencil | Tests the functionality of a stencil buffer. |
Subpass | Demonstrates the use of a simple deferred renderer with two subpasses. |
Swapchain | Demonstrates swap chains by animating colors on a single screen. |
Texture | Demonstrates textures on a quad. |
Texture3D | Demonstrates support for 3D images using the RHI’s Image structure. There are two structures to represent images: Image and Streaming Image. |
Texture Array | Demonstrates support for image array descriptors and how to sample them with a uniform index. |
Texture Map | Tests texture type functionality for the following: Texture1D, Texture1DArray, Texture2DArray, TextureCube, TextureCubeArray, and Texture3D. |
Triangle | Demonstrates how to draw and animate a triangle on a screen. Also known as a “Hello Triangle” example. |
Triangle Constant Buffer | Demonstrates how to animate triangles using a constant buffer. |
Rendering Pipeline Interface (RPI) Samples
The following samples demonstrate rendering features in the RPI.
Sample | Description |
---|---|
Asset Load | Demonstrates the ability to quickly load meshes and render many objects at high frame rates. |
Aux Geom | Demonstrates the AuxGeom feature (auxiliary geometry), which provides an interface for drawing geometry such as points, lines, polylines, triangles, AABBs, OBBs, spheres, cones, and cylinders. |
Bistro Benchmark | Showcases many different features of Atom and allows profiling of all these systems working together. |
Decal | Demonstrates decals on various objects with different materials and other modifiable properties. |
Dynamic Draw | Demonstrates how to use the DynamicDrawContext API by rendering several pyramids with different render states. |
Dynamic Material | Demonstrates support for multiple instances of a material, and how to update those material instances' properties in real time. |
Material Hot Reload | Tests hot-reloading of material and shader assets by making changes to source data files. |
Mesh | Demonstrates a single mesh and material. You can select from a collection of mesh and material. |
MSAA | Demonstrates how to load a new pipeline with MSAA enabled, and a simple scene with a single mesh. |
Multi-Render Pipeline | Demonstrates how to create two render pipelines. |
Multi-Scene | Demonstrates how to create two RPI scenes with different content in each. |
Multi-View Single Scene Aux Geom | Tests the ability to send draw calls to any selection of windows in a scene. |
Root Constants | Demonstrates the use of root constants to pass information quickly from the CPU to the shader. |
Scene Reload Soak | Tests Atom’s stability by repeatedly performing many different commands across various times. This sample is used to discover timing-sensitive issues. |
Shading | Demonstrates rendering a shaderball with default StandardPBR material, with the LuxCore feature. |
Streaming Image | Demonstrates a streaming image’s streaming process. |