SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
3D Games Rendering


        Érico de Morais Nunes -            nunes.erico@gmail.com
                  Universidade Federal do Pampa




May 23, 2009              Tchelinux 2009                           1
Summary
 ●
     About me
 ●
     This talk is not about
 ●
     Introduction
 ●
     Definitions
 ●
     OpenGL
 ●
     3D Pipeline Overview
 ●
     3D Rendering Topics
 ●
     Shaders and the “future” of 3D development
 ●
     Conclusion



May 23, 2009                  Tchelinux 2009      2
●
     About me
 ●
     This talk is not about
 ●
     Introduction
 ●
     Definitions
 ●
     OpenGL
 ●
     3D Pipeline Overview
 ●
     3D Rendering Topics
 ●
     Shaders and the “future” of 3D development
 ●
     Conclusion



May 23, 2009                  Tchelinux 2009      3
About Me
 ●
     I am a Computer Engineering student.
 ●
     3D Rendering is not my main research
     area, though I have used it in projects.
 ●
     I have been into computer graphics for
     around a year and a half.
 ●
     I have not produced any commercial
     games.
 ●
     I am a (casual) gamer. :)
May 23, 2009          Tchelinux 2009            4
Summary
 ●
     About me
 ●
     This talk is not about
 ●
     Introduction
 ●
     Definitions
 ●
     OpenGL
 ●
     3D Pipeline Overview
 ●
     3D Rendering Topics
 ●
     Shaders and the “future” of 3D development
 ●
     Conclusion



May 23, 2009                  Tchelinux 2009      5
This talk is not about
 ●
     Unfortunately, this talk is not aimed at...
     ●
         NVIDIA A is better than ATI B.
     ●
         Card X runs game Y.
     ●
         How to code a game.
     ●
         How to get past level N of game X.


 ●
     It is aimed at rendering!


May 23, 2009             Tchelinux 2009            6
●
     About me
 ●
     This talk is not about
 ●
     Introduction
 ●
     Definitions
 ●
     OpenGL
 ●
     3D Pipeline Overview
 ●
     3D Rendering Topics
 ●
     Shaders and the “future” of 3D development
 ●
     Conclusion



May 23, 2009                  Tchelinux 2009      7
Introduction
 ●
     Games nowadays look just damn real!
     ●
         And in real time!




May 23, 2009                 Tchelinux 2009   8
Introduction
 ●
     How do they do it?




May 23, 2009         Tchelinux 2009   9
Introduction
 ●
     We could also go a bit back...
 ●
     How did they do it, back at the days?

     Doom, 1993
     System req:
     80386 class CPU
     (12~40 MHz)
     4 MB RAM



May 23, 2009              Tchelinux 2009     10
Introduction
 ●
     In this talk, we shall see the science
     behind graphics.




May 23, 2009          Tchelinux 2009          11
●
     About me
 ●
     This talk is not about
 ●
     Introduction
 ●
     Definitions
 ●
     OpenGL
 ●
     3D Pipeline Overview
 ●
     3D Rendering Topics
 ●
     Shaders and the “future” of 3D development
 ●
     Conclusion



May 23, 2009                  Tchelinux 2009      12
Definitions
 ●
     Rendering – Process of creating the 3D image
     you see on the screen.
 ●
     Modeling – Process of generating models to
     render. For example, designing the characters'
     models in software like Blender.




May 23, 2009            Tchelinux 2009                13
Definitions
 ●
     Pixel – One “dot of color” in your screen.
 ●
     Vertex – It could be a coordinate in the 3D
     space. Like the ones in math.
 ●
     Fragment – It is all the data needed to generate
     a pixel. Depth, color, texture coordinate... Do
     not confuse it with the pixel itself – you can
     have many fragments in a pixel space.
 ●
     Texture – Name given to an image attached to
     some geometry in your scene.

May 23, 2009            Tchelinux 2009              14
Definitions
 ●
     OpenGL – The cross platform standard API for
     3D graphics.
 ●
     API – Application Programming Interface. Used
     to provide an interface to some device.
 ●
     GPU – Graphics Processing Unit. Same as the
     “Graphics card”.


     → These definitions only aim to make quick explanations so
     that we can go further without major problems :)


