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.

MenuDescription
CPU ProfilerProvides CPU timing information, including the time spent working on RHI threads and on waiting for the GPU work to complete.
Culling Debug WindowProvides information on what the culling system is doing in real time.
GPU ProfilerProvides information on the GPU workload for each render pass.
Pass TreeDisplays a pass hierarchy and pass details.
Transient Attachment ProfilerProvides 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.

SampleDescription
Area LightsDemonstrates different area light types with modifiable parameters.
BloomDemonstrates bloom effects with modifiable parameters.
Checkerboard Render PipelineDemonstrates how to set up a basic checkerboard render pipeline.
Depth of FieldDemonstrates the depth of field effect with modifiable parameters.
Diffuse Global IlluminationDemonstrates diffuse global illumination using ray-traced light probes.
ExposureDemonstrates camera exposure with eye adaptation and other modifiable parameters.
Light CullingDemonstrates the light culling system with configurable parameters to spawn a large amount of lights and decals.
ParallaxDemonstrates the effects of parallax mapping and pixel depth offset.
ShadowDemonstrates shadow effects for directional lights and spot lights with a configurable lighting setup.
Shadowed BistroSimilar to the Shadow sample, in a more complex scene.
Skinned MeshDemonstrates how to create skinned mesh, calculate bone transforms, and render using the Skinned Mesh Feature Processor.
SSAODemonstrates screen space ambient occlusion (SSAO) with modifiable parameters.
SSRDemonstrates screen space reflections (SSR) on different ground materials.
TonemappingVisualizes how ACES tone mapping affects various colors and levels of brightness.
TransparencyDemonstrates transparent materials.

Rendering Hardware Interface (RHI) Samples

The following samples demonstrate rendering features in the RHI.

SampleDescription
Alpha to CoverageDemonstrates alpha to coverage, a multi-sampling technique for anti-aliasing.
Async ComputeDemonstrates the use of asynchronous compute to render meshes with shadows, and to apply simple tonemapping during post-processing.
Bindless PrototypeExplores a method for supporting bindless resources by allocating a sizeable float buffer.
ComputeDemonstrates the functionality of a dispatch pipeline by calculating a 2D fractal on a compute shader.
Copy QueueDemonstrates queued uploads of data to the GPU while rendering.
Dual Source BlendingDemonstrates the functionality of dual source blending.
Indirect RenderingDemonstrates indirect rendering by executing commands from the GPU rather than from the CPU.
Input AssemblyDemonstrates how to handle vertex buffer generation on a compute shader, and how to declare shader inputs.
MSAADemonstrates multisampling anti-aliasing (MSAA) on a simple triangle.
Multiple ViewsDemonstrates how to render to multiple views.
Multi-Render TargetDemonstrates how to render to multiple targets, merge them together, and render the final output to the screen.
Multi-ThreadDemonstrates parallelization by the Frame Scheduler by executing multi-threaded command lists.
Multi-Viewport SwapchainDemonstrates swap chains by animating colors across multiple screens.
QueriesDemonstrates query pools, which manage a collection of queries, for occlusion queries, predication, timestamp information, and pipeline statistics.
Ray TracingDemonstrates ray tracing against a simple scene.
Spherical HarmonicsDemonstrates functionalities provided by the spherical harmonics (SH) library.
StencilTests the functionality of a stencil buffer.
SubpassDemonstrates the use of a simple deferred renderer with two subpasses.
SwapchainDemonstrates swap chains by animating colors on a single screen.
TextureDemonstrates textures on a quad.
Texture3DDemonstrates support for 3D images using the RHI’s Image structure. There are two structures to represent images: Image and Streaming Image.
Texture ArrayDemonstrates support for image array descriptors and how to sample them with a uniform index.
Texture MapTests texture type functionality for the following: Texture1D, Texture1DArray, Texture2DArray, TextureCube, TextureCubeArray, and Texture3D.
TriangleDemonstrates how to draw and animate a triangle on a screen. Also known as a “Hello Triangle” example.
Triangle Constant BufferDemonstrates how to animate triangles using a constant buffer.

Rendering Pipeline Interface (RPI) Samples

The following samples demonstrate rendering features in the RPI.

SampleDescription
Asset LoadDemonstrates the ability to quickly load meshes and render many objects at high frame rates.
Aux GeomDemonstrates 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 BenchmarkShowcases many different features of Atom and allows profiling of all these systems working together.
DecalDemonstrates decals on various objects with different materials and other modifiable properties.
Dynamic DrawDemonstrates how to use the DynamicDrawContext API by rendering several pyramids with different render states.
Dynamic MaterialDemonstrates support for multiple instances of a material, and how to update those material instances' properties in real time.
Material Hot ReloadTests hot-reloading of material and shader assets by making changes to source data files.
MeshDemonstrates a single mesh and material. You can select from a collection of mesh and material.
MSAADemonstrates how to load a new pipeline with MSAA enabled, and a simple scene with a single mesh.
Multi-Render PipelineDemonstrates how to create two render pipelines.
Multi-SceneDemonstrates how to create two RPI scenes with different content in each.
Multi-View Single Scene Aux GeomTests the ability to send draw calls to any selection of windows in a scene.
Root ConstantsDemonstrates the use of root constants to pass information quickly from the CPU to the shader.
Scene Reload SoakTests Atom’s stability by repeatedly performing many different commands across various times. This sample is used to discover timing-sensitive issues.
ShadingDemonstrates rendering a shaderball with default StandardPBR material, with the LuxCore feature.
Streaming ImageDemonstrates a streaming image’s streaming process.