Overview
This presentation is the property of its rightful owner.
Sponsored Links
1 / 17

Overview PowerPoint PPT Presentation


  • 81 Views
  • Uploaded on
  • Presentation posted in: General

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.

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Overview

Overview

  • [See Video file]


Architecture overview

Architecture Overview


Asynchronous resource loading

Asynchronous Resource Loading

  • Handle Based

  • Default Resources always available

RenderDevice

Background Loading System

Device Ressource Tracker

Game Thread


Stateless rendering architecture

Stateless Rendering Architecture

64 bit Source Key

Draw Command

Shader

Texture

Viewport

Pass

Depth

Mesh


Stateless rendering architecture1

Stateless Rendering Architecture

64 bit Source Key

Draw Command

Mesh

Depth

Viewport

Pass

Shader

Texture


Shader cross compilation system

Shader Cross Compilation System

  • Mix of Custom Description Language and HLSL

  • Heavy use of Preprocessor Macros


Overview

.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)


Overview

float4 PS( PS_INPUT input, SRT_Globalsrt_data)

{

output = TEXTURE_2D_SAMPLE_RGBA( diffuse_texture, diffuse_texture_sampler,

IL_PIXEL_INPUT(tex) );

}


Overview

  • All resources are bound by convention at runtime

  • Constants organized by Frequency Frame, Camera, Material, Object

  • Textures in the order they are defined


Changes since submission

Changes since Submission

  • Support for 3D Textures

  • Changed from 64x64x4 -> 32x32x16 clusters

  • Optimized Forward Clustered Shader

  • GPU Time: 14.82 ms -> 7.86 ms


Changes since submission1

Changes since Submission

  • Fixed incorrect cotangent-frame construction in the normal mapping shader

  • Added Tonemapping

  • Fixed synchronization issues in the GPU allocator


Restructured rendering loop

Restructured Rendering Loop

Old Scheme

New Scheme

2 / 3 frames

Input Latency:

3 / 4 frames


Demonstration

Demonstration


Planned changes

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?


Questions

Questions?

  • Jendrik Illner

  • [email protected]


  • Login