May 23, 2009                Tchelinux 2009                        15
●
     About me
 ●
     This talk is not about
 ●
     Introduction
 ●
     Definitions
 ●
     OpenGL
 ●
     3D Pipeline Overview
 ●
     3D Rendering Topics
 ●
     Shaders and the “future” of 3D development
 ●
     Conclusion



May 23, 2009                  Tchelinux 2009      16
OpenGL
 ●
     “The Industry's Foundation for High
     Performance Graphics.”
 ●
     “From games to virtual reality, mobile
     phones to supercomputers.”




May 23, 2009         Tchelinux 2009           17
OpenGL


    OpenGL (Open Graphics Library) is a
    standard specification defining a cross-
    platform API for writing applications that
    produce 2D and 3D computer graphics.




May 23, 2009        Tchelinux 2009          18
OpenGL
 ●
     Some considerations:
     ●
         It is a rendering API!
     ●
         OpenGL is not open source.
         (There is an open source implementation
         similar to it, Mesa).
     ●
         Maintained by the OpenGl ARB.
     ●
         OpenGL is the standard API used in Linux 3D
         rendering software.


May 23, 2009             Tchelinux 2009            19
OpenGL
 ●
     As for this talk, we are mainly interested
     in understanding the OpenGL Rendering
     Pipeline.




May 23, 2009          Tchelinux 2009              20
●
     About me
 ●
     This talk is not about
 ●
     Introduction
 ●
     Definitions
 ●
     OpenGL
 ●
     3D Pipeline Overview
 ●
     3D Rendering Topics
 ●
     Shaders and the “future” of 3D development
 ●
     Conclusion



May 23, 2009                  Tchelinux 2009      21
3D Pipeline
 ●
     Do not be scared!
 ●
     Pipeline: “a chain of data-processing
     stages”.


     Ok. I want to draw a line and a triangle.
     What do I need to provide and what steps
     are performed for it to be rendered?


May 23, 2009         Tchelinux 2009          22
3D Pipeline




                  http://www.lighthouse3d.com/opengl/glsl/index.php?pipeline

May 23, 2009      Tchelinux 2009                                          23
3D Pipeline - Vertex
 ●
     Vertices are user defined (or loaded from
     a model). They define your geometry.
 ●
     Note that each one has an associated
     color.
 ●
     At games, generally, a texture is provided
     instead.




May 23, 2009          Tchelinux 2009          24
3D Pipeline - Transformation
 ●
     Transformation is related to changing the vertex
     position.
 ●
     It is important – when something needs to
     move/animate, its vertices need to be
     transformed!
 ●
     Transformation is defined by the user,
     performed by the pipeline.




May 23, 2009            Tchelinux 2009             25
3D Pipeline – Assembly

 ●
     So far, we only have
     vertices, coordinates.


 ●
     Besides vertices, we have also provided
     the information on how to connect them.



May 23, 2009           Tchelinux 2009          26
3D Pipeline - Rasterization
 ●
     Very important step!


 ●
     Your eyes trick you:
     Your screen is 2D.


 ●
     Rasterization: converting from the 3D
     space into the “plane” screen space.
     Fragments.
May 23, 2009         Tchelinux 2009          27
3D Pipeline - Interpolation
 ●
     Finally, we perform interpolation between
     the fragments.
 ●
     That is: calculate the color on each pixel,
     based on the colors at the vertices.




May 23, 2009          Tchelinux 2009           28
3D Pipeline
 ●
     That's it.


 ●




 ●
     You now have base knowledge on how it
     goes for rendering geometry, in a few
     simple steps!

May 23, 2009         Tchelinux 2009          29
3D Pipeline
 ●
     To finish with it, here is a more complete
     (and complex) pipeline model:




May 23, 2009          Tchelinux 2009              30
●
     About me
 ●
     This talk is not about
 ●
     Introduction
 ●
     Definitions
 ●
     OpenGL
 ●
     3D Pipeline Overview
 ●
     3D Rendering Topics
 ●
     Shaders and the “future” of 3D development
 ●
     Conclusion



May 23, 2009                  Tchelinux 2009      31
3D Rendering Topics
 ●
     Now, let's touch at some interesting
     topics in 3D rendering that are vastly
     employed in games, such as:
     ●
         Depth Testing
     ●
         Space Partitioning
     ●
         Ray Tracing
     ●
         Texture Mapping
     ●
         Modeling

