Title: GDC 2005
1(No Transcript)
2Pre-visualization of Art andExtensible
Rendering With Shaders
- Daniel Horowitz
- NVIDIA Corporation
- Khronos COLLADA FX Chairman
3Big Words What does it mean?
- Enabling efficiency
- Prototype
- Produce
- Preview
- Focus on
- Reduce art iteration counts
- Reduce time spent not authoring art
- Reduce re-authoring of art
- Reduce team dependencies
4Why?
5Industry Trends
- Technology
- More sophisticated
- Higher consumer expectation
- More software and content complexity
- Staffing
- Increasing developer staff
- Explosive growth on artist staff
- Production and publishing
- Increasing time-to-market, cost, risk
- More franchising
- Less gambling on innovation
6Why Explosive Artists Growth?
- Better Art
- More Polygons
- More textures - albedo, specular, normal
- More resolution
- More animations
- More Art
- More character
- More levels
- More clutter
- Trash, shrubbery, small details
7Breaking the Trend
- Whats your model for cutting costs?
- Reduce delivery time?
- Casual games
- Licensing
- Increasing return-on-investment?
- Porting
- Reduce staff size?
- Contract workers
- What about better tools infrastructure?
8BuildingA Better Tool for the Job
9Be Humble
- Why do customers buy a game?
- Art, game-play, story
- Good developers are humble!
- Who are your clients?
- Mostly artists and game-play designers
- Provide good customer service to clients
10Design Considerations
- Keep artists focused ON THE ART!
- Reduce brain to screen time
- Visualize soon
- Visualize often
- Detect problems early
- Humans are slow - automate
11Dont be Hasty
- By developer for developers (no thanks)
- Consult the clients
- DCC commandments
- Know thy application
- Limited usage of DCC application
- There are thousands of buttons/nodes/modifiers
- Did you support enough?
- Thou shall test more than 1 artists work
- Limited quantity of art samples
- Not all art is the same
- 101 way to do the same thing
12Production with Preview
- Author-time vs. Run-time
- Minimize the visual difference
- Minimize time-to-visualize (ie preview)
- Enable preproduction without a run-time
- Integrate with familiar tools
- Model viewer
- Material assignment
- Material customization
13External Viewer
- Is this your game?
- Export launch
- File-watching
- Temp files
- Pipes, TCP/IP
- Performance tools (PIX, NVPerfHudES)
- Provide a playground for models
14Internal Viewer
- Microsofts plug-ins for Maya
15Native Viewer
- NVIDIA Cg plug-ins for Maya
16Game Materials
- Strings (Name Hackery)
- Easy to implement BUT
- Messy names
- Parsing
- Prone to spelling errors
- Compared with options or without?
17Game Materials
- Custom attributes
- Increased flexibility
- Provides tags and namevalue pairs
- Still prone to spelling errors
- Hard to locate
- Reduce errors
- Use scripts or build UI to add and modify
- Prefix names and tags
18Game Materials
- Effect definition plug-ins
- Integrated
- Familiar
- Accessible
- Definitions come from a shader file
- Custom values live in DCC app
- Ex. DirectX plug-ins for Maya
19Game Materials
20Game Materials
- Effect object plug-ins
- Import/reference material objects
- Pros of effect definition plug-in
- Direct use of assets
- Assign materials
- Trade-offs
- Restricted creation
- Restricted modification
21Shader Friendly Tools
22Mystery Meat
- Vertex semantics are not enough!
- What are these parameters?
- How do I operate it?
23Shader Metadata
- User Interface
- Scene Binding
- Orchestration
24User Interface
- How do you present bools, ints, floats?
- Controls
- Ranges
- Stride
- Steps
25Scene Binding
- Vertex declarations are a good start
- What about the parameters?
- Scene
- Identify scene values for parameters
- Models - World and skinning matrices, etc
- Cameras view, projection, viewport, etc
- Lights type, color, direction, position, etc
26Orchestration
- Scenarios
- Image burn-in
- Generating shadow buffers
- Generating cube maps
- Blur, bloom, tone-map, etc
- Fur
- Themes
- Producing and consuming textures
- Same geometry, different shader
- Scheduling passes
27Orchestration
- Solutions
- Convention
- first valid technique
- All passes sequentially
- Profiles
- Name Engine procedure (ex. Fur)
- Scripts
- DXSAS 0.8x
- Execution graph
28Orchestration
29Orchestration
30Orchestration
- Execution graphs
- Nodes perform interesting operations
- Ex Color blending, Phong, Blur, Bloom
- Edges carry data between nodes
- Nodes utilizing the render
- Artist understand graph flow
- Maya, XSI
31Orchestration
Simple Bloom
32Detecting Problems Early
33Blessing Tools - Detection
- Detect modeling problems early
- Bless the artists model on request
- Water tight
- UV issues stretch, skew, tangency
- Exceeding bone poly count
- Naming conventions
- Layer checks LOD?
34Blessing Tools - Visualization
- Visualize the problem
- No cryptic messages Error on poly export
- 5-sided polygons are not supported
- Highlight
- Wire-frame
- Transparent polygons
- Depth bias
- Fix model if authorized
35Art Debugged
- Allow the artist to validate post-export
- Visualizer
- Normals, tangents, binormals
- Edges, adjacencies, creases
- Points, Bounds, Transforms
- Texture visualizer (more on this later)
- Build into preview mechanism
36Content Pipeline
37War-Hardened Pipelines
- Stage0 source art, not export files
- Automate the export
- Encode export options in model or externally
- Stag-to-stage
- User should not modify stage outputs
- Use stage option files and resources
- Prevent loss between iterations
- Incompatible changes
- Dont make the artist fix it
- Version your formats
- Develop stage to upgrade old resources
38War-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)
39COLLADA Pipeline
- Khronos Groups COLLADA
- Geometries, scenes, effects, physics, etc
- Supported by all 3 DCC ISVs
- XML
- Modern features
- Designed for lossless exchange
- Extended user data
- Not a run-time format
40COLLADA Pipeline
41A 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 inout of files
- Plug-in model
- Script to tie plug-ins together
- All in-process
- Avoid continual file read-write
- Big win on human-readable model files
42A 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 typeFLOAT3 usageNORMAL usageIdx0
- GenNormals
- AddVData typeFLOAT3 usageTANGENT usageIdx0
- AddVData typeFLOAT3 usageBINORMAL usageIdx0
- GenTangentframes
- GenAdjacency
43An Artists Perspective
- Marcus GhalyGas Powered Games
44Totally Awesome Tools
45Rapid Visualization
46Customized Pipeline Stages
- Conversion to DDS
- Artist driven Profiles
- High visual quality maintained
- DPF file drives conversion process
- Master Spreadsheet
- Export and conversion settings
- Maximums
- Bone, vertex, triangle counts
- Customizable per asset
- Feature requirements and exceptions
- Statistics Spreadsheet
- Handy for producer
47Check Assets and Build Materials
48No-Cast
49Model Viewer
50Bone Name Orientation
51Multi-Animation Review
52Texture Inspection
53Normal-maps as Textures
54Albedo Maps
55Normals, Spec, and Reflectivity
56The Works
57Custom Shader Techniques
58Tools and Automation
- Hitting milestones can mask inefficiencies
- All the assets are in for the milestone so our
process works perfectly, right? - How much wasted time could be saved with better
tools? - Automation instead of brute-force
- lengthy multi-step processes introduce errors
- derivative art proliferates those errors
- Dont change the art on the artists
- Give the artists control
59The Producer/Consumer Model
- Producers
- Realize that you are not the consumer
- command line anyone?
- In-game create -npc -hrmp -ueb2304 -2
- Right-Click Menus / UI
- dev-centric documentation?
- So, find out what your consumer wants?
- How does the consumer think?
- artist friendly terminology
- GUI / hotkeys
- tool layout
60The Producer/Consumer Model
- Consumers
- Realize that
- YOU ARE THE CONSUMER
- You have a say in how your tools work
- But in order for this to work
- YOU MUST GIVE FEEDBACK
- Explain the impact on your schedule
- Fight for your right to preview
61Whats Your Game Plan?
62Random Acts of Technology
- Dont wait until its broken
- Tool role out is critical to the artist
- Tool timeline should not only revolve around
developer milestones - Prototype tools UI with the artist early
- Pen and paper does the job
63fin
64Annex
65(No Transcript)
66(No Transcript)
67(No Transcript)
68(No Transcript)
69(No Transcript)
70(No Transcript)
71(No Transcript)
72(No Transcript)
73Shaders Everywhere
74Friendly Export Info
75Friendly Failure
76DCC Your Way
- Customize DCC apps to fit your production
- Disallowed operations
- Remove, block, or fail blessing
- Move frequently-used tools to dashboard
- Preview buttons
- Export buttons
- Blessing tools
- Script common multi-step setups
77Shader Orchestration
78Modular Shaders
- Shader Fragment Libraries
- Support include
- Standard Includes
- Ex. includeltSas.fxhgt
- Environment defines
- ifdef ifndef
- Ex. SAS_PRESENT
- Optimize
- Shared parameters
- Leverage pre-shading