Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
OpenGL ES 3.0 – Creating the Soft Kitty Demo
Kristof Beets
Director of Business Development – PowerVR Graphics
2
Soft Kitty Demonstration Designed for PowerVR Series6 GPU Cores – Demo Video
3
Animating Soft Kitty
Vertex Skinning animates a character using a Bone Structure
Each vertex is influenced by a number of bones - typically 3 to 4 bones
By animating the bones (skeleton) the vertices are moved and the object animated
Cats are highly flexible creatures – 4 bones were insufficient to obtain realistic animation
12 Bones per Vertex required to avoid artefacts in the animation of the Cat Model
3 to 4 times higher workload than typical game animation shader code
Vertex Skinning with 12 Bones Influencing Each Vertex
4
Adding Fur to Soft Kitty
Approximate Fur by rendering multiple shell layers with dotted texture
Dots will connect and form the individual strands of hair forming the fur
More layers increase the quality of the effect – high alpha blended fillrate required
Shell Based Fur Effect
5
Optimising Soft Kitty – Transform Feedback
What is Transform Feedback ? Benefit for Soft Kitty ?
Transform feedback allows vertex shader output to be written out to memory
Complex vertex shader work is only done once and then cached in memory
Following passes use cached data from memory avoiding costly recalculation
Reduced vertex shader workload and increased performance
Execute Expensive Vertex Skinning Animation Only Once
Execute Once
Use Many
Cat Geometry
Vertex Shader
Cat Animated Pose Memory
Render Passes
Shadow
Fur Shells
Transform Feedback
6
Optimising Soft Kitty - Instancing
What is Instancing ? Benefit for Soft Kitty ?
Instancing allows the same vertex buffer to be drawn multiple times in a single API call
Each instance can be drawn with different settings e.g. scale, position, etc.
Avoids multiple API state changes thus reducing CPU loading
Helps reduce the CPU loading of the demonstration improving power efficiency
Single Draw Call for the Fur Effect
Versus SetState()
DrawInstanced()
7
The Soft Kitty Render Loop Overview of Render Passes
8
PVRTune View of Soft Kitty GPU Fully Loaded – No Idle Time Gaps – Vertex Processing Limited Workload
Shadow Render
Horizontal Blur Vertical Blur Final Render
Transform Feedback Animation
Shadow Render
Horizontal & Vertical Blur
Final Render
9
Future Demo Sessions – Series6XT and 7XT PowerVR Rogue Planet and PowerVR Library
PowerVR Rogue Planet
Hardware Tessellation for Terrain Rendering
PowerVR Library
Physically Based Rendering
10
Soft Kitty – Bloopers… Development Issues… Small shader mistakes… big impact
PVRTrace is the ideal tool to help figure out these issues…
OpenGL ES 3.0 – Creating the Soft Kitty Demo
Kristof Beets
Director of Business Development – PowerVR Graphics