May 23, 2009               Tchelinux 2009     32
3D Rendering Topics
 ●
     Objects can be hidden behind other
     objects.
 ●
     OpenGL does not do standard check to
     figure out which object should be in front
     and which should be hidden.
 ●
     You need to find a way to do it yourself.
 ●
     What if you don't?


May 23, 2009          Tchelinux 2009             33
3D Rendering Topics
 ●
     Well, this might happen:




May 23, 2009          Tchelinux 2009   34
3D Rendering Topics
 ●
     One way to do it is called Depth Testing.
 ●
     Each fragment has a depth associated to
     it, resulting from rasterization
 ●
     Depth testing performs per fragment
     check to identify which fragment is closer
     to the viewer.




May 23, 2009          Tchelinux 2009             35
3D Rendering Topics
 ●
     Depth testing works!




 ●
     However, you shouldn't rely on that only.
 ●
     For large sceneries, checking every
     fragment could be very slow. :(

May 23, 2009          Tchelinux 2009             36
3D Rendering Topics
 ●
     Ok, think on this:
     Could you ever possibly see anything
     inside the building from here?




May 23, 2009          Tchelinux 2009        37
3D Rendering Topics
 ●
     Probably not.
 ●
     In this case, wouldn't it be wise to discard
     everything inside it, ahead of time?




May 23, 2009          Tchelinux 2009           38
3D Rendering Topics
 ●
     We can extend this even more:




 ●
     We can't see behind that door. We can
     discard that part of the map.

May 23, 2009          Tchelinux 2009         39
3D Rendering Topics
 ●
     This is a kind of Space Partitioning.
 ●
     It consists in knowing which parts of the
     map aren't visible and loading them as
     they appear.




May 23, 2009          Tchelinux 2009             40
3D Rendering Topics




           Doom was only possible back then
            because of Space Partitioning!
May 23, 2009           Tchelinux 2009         41
3D Rendering Topics
 ●
     Out of hidden surfaces, another cool
     feature is Ray Tracing.
 ●
     Ray Tracing is a vector based model
     which is used to, for example, model light
     rays and achieve high lighting and
     shadows realism.




May 23, 2009          Tchelinux 2009          42
3D Rendering Topics




May 23, 2009          Tchelinux 2009   43
3D Rendering Topics
 ●
     Texture Mapping: consists of adding
     pictures to geometry to simulate extra
     detail.
 ●
     For long, games have been relying in
     texturing to achieve some degree of
     realism.




May 23, 2009          Tchelinux 2009          44
3D Rendering Topics
 ●
     Detailed scenery?!




 ●
     Textures are a cheap way to add realism.

May 23, 2009          Tchelinux 2009        45
3D Rendering Topics
 ●
     Modeling: how can models made in 3D
     modelers be added to the OpenGL
     Pipeline?




May 23, 2009          Tchelinux 2009       46
3D Rendering Topics
 ●
     That's no OpenGL business.
 ●
     Your 3D modeler probably supports
     exporting to many different model
     formats.
 ●
     To load it into your game, you load and
     parse the file yourself, and pass OpenGL
     the raw ready data :)


May 23, 2009          Tchelinux 2009            47
●
     About me
 ●
     This talk is not about
 ●
     Introduction
 ●
     Definitions
 ●
     OpenGL
 ●
     3D Pipeline Overview
 ●
     3D Rendering Topics
 ●
     Shaders and the “future” of 3D development
 ●
     Conclusion



May 23, 2009                  Tchelinux 2009      48
Shaders and the “future”
 ●
     So far, we have only seen a hard defined
     3D pipeline, with well defined functions.
 ●
     While this could be enough for many
     tasks, in order to achieve realism, you
     would need more flexibility.




May 23, 2009          Tchelinux 2009             49
Shaders and the “future”
 ●
     A Shader is a piece of code which is used
     primarily to calculate rendering effects on
     graphics hardware with a high degree of
     flexibility.
 ●
     GLSL, HLSL,
 ●
     In your shader, you can do many cool
     things like...


May 23, 2009          Tchelinux 2009           50
Shaders and the “future”




           Cell Shading




                                           Per Pixel Lighting



