(→Lesson08 "Geometry Optimalization") |
(→Excercise09 "Compute Shaders”) |
||
(13 intermediate revisions by the same user not shown) | |||
Riadok 13: | Riadok 13: | ||
== What you Need to Pass == | == What you Need to Pass == | ||
− | * Show your project ( | + | * Show your project (70% min. 35%). |
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]] | **Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]] | ||
**For video recording you can use: https://obsproject.com/ | **For video recording you can use: https://obsproject.com/ | ||
− | * Pass oral exam: ( | + | * Pass oral exam: (30%, min.15%). |
Riadok 47: | Riadok 47: | ||
* GLSL – vertex, fragment | * GLSL – vertex, fragment | ||
* Passing variables | * Passing variables | ||
+ | * Unified architecture [https://docs.imgtec.com/PowerVR_Architecture/topics/powervr_architecture_unified_and_non_unified_shader_architectures.html] | ||
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]] | * Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]] | ||
Riadok 63: | Riadok 64: | ||
* Oren-Nayar model | * Oren-Nayar model | ||
* Cook-Torrance model | * Cook-Torrance model | ||
− | * Texture filtering [https://open.gl/textures] [http://www.opengl-tutorial.org/beginners-tutorials/tutorial-5-a-textured-cube/] | + | * Texture filtering [https://open.gl/textures] [http://www.opengl-tutorial.org/beginners-tutorials/tutorial-5-a-textured-cube/] [https://www.youtube.com/watch?v=-HAvejfMMoo] |
* Bump mapping [https://learnopengl.com/Advanced-Lighting/Parallax-Mapping] | * Bump mapping [https://learnopengl.com/Advanced-Lighting/Parallax-Mapping] | ||
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]] | * Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]] | ||
Riadok 93: | Riadok 94: | ||
=== Lesson07 "Post-Processing" === | === Lesson07 "Post-Processing" === | ||
− | * Depth of Field | + | * Depth of Field [https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-28-practical-post-process-depth-field] |
* Gaussian blur | * Gaussian blur | ||
* Motion blur | * Motion blur | ||
* Glow [https://learnopengl.com/Advanced-Lighting/Bloom] | * Glow [https://learnopengl.com/Advanced-Lighting/Bloom] | ||
− | * High Dynamic Range [https://learnopengl.com/Advanced-Lighting/HDR] | + | * High Dynamic Range [https://learnopengl.com/Advanced-Lighting/HDR] [https://www.cl.cam.ac.uk/~rkm38/pdfs/tone_mapping.pdf] |
* Tone mapping | * Tone mapping | ||
* Lecture notes: [[media:Lecture7.pdf|Lecture7.pdf]] | * Lecture notes: [[media:Lecture7.pdf|Lecture7.pdf]] | ||
Riadok 105: | Riadok 106: | ||
* Back-face culling [https://learnopengl.com/Advanced-OpenGL/Face-culling] | * Back-face culling [https://learnopengl.com/Advanced-OpenGL/Face-culling] | ||
* Occlusion culling [http://developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch29.html] | * Occlusion culling [http://developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch29.html] | ||
− | * | + | * Tessellation [http://ogldev.atspace.co.uk/www/tutorial30/tutorial30.html] |
* Texture atlas | * Texture atlas | ||
* Lecture notes: [[media:Lecture8.pdf|Lecture8.pdf]] | * Lecture notes: [[media:Lecture8.pdf|Lecture8.pdf]] | ||
Riadok 139: | Riadok 140: | ||
**http://glew.sourceforge.net/ | **http://glew.sourceforge.net/ | ||
**http://gnuwin32.sourceforge.net/packages/freetype.htm | **http://gnuwin32.sourceforge.net/packages/freetype.htm | ||
− | ** | + | **https://github.com/assimp/assimp |
**Example: | **Example: | ||
***[[media:example.zip|example.zip]] | ***[[media:example.zip|example.zip]] | ||
Riadok 146: | Riadok 147: | ||
* Basic project: [[media:cv0.rar|cv0.rar]] | * Basic project: [[media:cv0.rar|cv0.rar]] | ||
* Work with libraries GLUT and GLEW. | * Work with libraries GLUT and GLEW. | ||
+ | ** To disable the compilator errors use #pragma warning(disable:4996) and cast the char constants to pointers | ||
Assignment: Add a light to the program. | Assignment: Add a light to the program. | ||
Riadok 163: | Riadok 165: | ||
* Assimp Library [https://learnopengl.com/Model-Loading/Assimp] | * Assimp Library [https://learnopengl.com/Model-Loading/Assimp] | ||
* Specular Lighting | * Specular Lighting | ||
− | Assignment: Load object and textue. Create | + | Assignment: Load object and textue. Create VAO and implement specular light shader programs using GLSL: [[media:cv03.zip|cv03.zip]] |
− | HOMEWORK ( | + | HOMEWORK (7.4.): |
* load 3 objects | * load 3 objects | ||
* create point light source | * create point light source | ||
* add a texture | * add a texture | ||
+ | ** structure draft http://yuml.me/diagram/scruffy/class/edit/%2F%2F%20Cool%20Class%20Diagram,%20%2F%2F%20------------------,%20,%20%5BScene%5D%3C%3E-*%3E%5BModel%7CVBO;Texture;Model%20Matrix%5D,%20%5BScene%5D%3C%3E-1%3E%5BCamera%7CProjection%20Matrix;%20View%20Matrix%5D,%20%5BScene%5D%3C%3E-3%3E%5BLights%7CPosition;Color%5D | ||
=== Excercise04 "Geometry Shader” === | === Excercise04 "Geometry Shader” === | ||
Riadok 176: | Riadok 179: | ||
=== Excercise05 "Tessellation” === | === Excercise05 "Tessellation” === | ||
− | * Tessellation control shader [ | + | * Tessellation control shader [https://prideout.net/blog/old/blog/index.html@p=48.html] |
* Tessellation evaluation shader | * Tessellation evaluation shader | ||
Assignment: napíšte control a evaluation shader ktorý prerozdelí trojuholník: [[media:cv05.zip|cv05.zip]] | Assignment: napíšte control a evaluation shader ktorý prerozdelí trojuholník: [[media:cv05.zip|cv05.zip]] | ||
Riadok 190: | Riadok 193: | ||
Assignment: nastavte shader program na zobrazenie efektu ambient occlusion: [[media:Cv07.zip|Cv07.zip]] | Assignment: nastavte shader program na zobrazenie efektu ambient occlusion: [[media:Cv07.zip|Cv07.zip]] | ||
− | HOMEWORK ( | + | HOMEWORK (28.4.): |
*add camera movements | *add camera movements | ||
*animate at least one object | *animate at least one object | ||
Riadok 202: | Riadok 205: | ||
* Compute Shader [https://www.khronos.org/assets/uploads/developers/library/2014-siggraph-bof/KITE-BOF_Aug14.pdf] [http://antongerdelan.net/opengl/compute.html] [https://github.com/LWJGL/lwjgl3-wiki/wiki/2.6.1.-Ray-tracing-with-OpenGL-Compute-Shaders-%28Part-I%29] | * Compute Shader [https://www.khronos.org/assets/uploads/developers/library/2014-siggraph-bof/KITE-BOF_Aug14.pdf] [http://antongerdelan.net/opengl/compute.html] [https://github.com/LWJGL/lwjgl3-wiki/wiki/2.6.1.-Ray-tracing-with-OpenGL-Compute-Shaders-%28Part-I%29] | ||
* Julia set [https://en.wikipedia.org/wiki/Julia_set] | * Julia set [https://en.wikipedia.org/wiki/Julia_set] | ||
− | Assignment: implement Julia set image using compute shader [[media: | + | Assignment: implement Julia set image using compute shader [[media:cv09.zip|cv09.zip]] |
<!-- | <!-- |
Aktuálna revízia z 14:41, 9. máj 2022
Real-time computer graphics
Obsah
- 1 Real-time computer graphics
- 2 What you Need to Pass
- 3 LESSONS
- 3.1 Lesson00 "Introduction to Computer Graphics"
- 3.2 Lesson01 "Graphics Pipeline, Shaders"
- 3.3 Lesson02 "Buffer Objects, FBO"
- 3.4 Lesson03 "Lighting, Texturing"
- 3.5 Lesson04 "Global Illumination"
- 3.6 Lesson05 "Shadows"
- 3.7 Lesson06 "Reflections, Refractions"
- 3.8 Lesson07 "Post-Processing"
- 3.9 Lesson08 "Geometry Optimalization"
- 3.10 Lesson09 "GPGPU"
- 3.11 Lesson10 "GPU Volume Graphics"
- 4 EXCERCISES
- 4.1 Excercise00 "Basic project”
- 4.2 Excercise01 "Texturing and Lighting”
- 4.3 Excercise02 "GLSL 4.00.9”
- 4.4 Excercise03 "OBJECT LOADING”
- 4.5 Excercise04 "Geometry Shader”
- 4.6 Excercise05 "Tessellation”
- 4.7 Excercise06 "Shadow Mapping”
- 4.8 Excercise07 "Ambient Occlusion”
- 4.9 Excercise08 "Post-processing”
- 4.10 Excercise09 "Compute Shaders”
This course ...
- Will focus on visualization of 3D scenes [1]
- Will show you what are the current topics
- Will improve your skills in
- OpenGL
- Computational geometry
- Algorithms and data structures
What you Need to Pass
- Show your project (70% min. 35%).
- Project specification template: RTGProjektSpecifikacia.doc
- For video recording you can use: https://obsproject.com/
- Pass oral exam: (30%, min.15%).
- Grades
- A = 91-100
- B = 81-90
- C = 71-80
- D = 61-70
- E = 51-60
- Fx = 0-50
LESSONS
Lesson00 "Introduction to Computer Graphics"
- Introduction to Computer Graphics
- Common techniques
- Cutting edge tools and packages
- State of the Art
- Course schedule
- "Terms and conditions" of this course
- Lecture notes: Lecture0.pdf
Lesson01 "Graphics Pipeline, Shaders"
- OpenGL Graphics Pipeline [8]
- Shader languages
- GLSL – vertex, fragment
- Passing variables
- Unified architecture [9]
- Lecture notes: Lecture1.pdf
Lesson02 "Buffer Objects, FBO"
- Vertex arrays [10]
- Buffer object data
- Vertex Buffer Objects [11]
- Pixel Buffer Objects [12]
- Rendering to texture
- Deferred lighting [13][14]
- Lecture notes: Lecture2.pdf
Lesson03 "Lighting, Texturing"
- Rendering equation
- Phong local illumination
- Oren-Nayar model
- Cook-Torrance model
- Texture filtering [15] [16] [17]
- Bump mapping [18]
- Lecture notes: Lecture3.pdf
Lesson04 "Global Illumination"
- Ambient occlusion [19]
- Distance attenuation
- Ray tracing [20]
- Depth buffer masking
- Lecture notes: Lecture4.pdf
Lesson05 "Shadows"
- Shadows generation
- Light maps
- Planar shadows
- Projective shadows
- Shadow mapping [21] [22]
- Shadow volumes
- Lecture notes: Lecture5.pdf
Lesson06 "Reflections, Refractions"
- Blending
- Fresnel reflectance
- Environment mapping
- Water rendering [23] [24] [25][26]
- Caustics [27]
- Subsurface scattering
- Lecture notes: Lecture6.pdf
Lesson07 "Post-Processing"
- Depth of Field [28]
- Gaussian blur
- Motion blur
- Glow [29]
- High Dynamic Range [30] [31]
- Tone mapping
- Lecture notes: Lecture7.pdf
Lesson08 "Geometry Optimalization"
- Frustum culling [32] [33] [34]
- Back-face culling [35]
- Occlusion culling [36]
- Tessellation [37]
- Texture atlas
- Lecture notes: Lecture8.pdf
Lesson09 "GPGPU"
- Lecture notes: Lecture9.pdf
Lesson10 "GPU Volume Graphics"
- Volume Data
- Transfer Function
- Marching Cubes
- 3D Textures
- Multi-textures
- Ray-casting
- Lecture notes: Lecture10.pdf
EXCERCISES
- On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.
- Tutorials:
- Libraries:
Excercise00 "Basic project”
- Basic project: cv0.rar
- Work with libraries GLUT and GLEW.
- To disable the compilator errors use #pragma warning(disable:4996) and cast the char constants to pointers
Assignment: Add a light to the program.
Excercise01 "Texturing and Lighting”
Assignment: create a textured cube and implement the diffuse lighting in the shader program: cv01.zip
Excercise02 "GLSL 4.00.9”
Assignment: Create VBO and implement shader programs using GLSL 4.00.9: cv2.zip
Excercise03 "OBJECT LOADING”
- Projection and Model-view Matrices
- Assimp Library [45]
- Specular Lighting
Assignment: Load object and textue. Create VAO and implement specular light shader programs using GLSL: cv03.zip
HOMEWORK (7.4.):
- load 3 objects
- create point light source
- add a texture
Excercise04 "Geometry Shader”
Assignment : Implement shader program that creates a tetrahedron: cv04.zip
Excercise05 "Tessellation”
- Tessellation control shader [49]
- Tessellation evaluation shader
Assignment: napíšte control a evaluation shader ktorý prerozdelí trojuholník: cv05.zip
Excercise06 "Shadow Mapping”
Assignment: nastavte kameru z pohľadu svetla a zobrazte tieň: cv7.zip
Excercise07 "Ambient Occlusion”
- Render to Depth Texture [52]
- Ambient Occlusion
Assignment: nastavte shader program na zobrazenie efektu ambient occlusion: Cv07.zip
HOMEWORK (28.4.):
- add camera movements
- animate at least one object
Excercise08 "Post-processing”
- Post-processing
- Glow
Assignment: nastavte shader program na zobrazenie glow efektu: cv9.zip
Excercise09 "Compute Shaders”
Assignment: implement Julia set image using compute shader cv09.zip