1 / 17

Overview

Overview. [See Video file]. Architecture Overview. Asynchronous Resource Loading. Handle Based Default Resources always available. RenderDevice. Background Loading System. Device Ressource Tracker. Game Thread. Stateless Rendering Architecture. 64 bit Source Key. Draw Command. Shader.

risa
Download Presentation

Overview

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Overview • [See Video file]

  2. Architecture Overview

  3. Asynchronous Resource Loading • Handle Based • Default Resources always available RenderDevice Background Loading System Device Ressource Tracker Game Thread

  4. Stateless Rendering Architecture 64 bit Source Key Draw Command Shader Texture Viewport Pass Depth Mesh

  5. Stateless Rendering Architecture 64 bit Source Key Draw Command Mesh Depth Viewport Pass Shader Texture

  6. Shader Cross Compilation System • Mix of Custom Description Language and HLSL • Heavy use of Preprocessor Macros

  7. .shader2 PSSL structSRT_PerMaterial { Texture2D diffuse_texture_srt; SamplerStatediffuse_texture_sampler_srt; }; #define diffuse_texture (srt_data.per_material ->diffuse_texture_srt) #define diffuse_texture_sampler(srt_data.per_material ->diffuse_texture_sampler_srt) (texture_input (texture_2d diffuse_texture) texture_input) (sampler_input (sampler_statediffuse_texture_sampler) sampler_input)

  8. float4 PS( PS_INPUT input, SRT_Globalsrt_data) { output = TEXTURE_2D_SAMPLE_RGBA( diffuse_texture, diffuse_texture_sampler, IL_PIXEL_INPUT(tex) ); }

  9. All resources are bound by convention at runtime • Constants organized by Frequency Frame, Camera, Material, Object • Textures in the order they are defined

  10. Changes since Submission • Support for 3D Textures • Changed from 64x64x4 -> 32x32x16 clusters • Optimized Forward Clustered Shader • GPU Time: 14.82 ms -> 7.86 ms

  11. Changes since Submission • Fixed incorrect cotangent-frame construction in the normal mapping shader • Added Tonemapping • Fixed synchronization issues in the GPU allocator

  12. Restructured Rendering Loop Old Scheme New Scheme 2 / 3 frames Input Latency: 3 / 4 frames

  13. Demonstration

  14. Planned Changes • Add support for Pipeline objects (D3D12, Mantle, Metal) • Restructure the Stateless Draw Command implementation • Add Passes, one pass per logical operation • Reduces overhead from hazard tracking • Reduces sorting overhead, only need to sort local in a pass • Improve Light Clustering • Implement Deferred Rendering Scheme, compare to current Clustered Forward • Better Shading Language, maybe based on the ideas of Spark?

  15. Questions? • Jendrik Illner • Jendrik.illner@gmail.com

More Related