May 23, 2009              Tchelinux 2009                        51
Shaders and the “future”
 ●
     OpenGL currently supports Vertex
     Shaders and Pixel Shaders.
 ●
     Let's take a look on the new pipeline,
     with shaders in!




May 23, 2009          Tchelinux 2009          52
Shaders and the “future”




May 23, 2009      Tchelinux 2009    53
Shaders and the “future”
 ●
     Some sources say that Shaders are the
     future of 3D graphics.
 ●
     It is not the future. It is the current state
     of the art.
 ●
     Almost everything came down to shaders.
     … everything else is on its way to become
     a shader.


May 23, 2009           Tchelinux 2009            54
●
     About me
 ●
     This talk is not about
 ●
     Introduction
 ●
     Definitions
 ●
     OpenGL
 ●
     3D Pipeline Overview
 ●
     3D Rendering Topics
 ●
     Shaders and the “future” of 3D development
 ●
     Conclusion



May 23, 2009                  Tchelinux 2009      55
Conclusion
 ●
     The pipeline is a very important part of graphics
     rendering.
 ●
     Understanding the pipeline is on way to
     understand what goes on the GPU.
 ●
     Figuring out data to be discarded plays major
     part on performance and detailing level.
 ●
     Current games rely heavily in shaders and
     texturing for highly realistic graphics.


May 23, 2009            Tchelinux 2009               56
Just in case...
 ●
     Good reference books:
     ●
         The OpenGL Superbible 4th Edition
     ●
         The OpenGL Programming Guide (The Redbook)
     ●
         OpenGL Shading Language (Orange Book)
 ●
     Good web resources for starters:
     ●
         http://www.lighthouse3d.com
     ●
         http://nehe.gamedev.net
     ●
         http://www.videotutorialsrock.com
     ●
         http://www.opengl.org

May 23, 2009               Tchelinux 2009             57
Thank you!



                Érico de Morais Nunes
               nunes.erico@gmail.com




May 23, 2009          Tchelinux 2009    58

Contenu connexe

Similaire à 3D Games Rendering - Érico de Morais Nunes

Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...
Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...
Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...Lviv Startup Club
 
Drupal 3D - Intro to Using Web 3D with Drupal
Drupal 3D - Intro to Using Web 3D with DrupalDrupal 3D - Intro to Using Web 3D with Drupal
Drupal 3D - Intro to Using Web 3D with DrupalBrian Hay
 
Exploring-javafx-3d
Exploring-javafx-3dExploring-javafx-3d
Exploring-javafx-3dJay Thakkar
 
Video Terminal Evolution and The Future of Browsers
Video Terminal Evolution and The Future of BrowsersVideo Terminal Evolution and The Future of Browsers
Video Terminal Evolution and The Future of BrowsersThomas Walker Lynch
 
Blender presentation at SIGGRAPH 2013
Blender presentation at SIGGRAPH 2013Blender presentation at SIGGRAPH 2013
Blender presentation at SIGGRAPH 2013prokoudine
 
3D Programming Basics: WebGL
3D Programming Basics: WebGL3D Programming Basics: WebGL
3D Programming Basics: WebGLGlobant
 
OpenGL ES on Android
OpenGL ES on AndroidOpenGL ES on Android
OpenGL ES on AndroidChris Farrell
 
Computer Graphics Through OpenGL: From Theory to Experiments
Computer Graphics Through OpenGL: From Theory to ExperimentsComputer Graphics Through OpenGL: From Theory to Experiments
Computer Graphics Through OpenGL: From Theory to Experimentskuwizotuji
 
Thoughts on the 3D printing revolution and its consequences on the web's future
Thoughts on the 3D printing revolution and its consequences on the web's futureThoughts on the 3D printing revolution and its consequences on the web's future
Thoughts on the 3D printing revolution and its consequences on the web's futureNils Perret
 
Power of WebGL (FSTO 2014)
Power of WebGL (FSTO 2014)Power of WebGL (FSTO 2014)
Power of WebGL (FSTO 2014)Verold
 
3D Graphics
3D Graphics3D Graphics
3D GraphicsViTAly
 
Summer Internship Project - Remote Render
Summer Internship Project - Remote RenderSummer Internship Project - Remote Render
Summer Internship Project - Remote RenderYen-Kuan Wu
 
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)Igalia
 
