1 / 61

Extensible Rendering and Pre-visualization of Art - PowerPoint PPT Presentation

  • Uploaded on

Extensible Rendering and Pre-visualization of Art. Daniel Horowitz NVIDIA Corporation Khronos COLLADA FX Workgroup Chairman. Efficient Next-Gen Content. More content Done better Done sooner. Industry Trends. More sophisticated technology Higher consumer expectation

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' Extensible Rendering and Pre-visualization of Art' - nissim-lambert

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
Extensible rendering and pre visualization of art

Extensible RenderingandPre-visualization of Art

Daniel Horowitz

NVIDIA Corporation

Khronos COLLADA FX Workgroup Chairman

Efficient next gen content

Efficient Next-Gen Content

More content

Done better

Done sooner

Industry trends
Industry Trends

  • More sophisticated technology

  • Higher consumer expectation

  • More engine and art complexity

  • Increasing dev staff

  • Explosive growth on art staff

  • Increasing time-to-market

  • Increasing costs

  • Increasing risk

Trend sustainability
Trend Sustainability

  • More technology

    • more variables to control and deliver

    • fewer milestones reached on time

    • less predictable return-on-investment (ROI)

  • Publishers gamble less

    • More franchising

    • Less risk taken for innovation

  • Fewer little-guys

  • I hope you are cringing!

Be humble
Be Humble

  • Why do you buy a game?

    • Art, game-play, story

  • Good developers are humble!

    • Enable art and game-play

    • Who are your customers?

    • Provide good customer services

  • Interact

    • Developers must learn to interact with artists.

    • Artist must not be intimidated by developers

  • Mix it up!

    • Locate artist near developer counterpart

Don t be hasty
Don’t be Hasty

  • By developer for developers (no thanks)

    • But not used by developers?

    • Consult the customer

  • DCC pitfalls

    • Limited usage of DCC application

      • There are thousands of buttons/nodes/modifiers

      • Did you support enough?

    • Limited quantity of art samples

      • Not all art is the same

      • 101 way to do the same thing

Design considerations
Design Considerations

  • Integrate with familiar tools

  • Increase accessibility

    • Put common features to the toolbar+hotkey

  • Keep artists focused ON THE ART!

  • Minimize data transfer costs

  • Minimize iteration costs

  • Detect problems early

  • Humans are slow - automate

Design considerations1
Design Considerations

  • Reduce “brain to screen time”

    • Visualize soon

    • Visualize often

  • Speed conscious

    • Modularity updates are key to real-time

    • Optional 1-click update for extreme cases

  • Beware of Tools Limitation

    • Threading issues (Photoshop, Maya)

    • 3D API co-existence issues

      • Separate owner threads

The many shades of preview
The Many Shades of Preview

  • External viewer

    • Is this your game?

    • Export & launch

    • File-watching

    • Pipes, tmp files, TCP/IP

  • Internal viewer

  • Native DCC viewer plug-ins

  • Provide a playground for models

Building a better material
Building a Better Material

  • Integrate with familiar tools

    • Material assignment

    • Material customization

  • Minimize time-to-preview

  • Author-time vs. Run-time

    • Minimize the visual difference

  • Enable preproduction without a run-time

Building a better material1

Build to your schedule’s needs

Plan to upgrade





Building a Better Material

  • Strings

  • Custom Attributes

  • Material definition plug-ins

  • Material object plug-ins

Building a better material2
Building a Better Material


  • Messy names

  • Parsing

  • Prone to spelling errors

  • Compared with options or without?

Building a better material3
Building a Better Material

Custom attributes

  • Increased flexibility

  • Provides tags and name+value pairs

  • Still prone to spelling errors

  • Hard to locate

  • Reduce errors

    • Use scripts to add, minimize, and build UI

    • Prefix names and tags

Building a better material4
Building a Better Material

Material definition plug-ins

  • Integrated

  • Familiar

  • Accessible

  • Definitions come from file

  • Object’s values live in DCC app

  • Ex. DirectX Maya Preview Pipeline

Building a better material6
Building a Better Material

Material object plug-ins

  • Pros of ‘material definition plug-in’

  • Material Objects come from file

    • reference material definition files

  • Export references, not duplicates

  • Direct use of assets

The shader you never knew
The Shader You Never Knew

  • How can an app load an unknown shader?

  • Are vertex declaration semantics enough?

  • What are these parameters?

  • Are the passes operated in order?

  • What other API calls are needed?

Shader bindings
Shader Bindings

  • Vertex declarations are a good start

  • Feed parameters intelligently

    • Standard Annotations and Semantics

  • Scene

    • Identify scene values for parameters

    • Models - World and skinning matrices, etc

    • Cameras – view, projection, viewport, etc

    • Lights – type, color, direction, position, etc

  • UI

    • Presenting parameters to the artists

Shader orchestration
Shader Orchestration


  • Image burn-in

  • Generating shadow buffers

  • Generating cube maps

  • Accumulating lighting

  • Deferred shading

  • Composition operations

  • Blur, bloom, tone-map, etc…

  • Fur

Shader orchestration1
Shader Orchestration


  • Producing and consuming textures

  • Same geometry, different shader

  • Different geometry, same shader

  • Scheduling passes

Shader orchestration2
Shader Orchestration


  • Convention

    • first valid technique

    • All passes sequentially

  • Profiles

    • Name = Engine procedure

  • Scripts

    • DXSAS 0.8x

  • Execution graph

Shader orchestration3
Shader Orchestration

