The goal of this session is to demonstrate techniques that improve GPU scalability when rendering complex scenes. This is achieved through a modular design that separates the scene graph representation from the rendering backend. We will explain how the modules in this pipeline are designed and give insights to implementation details, which leverage GPU''s compute capabilities for scene graph processing. Our modules cover topics such as shader generation for improved parameter management, synchronizing updates between scenegraph and rendering backend, as well as efficient data structures inside the renderer.
Video here: http://on-demand.gputechconf.com/gtc/2013/video/S3032-Advanced-Scenegraph-Rendering-Pipeline.mp4
Optimizing the Graphics Pipeline with Compute, GDC 2016Graham Wihlidal
With further advancement in the current console cycle, new tricks are being learned to squeeze the maximum performance out of the hardware. This talk will present how the compute power of the console and PC GPUs can be used to improve the triangle throughput beyond the limits of the fixed function hardware. The discussed method shows a way to perform efficient "just-in-time" optimization of geometry, and opens the way for per-primitive filtering kernels and procedural geometry processing.
Takeaway:
Attendees will learn how to preprocess geometry on-the-fly per frame to improve rendering performance and efficiency.
Intended Audience:
This presentation is targeting seasoned graphics developers. Experience with DirectX 12 and GCN is recommended, but not required.
Ever wondered how to use modern OpenGL in a way that radically reduces driver overhead? Then this talk is for you.
John McDonald and Cass Everitt gave this talk at Steam Dev Days in Seattle on Jan 16, 2014.
OpenGL 4.4 provides new features for accelerating scenes with many objects, which are typically found in professional visualization markets. This talk will provide details on the usage of the features and their effect on real-life models. Furthermore we will showcase how more work for rendering a scene can be off-loaded to the GPU, such as efficient occlusion culling or matrix calculations.
Video presentation here: http://on-demand.gputechconf.com/gtc/2014/video/S4379-opengl-44-scene-rendering-techniques.mp4
A description of the next-gen rendering technique called Triangle Visibility Buffer. It offers up to 10x - 20x geometry compared to Deferred rendering and much higher resolution. Generally it aligns better with memory access patterns in modern GPUs compared to Deferred Lighting like Clustered Deferred Lighting etc.
Siggraph2016 - The Devil is in the Details: idTech 666Tiago Sousa
A behind-the-scenes look into the latest renderer technology powering the critically acclaimed DOOM. The lecture will cover how technology was designed for balancing a good visual quality and performance ratio. Numerous topics will be covered, among them details about the lighting solution, techniques for decoupling costs frequency and GCN specific approaches.
Optimizing the Graphics Pipeline with Compute, GDC 2016Graham Wihlidal
With further advancement in the current console cycle, new tricks are being learned to squeeze the maximum performance out of the hardware. This talk will present how the compute power of the console and PC GPUs can be used to improve the triangle throughput beyond the limits of the fixed function hardware. The discussed method shows a way to perform efficient "just-in-time" optimization of geometry, and opens the way for per-primitive filtering kernels and procedural geometry processing.
Takeaway:
Attendees will learn how to preprocess geometry on-the-fly per frame to improve rendering performance and efficiency.
Intended Audience:
This presentation is targeting seasoned graphics developers. Experience with DirectX 12 and GCN is recommended, but not required.
Ever wondered how to use modern OpenGL in a way that radically reduces driver overhead? Then this talk is for you.
John McDonald and Cass Everitt gave this talk at Steam Dev Days in Seattle on Jan 16, 2014.
OpenGL 4.4 provides new features for accelerating scenes with many objects, which are typically found in professional visualization markets. This talk will provide details on the usage of the features and their effect on real-life models. Furthermore we will showcase how more work for rendering a scene can be off-loaded to the GPU, such as efficient occlusion culling or matrix calculations.
Video presentation here: http://on-demand.gputechconf.com/gtc/2014/video/S4379-opengl-44-scene-rendering-techniques.mp4
A description of the next-gen rendering technique called Triangle Visibility Buffer. It offers up to 10x - 20x geometry compared to Deferred rendering and much higher resolution. Generally it aligns better with memory access patterns in modern GPUs compared to Deferred Lighting like Clustered Deferred Lighting etc.
Siggraph2016 - The Devil is in the Details: idTech 666Tiago Sousa
A behind-the-scenes look into the latest renderer technology powering the critically acclaimed DOOM. The lecture will cover how technology was designed for balancing a good visual quality and performance ratio. Numerous topics will be covered, among them details about the lighting solution, techniques for decoupling costs frequency and GCN specific approaches.
Bindless Deferred Decals in The Surge 2Philip Hammer
These are the slides for my talk at Digital Dragons 2019 in Krakow.
Update: The recordings are online on youtube now:
https://www.youtube.com/watch?v=e2wPMqWETj8
OpenGL NVIDIA Command-List: Approaching Zero Driver OverheadTristan Lorach
This presentation introduces a new NVIDIA extension called Command-list.
The purpose of this presentation is to explain the basic concepts on how to use it and show what are the benefits.
The sample I used for the talk is here: https://github.com/nvpro-samples/gl_commandlist_bk3d_models
The driver for trying should be PreRelease 347.09
http://www.nvidia.com/download/driverResults.aspx/80913/en-us
A technical deep dive into the DX11 rendering in Battlefield 3, the first title to use the new Frostbite 2 Engine. Topics covered include DX11 optimization techniques, efficient deferred shading, high-quality rendering and resource streaming for creating large and highly-detailed dynamic environments on modern PCs.
Secrets of CryENGINE 3 Graphics TechnologyTiago Sousa
In this talk, the authors will describe an overview of a different method for deferred lighting approach used in CryENGINE 3, along with an in-depth description of the many techniques used. Original file and videos at http://crytek.com/cryengine/presentations
Game engines have long been in the forefront of taking advantage of the ever increasing parallel compute power of both CPUs and GPUs. This talk is about how the parallel compute is utilized in practice on multiple platforms today in the Frostbite game engine and how we think the parallel programming models, hardware and software in the industry should look like in the next 5 years to help us make the best games possible
Rendering Technologies from Crysis 3 (GDC 2013)Tiago Sousa
This talk covers changes in CryENGINE 3 technology during 2012, with DX11 related topics such as moving to deferred rendering while maintaining backward compatibility on a multiplatform engine, massive vegetation rendering, MSAA support and how to deal with its common visual artifacts, among other topics.
Bill explains some of the ways that the Vertex Shader can be used to improve performance by taking a fast path through the Vertex Shader rather than generating vertices with other parts of the pipeline in this AMD technology presentation from the 2014 Game Developers Conference in San Francisco March 17-21. Check out more technical presentations at http://developer.amd.com/resources/documentation-articles/conference-presentations/
Talk by Yuriy O’Donnell at GDC 2017.
This talk describes how Frostbite handles rendering architecture challenges that come with having to support a wide variety of games on a single engine. Yuriy describes their new rendering abstraction design, which is based on a graph of all render passes and resources. This approach allows implementation of rendering features in a decoupled and modular way, while still maintaining efficiency.
A graph of all rendering operations for the entire frame is a useful abstraction. The industry can move away from “immediate mode” DX11 style APIs to a higher level system that allows simpler code and efficient GPU utilization. Attendees will learn how it worked out for Frostbite.
NVIDIA OpenGL and Vulkan Support for 2017Mark Kilgard
Learn how NVIDIA continues improving both Vulkan and OpenGL for cross-platform graphics and compute development. This high-level talk is intended for anyone wanting to understand the state of Vulkan and OpenGL in 2017 on NVIDIA GPUs. For OpenGL, the latest standard update maintains the compatibility and feature-richness you expect. For Vulkan, NVIDIA has enabled the latest NVIDIA GPU hardware features and now provides explicit support for multiple GPUs. And for either API, NVIDIA's SDKs and Nsight tools help you develop and debug your application faster.
NVIDIA booth theater presentation at SIGGRAPH in Los Angeles, August 1, 2017.
http://www.nvidia.com/object/siggraph2017-schedule.html?id=sig1732
Get your SIGGRAPH driver release with OpenGL 4.6 and the latest Vulkan functionality from
https://developer.nvidia.com/opengl-driver
Course presentation at SIGGRAPH 2014 by Charles de Rousiers and Sébastian Lagarde at Electronic Arts about transitioning the Frostbite game engine to physically-based rendering.
Make sure to check out the 118 page course notes on: http://www.frostbite.com/2014/11/moving-frostbite-to-pbr/
During the last few months, we have revisited the concept of image quality in Frostbite. The core of our approach was to be as close as possible to a cinematic look. We used the concept of reference to evaluate the accuracy of produced images. Physically based rendering (PBR) was the natural way to achieve this. This talk covers all the different steps needed to switch a production engine to PBR, including the small details often bypass in the literature.
The state of the art of real-time PBR techniques allowed us to achieve good overall results but not without production issues. We present some techniques for improving convolution time for image based reflection, proper ambient occlusion handling, and coherent lighting units which are mandatory for level editing.
Moreover, we have managed to reduce the quality gap, highlighted by our systematic reference comparison, in particular related to rough material handling, glossy screen space reflection, and area lighting.
The technical part of PBR is crucial for achieving good results, but represents only the top of the iceberg. Frostbite has become the de facto high-end game engine within Electronic Arts and is now used by a large amount of game teams. Moving all these game teams from “old fashion” lighting to PBR has required a lot of education, which have been done in parallel of the technical development. We have provided editing and validation tools to help the transition of art production. In addition, we have built a flexible material parametrisation framework to adapt to the various authoring tools and game teams’ requirements.
The presentation describes Physically Based Lighting Pipeline of Killzone : Shadow Fall - Playstation 4 launch title. The talk covers studio transition to a new asset creation pipeline, based on physical properties. Moreover it describes light rendering systems used in new 3D engine built from grounds up for upcoming Playstation 4 hardware. A novel real time lighting model, simulating physically accurate Area Lights, will be introduced, as well as hybrid - ray-traced / image based reflection system.
We believe that physically based rendering is a viable way to optimize asset creation pipeline efficiency and quality. It also enables the rendering quality to reach a new level that is highly flexible depending on art direction requirements.
Bindless Deferred Decals in The Surge 2Philip Hammer
These are the slides for my talk at Digital Dragons 2019 in Krakow.
Update: The recordings are online on youtube now:
https://www.youtube.com/watch?v=e2wPMqWETj8
OpenGL NVIDIA Command-List: Approaching Zero Driver OverheadTristan Lorach
This presentation introduces a new NVIDIA extension called Command-list.
The purpose of this presentation is to explain the basic concepts on how to use it and show what are the benefits.
The sample I used for the talk is here: https://github.com/nvpro-samples/gl_commandlist_bk3d_models
The driver for trying should be PreRelease 347.09
http://www.nvidia.com/download/driverResults.aspx/80913/en-us
A technical deep dive into the DX11 rendering in Battlefield 3, the first title to use the new Frostbite 2 Engine. Topics covered include DX11 optimization techniques, efficient deferred shading, high-quality rendering and resource streaming for creating large and highly-detailed dynamic environments on modern PCs.
Secrets of CryENGINE 3 Graphics TechnologyTiago Sousa
In this talk, the authors will describe an overview of a different method for deferred lighting approach used in CryENGINE 3, along with an in-depth description of the many techniques used. Original file and videos at http://crytek.com/cryengine/presentations
Game engines have long been in the forefront of taking advantage of the ever increasing parallel compute power of both CPUs and GPUs. This talk is about how the parallel compute is utilized in practice on multiple platforms today in the Frostbite game engine and how we think the parallel programming models, hardware and software in the industry should look like in the next 5 years to help us make the best games possible
Rendering Technologies from Crysis 3 (GDC 2013)Tiago Sousa
This talk covers changes in CryENGINE 3 technology during 2012, with DX11 related topics such as moving to deferred rendering while maintaining backward compatibility on a multiplatform engine, massive vegetation rendering, MSAA support and how to deal with its common visual artifacts, among other topics.
Bill explains some of the ways that the Vertex Shader can be used to improve performance by taking a fast path through the Vertex Shader rather than generating vertices with other parts of the pipeline in this AMD technology presentation from the 2014 Game Developers Conference in San Francisco March 17-21. Check out more technical presentations at http://developer.amd.com/resources/documentation-articles/conference-presentations/
Talk by Yuriy O’Donnell at GDC 2017.
This talk describes how Frostbite handles rendering architecture challenges that come with having to support a wide variety of games on a single engine. Yuriy describes their new rendering abstraction design, which is based on a graph of all render passes and resources. This approach allows implementation of rendering features in a decoupled and modular way, while still maintaining efficiency.
A graph of all rendering operations for the entire frame is a useful abstraction. The industry can move away from “immediate mode” DX11 style APIs to a higher level system that allows simpler code and efficient GPU utilization. Attendees will learn how it worked out for Frostbite.
NVIDIA OpenGL and Vulkan Support for 2017Mark Kilgard
Learn how NVIDIA continues improving both Vulkan and OpenGL for cross-platform graphics and compute development. This high-level talk is intended for anyone wanting to understand the state of Vulkan and OpenGL in 2017 on NVIDIA GPUs. For OpenGL, the latest standard update maintains the compatibility and feature-richness you expect. For Vulkan, NVIDIA has enabled the latest NVIDIA GPU hardware features and now provides explicit support for multiple GPUs. And for either API, NVIDIA's SDKs and Nsight tools help you develop and debug your application faster.
NVIDIA booth theater presentation at SIGGRAPH in Los Angeles, August 1, 2017.
http://www.nvidia.com/object/siggraph2017-schedule.html?id=sig1732
Get your SIGGRAPH driver release with OpenGL 4.6 and the latest Vulkan functionality from
https://developer.nvidia.com/opengl-driver
Course presentation at SIGGRAPH 2014 by Charles de Rousiers and Sébastian Lagarde at Electronic Arts about transitioning the Frostbite game engine to physically-based rendering.
Make sure to check out the 118 page course notes on: http://www.frostbite.com/2014/11/moving-frostbite-to-pbr/
During the last few months, we have revisited the concept of image quality in Frostbite. The core of our approach was to be as close as possible to a cinematic look. We used the concept of reference to evaluate the accuracy of produced images. Physically based rendering (PBR) was the natural way to achieve this. This talk covers all the different steps needed to switch a production engine to PBR, including the small details often bypass in the literature.
The state of the art of real-time PBR techniques allowed us to achieve good overall results but not without production issues. We present some techniques for improving convolution time for image based reflection, proper ambient occlusion handling, and coherent lighting units which are mandatory for level editing.
Moreover, we have managed to reduce the quality gap, highlighted by our systematic reference comparison, in particular related to rough material handling, glossy screen space reflection, and area lighting.
The technical part of PBR is crucial for achieving good results, but represents only the top of the iceberg. Frostbite has become the de facto high-end game engine within Electronic Arts and is now used by a large amount of game teams. Moving all these game teams from “old fashion” lighting to PBR has required a lot of education, which have been done in parallel of the technical development. We have provided editing and validation tools to help the transition of art production. In addition, we have built a flexible material parametrisation framework to adapt to the various authoring tools and game teams’ requirements.
The presentation describes Physically Based Lighting Pipeline of Killzone : Shadow Fall - Playstation 4 launch title. The talk covers studio transition to a new asset creation pipeline, based on physical properties. Moreover it describes light rendering systems used in new 3D engine built from grounds up for upcoming Playstation 4 hardware. A novel real time lighting model, simulating physically accurate Area Lights, will be introduced, as well as hybrid - ray-traced / image based reflection system.
We believe that physically based rendering is a viable way to optimize asset creation pipeline efficiency and quality. It also enables the rendering quality to reach a new level that is highly flexible depending on art direction requirements.
Use a game engine to create a video game. Its reusable components provide the general functionality. Define resources and building blocks.
What are the key elements of a game engine?
Killzone Shadow Fall: Threading the Entity Update on PS4jrouwe
On the PS3 the SPUs were too limited for doing typical entity logic (e.g. humanoids walking around and shooting), so all of our entity logic was running on a single thread. For the PS4 we adopted the "entity as a job" approach and developed a set of rules that entities have to adhere to. We also developed a way to validate these rules at runtime so that no race conditions occur. This presentation will also show how we spread out entity updates across frames. The resulting system has proven itself on the PS4 -- and there have been surprisingly few race conditions that were not easily caught.
Computer Graphics - Lecture 01 - 3D Programming I💻 Anton Gerdelan
Slides from when I was teaching CS4052 Computer Graphics at Trinity College Dublin in Ireland.
These slides aren't used any more so they may as well be available to the public!
There are some mistakes in the slides, I'll try to comment below these.
This is the second lecture, and introduces programming with OpenGL 4 and shaders.
Presented as a pre-conference tutorial at the GPU Technology Conference in San Jose on September 20, 2010.
Learn about NVIDIA's OpenGL 4.1 functionality available now on Fermi-based GPUs.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Advanced Scenegraph Rendering Pipeline
1. Advanced Scenegraph Rendering Pipeline
Markus Tavenrath – NVIDIA – matavenrath@nvidia.com
Christoph Kubisch – NVIDIA – ckubisch@nvidia.com
2. 2
Traditional approach is render while
traversing a SceneGraph
Scene complexity increases
– Deep hierarchies, traversal expensive
– Large objects split up into a lot of
little pieces, increased draw call count
– Unsorted rendering, lot of state
changes
CPU becomes bottleneck when
rendering those scenes
SceneGraph Rendering
models courtesy of PTC
Introduction SceneGraph SceneTree ShapeList Renderer
3. 3
Overview
Introduction SceneGraph SceneTree ShapeList Renderer
G0
T0 T1
T2
S1 S2
G1
T3
S0
G0
T0 T1
T2
S1 S2
G1
T3
S0
T2‘
S1‘ S2‘
G1‘
T3‘
ShapeList
S1 S2S0 S1‘ S2‘
RendererCache
S1 S2S0 S1‘ S2‘
SceneGraph SceneTree ShapeList
Renderer
Gi Group Ti Transform Si Shape
4. 4
SceneGraph
G0
T0 T1
T2
S1 S2
G1
T3
S0
SceneGraph is DAG
No unique path to a node
– Cannot efficiently cache path-dependent data per node
Traversal runs over 14 nodes for rendering.
Processed 6 Transform Nodes
– 6 matrix/matrix multiplications and inversions
Nodes are usually ‚large‘ and not linear in memory
– Each node access generates at least one, most
likely cache misses
Gi Group Ti Transform Si Shape
Introduction SceneGraph SceneTree ShapeList Renderer
5. 5
SceneTree construction
G0
T0 T1
T2
S1 S2
G1
T3
S0
Gi Group Ti Transform Si Shape
Introduction SceneGraph SceneTree ShapeList Renderer
G0
T0 T1
T2
S1 S2
G1
T3
S0
T2‘
S1‘ S2‘
G1‘
T3‘
G0 -> (G0)
T0 -> (T0)
T1 -> (T1)
S0 -> (S0)
G1 -> (G1)
T2 -> (T2)
S1 -> (S1)
T3 -> (T3)
S2 -> (S2)
G0 -> (G0)
T0 -> (T0)
T1 -> (T1)
S0 -> (S0)
G1 -> (G1,G1‘)
T2 -> (T2,T2‘)
S1 -> (S1,S1‘)
T3 -> (T3,T3‘)
S2 -> (S2,S2‘)
Observer based
synchronization
6. 6
SceneTree has unique path to each
node
Store accumulated attributes like
transforms or visibility in each Node
Trade memory for performance
– 64-byte per node, 100k nodes ~6MB
– Transforms stored separate vector
Traversal still processes 14 nodes.
Gi Group Ti Transform Si Shape
G0
T0 T1
T2
S1 S2
G1
T3
S0
T2‘
S1‘ S2‘
G1‘
T3‘
SceneTree
Introduction SceneGraph SceneTree ShapeList Renderer
7. 7
SceneTree invalidate attributes cache
Keep dirty flags per node
Keep dirty vector per flag
SceneGraph change notifications
invalidated nodes
– If not dirty, mark dirty and add to
dirty vector
– O(1) operation, no sorting required
upon changes
Before rendering a frame process
dirty vectorDirty vector
T1T3 T3‘
G0
T0 T1
T2
S1 S2
G1
T3
S0
T2‘
S1‘ S2‘
G1‘
T3‘
Introduction SceneGraph SceneTree ShapeList Renderer
8. 8
T3‘
T1
T2‘T3
SceneTree validate attribute cache
Walk through dirty vector
— Node marked dirty -> search top dirty
— Validate subtree from top dirty
Validation example
— T3 dirty, traverse up to root node
T3 top dirty node, validate T3 subtree
— T3‘ dirty, traverse up to root node
T1 top dirty node, validate T1 subtree
— T1 not dirty
No work to do
Dirty vector
T1T3 T3‘
G0
T0 T1
T2
S1 S2
G1
T3
S0
T3‘
S1‘ S2‘
G1‘
T3 T1T3‘
Introduction SceneGraph SceneTree ShapeList Renderer
9. 9
SceneTree to ShapeList
Add Events for ShapeList generation
– addShape(Shape)
– removeShape(Shape)
ShapeList
S1 S2S0 S1‘ S2‘
Gi Group Ti Transform Si Shape
G0
T0 T1
T2
S1 S2
G1
T3
S0
T2‘
S1‘ S2‘
G1‘
T3‘
Introduction SceneGraph SceneTree ShapeList Renderer
10. 10
SceneGraph to SceneTree synchronization
– Store accumulated data per node instance
SceneTree to ShapeList synchronization
– Avoid SceneTree traversal
Next: Efficient data structure for renderer based on
ShapeList
Summary
Introduction SceneGraph SceneTree ShapeList Renderer
12. 12
Example Parameter Grouping
Shader independent globals, i.e. camera
Object parameters, i.e. position/rotation/scaling
Material handles, i.e. textures and buffers
Material raw values, i.e. float, int and bool
Light, i.e. light sources and shadow maps
Shader dependent globals, i.e. environment map
always
frequent
constant
rare
Introduction SceneGraph SceneTree ShapeList Renderer
Parameters Frequency
14. 14
ParameterData Cache
Cache is a big char[] with all ParameterData.
ParameterData are sorted by first usage.
Parameters are converted to Target-API datatype, i.e.
— Int8 to int32, TextureHandle to bindless texture...
Updating parameters is only playback of data in memory,
no conditionals.
Filter for used parameters to reduce cache size
Parameters
colored
red blue
Parameters
textured
wood marble
Introduction SceneGraph SceneTree ShapeList Renderer
15. 15
Vertex Attribute Cache
Big char[] with vertex attribute pointers
— Bindless pointers, VBOs or VAB streams
Each set of attributes stored only once
Ordered by first usage
Attributes required by program are known
— Store only used attributes in Cache
— Useful for special passes like depth pass where only pos is
required
attributes
colored
pos
normal
pos
normal
pos
normal
Introduction SceneGraph SceneTree ShapeList Renderer
16. 16
Renderer Cache complete
Parameters
colored
Phong red Phong blue
Shapes
colored
‚colored‘ ‚colored‘‚colored‘
Attributes
colored
pos
normal
pos
normal
pos
normal
Introduction SceneGraph SceneTree ShapeList Renderer
foreach(shape) {
if (visible(shape)) {
if (changed(parameters)) render(parameters);
if (changed(attributes)) render(attributes);
render(shape);
}
}
17. 17
CPU boundedness improved (application)
– Recomputation of attributes (transforms)
– Deep hierarchies: traversal expensive
– Unsorted rendering, lot of state changes
CPU boundedness remaining (OpenGL usage)
– Large objects split up into a lot of little pieces,
increased draw call count
Achievements
ShapeList
Renderer
SceneTree
RendererCache
OpenGL
implementation
Renderer
18. 18
Avoid data redundancy
– Data stored once, referenced multiple times
– Update only once (less host to gpu transfers)
Increase batching potential
– Further cuts api calls
– Less driver CPU work
Minimize CPU/GPU interaction
– Allow GPU to update its own data
– Lower api usage when scene is changed little
– E.g. GPU-based culling
Enabling Hardware Scalability
19. 19
Avoids classic SceneGraph design
Geometry
– Vertex/IndexBuffer
– BoundingBox
– Divided into parts (CAD features)
Material
Node Hierarchy
Object
– Node and Geometry reference
– For each Geometry part
Material reference
Enabled state
model courtesy of PTC
OpenGL Research Framework
99000 total parts, 3.8 Mtris, 5.1 Mverts
700 geometries, 128 materials
2000 objects
20. 20
Kepler Quadro K5000, i7
vbo bind and drawcall per part, i.e. 99 000
drawcalls
scene draw time > 38 ms (CPU bound)
vbo bind per geometry, drawcalls per part
scene draw time > 14 ms (CPU bound)
All subsequent techniques raise perf significantly
scene draw time < 6 ms
1.8 ms with occlusion culling
Performance baseline
21. 21
MultiDraw (1.x)
– Render ranges from current VBO/IBO
– Single drawcall for many distinct objects
– Reduces overhead for low complexity objects
ARB_draw_indirect (4.x)
ARB_multi_draw_indirect
– Store drawcall information on GPU or HOST
– Let GPU create/modify GPU buffers
Drawcall Reduction
DrawElementsIndirect
{
GLuint count;
GLuint instanceCount;
GLuint firstIndex;
GLint baseVertex;
GLuint baseInstance;
}
22. 22
– All use multidraw capabilites to
render across gaps
– BATCHED use CPU generated list of
combined parts with same state
Object‘s part cache must be rebuilt
based on material/enabled state
– INDIVIDUAL stay on per-part level
No caches, can update assignment or
cmd buffers directly
Drawing Techniques
a b c
a+b c
Parts with different materials in geometry
Grouped and „grown“ drawcalls
Single call, encode material/matrix
assignment via vertex attribute
23. 23
Group parameters by frequency of change
Generating shader strings allows different storage
backend for „uniforms“
Parameters
Effect "Phong {
Group „material" (many) {
vec4 "ambient"
vec4 "diffuse"
vec4 "specular"
}
Group „view" (few) {
vec4 „viewProjTM„
}
Group „object" (many) {
mat4 „worldTM„
}
... Code ...
}
OpenGL 2 uniforms
OpenGL 3,4 buffers
NVIDIA bindless technology...
24. 24
GL2 approach:
– Avoid many small
uniforms
– Arrays of uniforms,
grouped by frequency of
update, tightly-packed
Parameters
uniform mat4 worldMatrices[2];
uniform vec4 materialData[8];
#define matrix_world worldMatrices[0]
#define matrix_worldIT worldMatrices[1]
#define material_diffuse materialData[0]
#define material_emissive materialData[1]
#define material_gloss materialData[2].x
// GL3 can use floatBitsToInt and friends
// for free reinterpret casts within
// macros
...
wPos = matrix_world * oPos;
...
// in fragment shader
color = material_diffuse +
material_emissive;
...
25. 25
GL4 approach:
– TextureBufferObject
(TBO) for matrices
– UniformBufferObject
(UBO) with array data
to save costly binds
– Assignment indices
passed as vertex
attribute
Parameters in vec4 oPos;
uniform samplerBuffer matrixBuffer;
uniform materialBuffer {
Material materials[512];
};
in ivec2 vAssigns;
flat out ivec2 fAssigns;
// in vertex shader
fAssigns = vAssigns;
worldTM = getMatrix (matrixBuffer,
vAssigns.x);
wPos = worldTM * oPos;
...
// in fragment shader
color = materials[fAssigns.y].color;
...
26. 26
setupSceneMatrixAndMaterialBuffer (scene);
foreach (obj in scene) {
if ( isVisible(obj) ) {
setupDrawGeometryVertexBuffer (obj);
// iterate over different materials used
foreach ( batch in obj.materialCaches) {
glVertexAttribI2i (indexAttr, batch.materialIndex, matrixIndex);
glMultiDrawElements (GL_TRIANGLES, batch.counts, GL_UNSIGNED_INT ,
batch.offsets,batched.numUsed);
}
}
}
OpenGL 4.x approach
27. 27
glVertexAttribDivisor == 0 : VArray[ gl_VertexID + baseVertex ]
glVertexAttribDivisor != 0 : VArray[ gl_InstanceID / VDivisor + baseInstance ]
VArray[ 0 / 1 + baseInstance ]
Material & Matrix Index
VertexBuffer (divisor:1)
Position & Normal
VertexBuffer (divisor:0)
...
instanceCount = 1
baseInstance = 0
...
instanceCount = 1
baseInstance = 1
MultiDrawIndirect
Buffer
Per drawcall vertex attribute
vertex attributes
fetched for last
vertex in second
drawcall
baseinstance = 1
28. 28
OpenGL 4.2+ indirect approach
...
foreach ( obj in scene.objects ) {
...
// instead of glVertexAttribI2i calls and a loop
// we use the baseInstance for the attribute
// bind special assignment buffer as vertex attribute
glBindBuffer ( GL_ARRAY_BUFFER, obj->assignBuffer);
glVertexAttribIPointer (indexAttr, 2, GL_INT, . . . );
// draw everything in one go
glMultiDrawElementsIndirect ( GL_TRIANGLES, GL_UNSIGNED_INT,
obj->indirectOffset, obj->numIndirects, 0 );
}
29. 29
ARB_vertex_attrib_binding
(VAB)
– Avoids many buffer changes
– Separates format from data
– Bind multiple vertex
attributes to one buffer
NV_vertex_buffer_unified_
memory (VBUM)
– Allows very fast switching
through GPU pointers
Vertex Setup
/* setup once, similar to glVertexAttribPointer
but with relative offset last */
glVertexAttribFormat (ATTR_NORMAL, 3,
GL_FLOAT, GL_TRUE, offsetof(Vertex,normal));
glVertexAttribFormat (ATTR_POS, 3,
GL_FLOAT, GL_FALSE, offsetof(Vertex,pos));
// bind to stream
glVertexAttribBinding (ATTR_NORMAL, 0);
glVertexAttribBinding (ATTR_POS, 0);
// switch single stream buffer
glBindVertexBuffer (0, bufID, 0, sizeof(Vertex));
// NV_vertex_buffer_unified_memory
// enable once and set stride
glEnableClientState (GL_VERTEX...NV);...
glBindVertexBuffer (0, 0, 0, sizeof(Vertex));
// switch single buffer via pointer
glBufferAddressRangeNV (GL_VERTEX...,0,bufADDR,
bufSize);
30. 30
0
200
400
600
800
1000
VBO VAB VAB+VBUM BINDLESS
INDIRECT HOST
VAB+VBUM
BINDLESS
INDIRECT GPU
VAB+VBUM
Timeinmicroseocnds[us]
– Vertex/Index setup inside MultiDrawIndirect command
NV_bindless_multidraw_indirect
one GL call to draw entire scene
GPU benefit depends on triangles
per drawcall (> ~ 500)
NV_bindless_multidraw_indirect
~ 2400 drawcalls, GL4 BATCHED style
Lower is
Better
Effect on CPU time
31. 31
0
1000
2000
3000
4000
5000
6000
K KB K KB K KB K KB
GL4 INDIRECTHOST
INDIVIDUAL
GL4 INDIRECTGPU
INDIVIDUAL
GL4 BATCHED GL2 BATCHED
Timeinmicroseconds[us]
Bindless (green) always reduces CPU, and
may help framerate/GPU a bit
K = Kepler 5000, regular VBO
KB = Kepler 5000, VBUM + VAB
Lower is
Better
GPU
CPU
99.000 2.400 hw drawcalls
2.000 2.400 sw drawcalls
32. 32
0
1000
2000
3000
4000
5000
6000
K KB K KB K KB K KB
GL4 INDIRECTHOST
INDIVIDUAL
GL4 INDIRECTGPU
INDIVIDUAL
GL4 BATCHED GL2 BATCHED
Timeinmicroseconds[us]
GPU
CPU
MultiDrawIndirect achieves almost 20 Mio drawcalls per
second (2000 VBO changes, „only“ 1/3 perf lost).
GPU-buffered commands save lots of CPU time
Lower is
Better
99.000 2.400 hw drawcalls
2.000 2.400 sw drawcalls
Scene-dependent!
INDIVIDUAL could be as fast
if enough work per drawcall
K = Kepler 5000, regular VBO
KB = Kepler 5000, VBUM + VAB
33. 33
0
1000
2000
3000
4000
5000
6000
K KB K KB K KB K KB
GL4 INDIRECTHOST
INDIVIDUAL
GL4 INDIRECTGPU
INDIVIDUAL
GL4 BATCHED GL2 BATCHED
Timeinmicroseconds[us]
GL2 uniforms beat paletted UBO a bit in GPU, but are slower on
CPU side. (1 glUniform call with 8x vec4, vs indexed UBO)
Lower is
Better
GPU
CPU
Scene-dependent!
GL4 better when more
materials changed per object
K = Kepler 5000, regular VBO
KB = Kepler 5000, VBUM + VAB
99.000 2.400 hw drawcalls
2.000 2.400 sw drawcalls
34. 34
Share geometry buffers for batching
Group parameters for fast updating
MultiDraw/Indirect for keeping objects
independent or remove additional loops
– baseInstance to provide unique
index/assignments for drawcall
Bindless to reduce validation
overhead/add flexibility
Recap
35. 35
GPU friendly processing
– Matrix and bbox buffer, object buffer
– XFB/Compute or „invisible“ rendering
– Vs. old techniques: Single GPU job for ALL objects!
Results
– „Readback“ GPU to Host
Can use GPU to pack into bit stream
– „Indirect“ GPU to GPU
Set DrawIndirect‘s instanceCount to 0 or 1
GPU Culling Basics
0,1,0,1,1,1,0,0,0
buffer cmdBuffer{
Command cmds[];
};
...
cmds[obj].instanceCount = visible;
36. 36
OpenGL 4.2+
– Depth-Pass
– Raster „invisible“ bounding boxes
Disable Color/Depth writes
Geometry Shader to create the three
visible box sides
Depth buffer discards occluded fragments
(earlyZ...)
Fragment Shader writes output:
visible[objindex] = 1
Occlusion Culling
// GLSL fragment shader
// from ARB_shader_image_load_store
layout(early_fragment_tests) in;
buffer visibilityBuffer{
int visibility[];
};
flat in int objID;
void main(){
visibility[objID] = 1;
}
// buffer would have been cleared
// to 0 before
Passing bbox fragments
enable object
Algorithm by
Evgeny Makarov, NVIDIA
depth
buffer
37. 37
Exploit that majority of objects don‘t change
much relative to camera
Draw each object only once (vertex/drawcall-
bound)
– Render last visible, fully shaded
(last)
– Test all against current depth:
(visible)
– Render newly added visible:
none, if no spatial changes made
(~last) & (visible)
– (last) = (visible)
Temporal Coherence
frame: f – 1
frame: f
last visible
bboxes occluded
bboxes pass depth
(visible)
new visible
invisible
visible
camera
camera
moved
38. 38
Culling Readback vs Indirect
0
500
1000
1500
2000
2500
readback indirect NVindirect
Timeinmicroseconds[us] In the „draw new visible“ phase indirect cannot
benefit of „nothing to setup/draw“ in advance,
still processes „empty“ lists
For readback results, CPU has to
wait for GPU idle
37% faster with
culling
33% faster with
culling 37% faster with
culling
NV_bindless_
multidraw_indirect
saves CPU and bit of
GPU time
Scene-dependent,
i.e. triangles per
drawcall and # of
„invisible“Lower is
Better
GL4 BATCHED style
GPU
CPU
39. 39
Temporal culling very useful for object/vertex-boundedness
– Can also apply for Z-pass...
Readback vs Indirect
– Readback variant „easier“ to be faster (no setups...), but syncs!
– NV_bindless_multidraw benefit depends on scene (VBO changes
and primitives per drawcall)
Working towards GPU autonomous system
– (NV_bindless)/ARB_multidraw_indirect as mechanism for GPU
creating its own work, research and feature work in progresss
Culling Results
41. 41
Family of extensions to use
native handles/addresses
NV_vertex_buffer_unified_memory
NV_bindless_multidraw_indirect
NV_shader_buffer_load/store
– Pointers in GLSL
NV_bindless_texture
– No more unit restrictions
– References inside buffers
NVIDIA Bindless Technology
// GLSL with true pointers
uniform MyStruct* mystructs;
// API
glUniformui64NV (bufferLocation,
bufferADDR);
texHDL = glGetTextureHandleNV (tex);
// later instead of glBindTexture
glUniformHandleui64NV (texLocation,
texHDL)
// GLSL
// can also store textures in resources
uniform materialBuffer {
sampler2D manyTextures [LARGE];
}
42. 42
0
500
1000
1500
2000
2500
Readback
GPU
Readback
CPU
Indirect
GPU
Indirect
CPU
NVIndirect
GPU
NVIndirect
CPU
Timeinmicroseconds
6. Draw New Visible
5. Update Internals
4. Occlusion Cull
3. Draw Last Visible
2. Update Internals
1. Frustum Cull
Nothing „new“ to draw, but CPU doesn‘t
know, still setting things up, GPU runs
thru „empty“ cmd buffer
For readback results, CPU has to
wait for GPU idle
Culling
Readback
vs
Indirect 432 fps with culling
315 without 387 fps with culling
289 without
429 fps with culling
313 without
Special bindless indirect
version can save lots of
CPU and a bit GPU costs
for drawing the scene
with a single big cmd
buffer