Advanced Video Production with FOSS
Advanced Video Production with FOSSAdvanced Video Production with FOSS
Advanced Video Production with FOSSKirk Kimmel
 
IDC 2010 Conference Presentation
IDC 2010 Conference PresentationIDC 2010 Conference Presentation
IDC 2010 Conference PresentationGonçalo Amador
 
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map Engine
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map EngineAGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map Engine
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map EngineCamptocamp
 
A Follow-up Cg Runtime Tutorial for Readers of The Cg Tutorial
A Follow-up Cg Runtime Tutorial for Readers of The Cg TutorialA Follow-up Cg Runtime Tutorial for Readers of The Cg Tutorial
A Follow-up Cg Runtime Tutorial for Readers of The Cg TutorialMark Kilgard
 
Computer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming IComputer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming I💻 Anton Gerdelan
 

Similaire à 3D Games Rendering - Érico de Morais Nunes (20)

Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...
Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...
Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...
 
Drupal 3D - Intro to Using Web 3D with Drupal
Drupal 3D - Intro to Using Web 3D with DrupalDrupal 3D - Intro to Using Web 3D with Drupal
Drupal 3D - Intro to Using Web 3D with Drupal
 
Exploring-javafx-3d
Exploring-javafx-3dExploring-javafx-3d
Exploring-javafx-3d
 
Video Terminal Evolution and The Future of Browsers
Video Terminal Evolution and The Future of BrowsersVideo Terminal Evolution and The Future of Browsers
Video Terminal Evolution and The Future of Browsers
 
Blender presentation at SIGGRAPH 2013
Blender presentation at SIGGRAPH 2013Blender presentation at SIGGRAPH 2013
Blender presentation at SIGGRAPH 2013
 
3D Programming Basics: WebGL
3D Programming Basics: WebGL3D Programming Basics: WebGL
3D Programming Basics: WebGL
 
OpenGL ES on Android
OpenGL ES on AndroidOpenGL ES on Android
OpenGL ES on Android
 
Computer Graphics Through OpenGL: From Theory to Experiments
Computer Graphics Through OpenGL: From Theory to ExperimentsComputer Graphics Through OpenGL: From Theory to Experiments
Computer Graphics Through OpenGL: From Theory to Experiments
 
Thoughts on the 3D printing revolution and its consequences on the web's future
Thoughts on the 3D printing revolution and its consequences on the web's futureThoughts on the 3D printing revolution and its consequences on the web's future
Thoughts on the 3D printing revolution and its consequences on the web's future
 
Power of WebGL (FSTO 2014)
Power of WebGL (FSTO 2014)Power of WebGL (FSTO 2014)
Power of WebGL (FSTO 2014)
 
Ha4 constraints
Ha4   constraintsHa4   constraints
Ha4 constraints
 
3D Graphics
3D Graphics3D Graphics
3D Graphics
 
3D Printing
3D Printing3D Printing
3D Printing
 
Summer Internship Project - Remote Render
Summer Internship Project - Remote RenderSummer Internship Project - Remote Render
Summer Internship Project - Remote Render
 
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
 
Advanced Video Production with FOSS
Advanced Video Production with FOSSAdvanced Video Production with FOSS
Advanced Video Production with FOSS
 
IDC 2010 Conference Presentation
IDC 2010 Conference PresentationIDC 2010 Conference Presentation
IDC 2010 Conference Presentation
 
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map Engine
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map EngineAGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map Engine
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map Engine
 
A Follow-up Cg Runtime Tutorial for Readers of The Cg Tutorial
A Follow-up Cg Runtime Tutorial for Readers of The Cg TutorialA Follow-up Cg Runtime Tutorial for Readers of The Cg Tutorial
A Follow-up Cg Runtime Tutorial for Readers of The Cg Tutorial
 
Computer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming IComputer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming I
 

Plus de Tchelinux

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeTchelinux
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Tchelinux
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Tchelinux
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Tchelinux
 

Plus de Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 

Dernier

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 

