OpenGL Transformation 几何变换的顺序概要(MVP,NDC,Window坐标变换过程)
Geometry transforming or culling sequence:
- application passing the vertex pos(object space pos) to the shader program。
- transforming of clip space pos from object space pos by mulipling the MVP matrix。
- to world space pos from object space pos by multipling the model/world matrix。 ( x w o r l d y w o r l d z w o r l d ) = M m o d e l / w o r l d ( x o b j y o b j z o b j ) \left( \begin{matrix} x_{\color{#aaaaaa}world}\\ y_{\color{#aaaaaa}world}\\ z_{\color{#aaaaaa}world} \end{matrix} \right)= M_{\color{#aaaaaa}model/world} \left( \begin{matrix} x_{\color{#aaaaaa}obj}\\ y_{\color{#aaaaaa}obj}\\ z_{\color{#aaaaaa}obj} \end{matrix} \right) xworldyworldzworld =Mmodel/world xobjyobjzobj
- to view space pos from world space pos by multipling the view/camera/eye matrix。
- right-hand coordinates ( x e y e y e y e z e y e ) = M m o d e l V i e w ( x o b j y o b j z o b j ) = M v i e w ⋅ M m o d e l / w o r l d ( x o b j y o b j z o b j ) \left( \begin{matrix} x_{\color{#aaaaaa}eye}\\ y_{\color{#aaaaaa}eye}\\ z_{\color{#aaaaaa}eye} \end{matrix} \right)= M_{\color{#aaaaaa}modelView} \left( \begin{matrix} x_{\color{#aaaaaa}obj}\\ y_{\color{#aaaaaa}obj}\\ z_{\color{#aaaaaa}obj} \end{matrix} \right)= M_{\color{#aaaaaa}view} \cdot M_{\color{#aaaaaa}model/world} \left( \begin{matrix} x_{\color{#aaaaaa}obj}\\ y_{\color{#aaaaaa}obj}\\ z_{\color{#aaaaaa}obj} \end{matrix} \right) xeyeyeyezeye =MmodelView xobjyobjzobj =Mview⋅Mmodel/world xobjyobjzobj
- to projection/clip space pos from view space pos by multipling the projective/clip matrix。
(
x
c
l
i
p
y
c
l
i
p
z
c
l
i
p
)
=
M
p
r
o
j
e
c
t
(
x
e
y
e
y
e
y
e
z
e
y
e
)
\left( \begin{matrix} x_{\color{#aaaaaa}clip}\\ y_{\color{#aaaaaa}clip}\\ z_{\color{#aaaaaa}clip} \end{matrix} \right)= M_{\color{#aaaaaa}project} \left( \begin{matrix} x_{\color{#aaaaaa}eye}\\ y_{\color{#aaaaaa}eye}\\ z_{\color{#aaaaaa}eye} \end{matrix} \right)
xclipyclipzclip
=Mproject
xeyeyeyezeye
- culling the vertex which
−
w
c
l
i
p
>
x
y
z
c
l
i
p
>
w
c
l
i
p
-w_{\color{#aaaaaa}clip}>xyz_{\color{#aaaaaa}clip}>w_{\color{#aaaaaa}clip}
−wclip>xyzclip>wclip。
- add edge/vertex when culling occurs。
- only reserve the vertex which
−
w
c
l
i
p
<
x
y
z
c
l
i
p
<
w
c
l
i
p
-w_{\color{#aaaaaa}clip}
关注打赏
- culling the vertex which
−
w
c
l
i
p
>
x
y
z
c
l
i
p
>
w
c
l
i
p
-w_{\color{#aaaaaa}clip}>xyz_{\color{#aaaaaa}clip}>w_{\color{#aaaaaa}clip}
−wclip>xyzclip>wclip。
热门博文
- 3D Assets (Textures & Model & Animations) & Game Design Ideas & DCC Tutorials & TA
- LearnGL - 学习笔记目录
- Unity - Timeline 知识汇总
- Unity Graphics - 知识点目录 - 停止翻译,因为发现官方有中文文档了
- Graphic资料
- Unity Lightmap&LightProbe局部动态加载(亲测2020以及以上版本官方修复了)
- Unity - 踩坑日志 - 低版本线性颜色空间渲染异常的 “BUG”
- Unity Shader - PBR 渲染 SP 导出的素材
- 什么是 3A 游戏?
- Photosohp - 实现 2D MetaBall、MetaFont