Execution graphs

  • Modular operations are nodes

  • Graph traversal orders nodes

  • Edges carry data between nodes

  • Nodes may utilize render when evaluated

Shader orchestration4
Shader Orchestration


Canvas Out

Canvas In

Glow Trails


Canvas In

Canvas Out

Canvas In

Canvas Out

Num Images

Num Tiles



Shader orchestration5
Shader Orchestration








Simple Bloom

Modular shaders
Modular Shaders

  • Shader Fragment Libraries

    • Support #include

    • Standard Includes

      • Ex. #include<Sas.fxh>

  • Environment defines

    • #ifdef & #ifndef


  • Optimize

    • Shared parameters

    • Leverage pre-shading

Count your blessings
Count Your Blessings

  • Detect modeling problems early

  • “Bless” the artist’s model on request

    • Water tight

    • UV issues – stretch, skew, tangency

    • Exceeding bone & poly count

    • Naming conventions

    • Layer checks – LOD?

Count your blessings1
Count Your Blessings

  • Visualize the problem

    • No cryptic messages: “Error on vert #13”

    • Highlight

      • Wire-frame

      • Transparent polygons

      • Depth bias

  • Fix model if artist desires/authorizes

  • Validate in automated build pipeline

Art debugged
Art Debugged

  • Visualize post-export data

  • Allow the artist to validate post-export

  • Preview mechanism can enable this fast

    • Internal micro-export pre-viewer

  • Visualizer

    • Normals, tangents, binormals

    • Edges, adjacencies, creases

    • Points, Bounds, Transforms

    • Texture visualizer (more on this later)

Dcc your way
DCC Your Way

  • Customize DCC apps to fit your production

  • Removed/block disallowed operations

  • Move commonly used operations forward

    • Preview buttons

    • Export buttons

    • Blessing tools

  • Script common multi-step setups

A pluggable pipeline
A Pluggable Pipeline

  • Pipeline infrastructure

    • Multi-App or Mono-App plug-in model

    • Mix and match

  • Multi-App model

    • Batch, perl, etc to tie apps together

    • Always in&out of files

  • Plug-in model

    • Script to tie plug-ins together

    • All in-process

    • Avoid continual file read-write

A pluggable pipeline1
A Pluggable Pipeline

  • DXOps

    • C# + Managed DirectX9

    • Framework discovers command & registers

    • Dictionary for sharable models

    • Dictionary for sharable textures

      dxops.exe -s "load tiger.x;" -f "script1.txt" -s "save tiger2.x"

      Where script1.txt reads:

      AddVData type:FLOAT3 usage:NORMAL usageIdx:0;


      AddVData type:FLOAT3 usage:TANGENT usageIdx:0;

      AddVData type:FLOAT3 usage:BINORMAL usageIdx:0;



War hardened pipelines
War-Hardened Pipelines

  • Stage0 = source art, not the export

    • Automate the export

    • Encode export options in model or externally

  • Stage inputs

    • User should not modify stage outputs

    • Use stage specific option files and resources

      • Prevent loss during overwrite

  • Incompatible changes

    • Develop stage to upgrade old resources

War hardened pipelines1
War-Hardened Pipelines

  • Separate features into small assets

    • Geometry, animations, material definitions, materials objects, particle systems, etc

    • Better asset/source control

    • More sharing via references

    • Different tools for different jobs

      • Max (model cages)

      • ZBrush (model high-res)

      • FxComposer (Materials)

      • Maya (animations)

Pipeline evolution
Pipeline Evolution

Khronos Group’s COLLADA

  • COLLAborative Design Activity

  • XML

  • High adoption rate

  • Modern features

  • Designed for lossless exchange

  • Extended user data

  • Not a run-time format

Testimonial and tips for content creation and communication

Testimonial and TipsForContent Creation and Communication

Marcus GhalyGas Powered Games

Realizing you need tools
Realizing You Need Tools

  • Hitting milestones can mask inefficiencies

    • All the assets are in for the milestone so our process works perfectly, right?

  • Use of brute-force instead of automation

    • lengthy multi-step processes introduce errors

    • derivative art proliferates those errors

  • Automation, automation, automation

    • while still giving control to the artists

The producer consumer model
The Producer/Consumer Model


  • Realize that you are not the consumer

    • command line anyone?

    • dev-centric documentation?

    • Error: g_texCount <= texIndex

      • Error: Dude, you used too many textures.

  • So, find out what your consumer wants?

  • How does the consumer think?

    • artist friendly terminology

    • GUI / hotkeys

    • tool layout

The producer consumer model1
The Producer/Consumer Model


  • Realize that:


  • You have a say in how your tools work

  • But in order for this to work:


  • Explain the impact on your schedule

  • Fight for your right to export

Random acts of technology
Random Acts of Technology

  • Do you have a plan for tool development

  • Is there a timeline – micro and macro

  • Is there an official method for tools requests, bug fixing and tracking

  • Does this method allow a back and forth of ideas

    • prototype with the artist early

  • How else are your teams interfacing with each other

Bad conversations
Bad Conversations

  • Art: My file didn’t export so I redid the whole model. It took me 3 extra days.

  • Dev: do you have to broken file?

  • Art: no I threw it away

  • Consider an error reporting mechanism

Bad conversations1
Bad Conversations

  • Art: I exported and it crashed!

  • Damn it devs. Don’t use cryptic error messages. Tell the artist if they scewed up if it is their fault otherwise both peoples time will be wasted tracking it down.