Computer Graphics: Difference between revisions

 
(6 intermediate revisions by the same user not shown)
Line 66: Line 66:
\end{bmatrix}
\end{bmatrix}
</math>
</math>
===Transformation matrix===
<math>
L = T * R * S
</math>
Depending on implementation, it may be more memory-efficient or compute-efficient to represent affine transformations as their own class rather than 4x4 matrices. For example, a rotation can be represented with 3 floats in angle-axis or 4 floats in quaternion coordinates rather than a 3x3 rotation matrix.
For example, see
* [https://eigen.tuxfamily.org/dox/classEigen_1_1Transform.html Eigen::Transform]


==MVP Matrices==
==MVP Matrices==
Line 160: Line 170:
See [https://static1.squarespace.com/static/58586fa5ebbd1a60e7d76d3e/t/593a3afa46c3c4a376d779f6/1496988449807/s2012_pbs_disney_brdf_notes_v2.pdf pbs disney brdf notes] and the [http://www.pbr-book.org/ pbr-book]   
See [https://static1.squarespace.com/static/58586fa5ebbd1a60e7d76d3e/t/593a3afa46c3c4a376d779f6/1496988449807/s2012_pbs_disney_brdf_notes_v2.pdf pbs disney brdf notes] and the [http://www.pbr-book.org/ pbr-book]   
In frameworks and libraries, these are often refered to as ''standard materials'' or in Blender, ''Principled BSDF''.
In frameworks and libraries, these are often refered to as ''standard materials'' or in Blender, ''Principled BSDF''.
==Blending and Pixel Formats==
===Pixel Formats===
===Blending===
To output transparent images, i.e. images with alpha, you'll generally want to blend using [[Premultiplied Alpha]]. Rendering in premultiplied alpha prevents your RGB color values from getting mixed with the background color empty pixels.
===Rendering===
For rasterization, the render loop typically consists of:
# Render the shadow map.
# Render all opaque objects front-to-back.
## Opaque objects write to the depth buffer.
# Render all transparent objects back-to-front
## Transparent objects do not write to the depth buffer.
Rendering opaque objects front to back minimizes overdraw, where a pixel gets drawn to multiple times in a single frame.
Rendering transparent objects back to front is needed for proper blending of transparent materials.
==Anti-aliasing==
For a high-quality anti-aliasing, you'll generally want to multiple multi-sampling (MSAA).
This causes the GPU to render the depth buffer at a higher resolution to determine the contribution of your fragment shader's color to the final image.
See https://learnopengl.com/Advanced-OpenGL/Anti-Aliasing#:~:text=How%20MSAA%20really%20works%20is,buffer%20to%20determine%20subsample%20coverage for more details.


==More Terms==
==More Terms==