Dernier (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

3D Games Rendering - Érico de Morais Nunes

  • 1. 3D Games Rendering Érico de Morais Nunes - nunes.erico@gmail.com Universidade Federal do Pampa May 23, 2009 Tchelinux 2009 1
  • 2. Summary ● About me ● This talk is not about ● Introduction ● Definitions ● OpenGL ● 3D Pipeline Overview ● 3D Rendering Topics ● Shaders and the “future” of 3D development ● Conclusion May 23, 2009 Tchelinux 2009 2
  • 3. About me ● This talk is not about ● Introduction ● Definitions ● OpenGL ● 3D Pipeline Overview ● 3D Rendering Topics ● Shaders and the “future” of 3D development ● Conclusion May 23, 2009 Tchelinux 2009 3
  • 4. About Me ● I am a Computer Engineering student. ● 3D Rendering is not my main research area, though I have used it in projects. ● I have been into computer graphics for around a year and a half. ● I have not produced any commercial games. ● I am a (casual) gamer. :) May 23, 2009 Tchelinux 2009 4
  • 5. Summary ● About me ● This talk is not about ● Introduction ● Definitions ● OpenGL ● 3D Pipeline Overview ● 3D Rendering Topics ● Shaders and the “future” of 3D development ● Conclusion May 23, 2009 Tchelinux 2009 5
  • 6. This talk is not about ● Unfortunately, this talk is not aimed at... ● NVIDIA A is better than ATI B. ● Card X runs game Y. ● How to code a game. ● How to get past level N of game X. ● It is aimed at rendering! May 23, 2009 Tchelinux 2009 6
  • 7. About me ● This talk is not about ● Introduction ● Definitions ● OpenGL ● 3D Pipeline Overview ● 3D Rendering Topics ● Shaders and the “future” of 3D development ● Conclusion May 23, 2009 Tchelinux 2009 7
  • 8. Introduction ● Games nowadays look just damn real! ● And in real time! May 23, 2009 Tchelinux 2009 8
  • 9. Introduction ● How do they do it? May 23, 2009 Tchelinux 2009 9
  • 10. Introduction ● We could also go a bit back... ● How did they do it, back at the days? Doom, 1993 System req: 80386 class CPU (12~40 MHz) 4 MB RAM May 23, 2009 Tchelinux 2009 10
  • 11. Introduction ● In this talk, we shall see the science behind graphics. May 23, 2009 Tchelinux 2009 11
  • 12. About me ● This talk is not about ● Introduction ● Definitions ● OpenGL ● 3D Pipeline Overview ● 3D Rendering Topics ● Shaders and the “future” of 3D development ● Conclusion May 23, 2009 Tchelinux 2009 12
  • 13. Definitions ● Rendering – Process of creating the 3D image you see on the screen. ● Modeling – Process of generating models to render. For example, designing the characters' models in software like Blender. May 23, 2009 Tchelinux 2009 13
  • 14. Definitions ● Pixel – One “dot of color” in your screen. ● Vertex – It could be a coordinate in the 3D space. Like the ones in math. ● Fragment – It is all the data needed to generate a pixel. Depth, color, texture coordinate... Do not confuse it with the pixel itself – you can have many fragments in a pixel space. ● Texture – Name given to an image attached to some geometry in your scene. May 23, 2009 Tchelinux 2009 14
  • 15. Definitions ● OpenGL – The cross platform standard API for 3D graphics. ● API – Application Programming Interface. Used to provide an interface to some device. ● GPU – Graphics Processing Unit. Same as the “Graphics card”. → These definitions only aim to make quick explanations so that we can go further without major problems :) May 23, 2009 Tchelinux 2009 15
  • 16. About me ● This talk is not about ● Introduction ● Definitions ● OpenGL ● 3D Pipeline Overview ● 3D Rendering Topics ● Shaders and the “future” of 3D development ● Conclusion May 23, 2009 Tchelinux 2009 16
  • 17. OpenGL ● “The Industry's Foundation for High Performance Graphics.” ● “From games to virtual reality, mobile phones to supercomputers.” May 23, 2009 Tchelinux 2009 17
  • 18. OpenGL OpenGL (Open Graphics Library) is a standard specification defining a cross- platform API for writing applications that produce 2D and 3D computer graphics. May 23, 2009 Tchelinux 2009 18
  • 19. OpenGL ● Some considerations: ● It is a rendering API! ● OpenGL is not open source. (There is an open source implementation similar to it, Mesa). ● Maintained by the OpenGl ARB. ● OpenGL is the standard API used in Linux 3D rendering software. May 23, 2009 Tchelinux 2009 19
  • 20. OpenGL ● As for this talk, we are mainly interested in understanding the OpenGL Rendering Pipeline. May 23, 2009 Tchelinux 2009 20
  • 21. About me ● This talk is not about ● Introduction ● Definitions ● OpenGL ● 3D Pipeline Overview ● 3D Rendering Topics ● Shaders and the “future” of 3D development ● Conclusion May 23, 2009 Tchelinux 2009 21
  • 22. 3D Pipeline ● Do not be scared! ● Pipeline: “a chain of data-processing stages”. Ok. I want to draw a line and a triangle. What do I need to provide and what steps are performed for it to be rendered? May 23, 2009 Tchelinux 2009 22
  • 23. 3D Pipeline http://www.lighthouse3d.com/opengl/glsl/index.php?pipeline May 23, 2009 Tchelinux 2009 23
  • 24. 3D Pipeline - Vertex ● Vertices are user defined (or loaded from a model). They define your geometry. ● Note that each one has an associated color. ● At games, generally, a texture is provided instead. May 23, 2009 Tchelinux 2009 24
  • 25. 3D Pipeline - Transformation ● Transformation is related to changing the vertex position. ● It is important – when something needs to move/animate, its vertices need to be transformed! ● Transformation is defined by the user, performed by the pipeline. May 23, 2009 Tchelinux 2009 25
  • 26. 3D Pipeline – Assembly ● So far, we only have vertices, coordinates. ● Besides vertices, we have also provided the information on how to connect them. May 23, 2009 Tchelinux 2009 26
  • 27. 3D Pipeline - Rasterization ● Very important step! ● Your eyes trick you: Your screen is 2D. ● Rasterization: converting from the 3D space into the “plane” screen space. Fragments. May 23, 2009 Tchelinux 2009 27
  • 28. 3D Pipeline - Interpolation ● Finally, we perform interpolation between the fragments. ● That is: calculate the color on each pixel, based on the colors at the vertices. May 23, 2009 Tchelinux 2009 28
  • 29. 3D Pipeline ● That's it. ● ● You now have base knowledge on how it goes for rendering geometry, in a few simple steps! May 23, 2009 Tchelinux 2009 29
  • 30. 3D Pipeline ● To finish with it, here is a more complete (and complex) pipeline model: May 23, 2009 Tchelinux 2009 30
  • 31. About me ● This talk is not about ● Introduction ● Definitions ● OpenGL ● 3D Pipeline Overview ● 3D Rendering Topics ● Shaders and the “future” of 3D development ● Conclusion May 23, 2009 Tchelinux 2009 31
  • 32. 3D Rendering Topics ● Now, let's touch at some interesting topics in 3D rendering that are vastly employed in games, such as: ● Depth Testing ● Space Partitioning ● Ray Tracing ● Texture Mapping ● Modeling May 23, 2009 Tchelinux 2009 32
  • 33. 3D Rendering Topics ● Objects can be hidden behind other objects. ● OpenGL does not do standard check to figure out which object should be in front and which should be hidden. ● You need to find a way to do it yourself. ● What if you don't? May 23, 2009 Tchelinux 2009 33
  • 34. 3D Rendering Topics ● Well, this might happen: May 23, 2009 Tchelinux 2009 34
  • 35. 3D Rendering Topics ● One way to do it is called Depth Testing. ● Each fragment has a depth associated to it, resulting from rasterization ● Depth testing performs per fragment check to identify which fragment is closer to the viewer. May 23, 2009 Tchelinux 2009 35
  • 36. 3D Rendering Topics ● Depth testing works! ● However, you shouldn't rely on that only. ● For large sceneries, checking every fragment could be very slow. :( May 23, 2009 Tchelinux 2009 36
  • 37. 3D Rendering Topics ● Ok, think on this: Could you ever possibly see anything inside the building from here? May 23, 2009 Tchelinux 2009 37
  • 38. 3D Rendering Topics ● Probably not. ● In this case, wouldn't it be wise to discard everything inside it, ahead of time? May 23, 2009 Tchelinux 2009 38
  • 39. 3D Rendering Topics ● We can extend this even more: ● We can't see behind that door. We can discard that part of the map. May 23, 2009 Tchelinux 2009 39
  • 40. 3D Rendering Topics ● This is a kind of Space Partitioning. ● It consists in knowing which parts of the map aren't visible and loading them as they appear. May 23, 2009 Tchelinux 2009 40
  • 41. 3D Rendering Topics Doom was only possible back then because of Space Partitioning! May 23, 2009 Tchelinux 2009 41
  • 42. 3D Rendering Topics ● Out of hidden surfaces, another cool feature is Ray Tracing. ● Ray Tracing is a vector based model which is used to, for example, model light rays and achieve high lighting and shadows realism. May 23, 2009 Tchelinux 2009 42
  • 43. 3D Rendering Topics May 23, 2009 Tchelinux 2009 43
  • 44. 3D Rendering Topics ● Texture Mapping: consists of adding pictures to geometry to simulate extra detail. ● For long, games have been relying in texturing to achieve some degree of realism. May 23, 2009 Tchelinux 2009 44
  • 45. 3D Rendering Topics ● Detailed scenery?! ● Textures are a cheap way to add realism. May 23, 2009 Tchelinux 2009 45
  • 46. 3D Rendering Topics ● Modeling: how can models made in 3D modelers be added to the OpenGL Pipeline? May 23, 2009 Tchelinux 2009 46
  • 47. 3D Rendering Topics ● That's no OpenGL business. ● Your 3D modeler probably supports exporting to many different model formats. ● To load it into your game, you load and parse the file yourself, and pass OpenGL the raw ready data :) May 23, 2009 Tchelinux 2009 47
  • 48. About me ● This talk is not about ● Introduction ● Definitions ● OpenGL ● 3D Pipeline Overview ● 3D Rendering Topics ● Shaders and the “future” of 3D development ● Conclusion May 23, 2009 Tchelinux 2009 48
  • 49. Shaders and the “future” ● So far, we have only seen a hard defined 3D pipeline, with well defined functions. ● While this could be enough for many tasks, in order to achieve realism, you would need more flexibility. May 23, 2009 Tchelinux 2009 49
  • 50. Shaders and the “future” ● A Shader is a piece of code which is used primarily to calculate rendering effects on graphics hardware with a high degree of flexibility. ● GLSL, HLSL, ● In your shader, you can do many cool things like... May 23, 2009 Tchelinux 2009 50
  • 51. Shaders and the “future” Cell Shading Per Pixel Lighting May 23, 2009 Tchelinux 2009 51
  • 52. Shaders and the “future” ● OpenGL currently supports Vertex Shaders and Pixel Shaders. ● Let's take a look on the new pipeline, with shaders in! May 23, 2009 Tchelinux 2009 52
  • 53. Shaders and the “future” May 23, 2009 Tchelinux 2009 53
  • 54. Shaders and the “future” ● Some sources say that Shaders are the future of 3D graphics. ● It is not the future. It is the current state of the art. ● Almost everything came down to shaders. … everything else is on its way to become a shader. May 23, 2009 Tchelinux 2009 54
  • 55. About me ● This talk is not about ● Introduction ● Definitions ● OpenGL ● 3D Pipeline Overview ● 3D Rendering Topics ● Shaders and the “future” of 3D development ● Conclusion May 23, 2009 Tchelinux 2009 55
  • 56. Conclusion ● The pipeline is a very important part of graphics rendering. ● Understanding the pipeline is on way to understand what goes on the GPU. ● Figuring out data to be discarded plays major part on performance and detailing level. ● Current games rely heavily in shaders and texturing for highly realistic graphics. May 23, 2009 Tchelinux 2009 56
  • 57. Just in case... ● Good reference books: ● The OpenGL Superbible 4th Edition ● The OpenGL Programming Guide (The Redbook) ● OpenGL Shading Language (Orange Book) ● Good web resources for starters: ● http://www.lighthouse3d.com ● http://nehe.gamedev.net ● http://www.videotutorialsrock.com ● http://www.opengl.org May 23, 2009 Tchelinux 2009 57
  • 58. Thank you! Érico de Morais Nunes nunes.erico@gmail.com May 23, 2009 Tchelinux 2009 58