-
Notifications
You must be signed in to change notification settings - Fork 0
/
memo.txt
231 lines (169 loc) · 4.96 KB
/
memo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
GL(Graphics Library)
OpenGL
https://www.opengl.org/
https://www.khronos.org/opengl/
OpenGL ES
OpenGL for Embedded Systems
https://www.khronos.org/opengles/
Android
https://developer.android.com/guide/topics/graphics/opengl.html
https://developer.android.com/reference/android/opengl/package-summary.html
https://developer.android.com/reference/javax/microedition/khronos/opengles/package-summary.html
WebGL
https://developer.mozilla.org/docs/Web/API/WebGL_API
https://www.khronos.org/webgl/
WebGL 2.0 webgl2 OpenGL ES 3.0 GLSL ES 3.00
WebGL 1.0 webgl OpenGL ES 2.0 GLSL ES 1.00
Khronos Group
https://www.khronos.org/
https://github.com/KhronosGroup
Vertex 頂点
Primitive 頂点により描画される図形
Point 点
Line 線分
Polygon 多角形(ポリゴン)
Normal 法線
Front face 正面(表)
Back face 背面(裏)
Clockwise(CW) 時計回り
Counter-Clockwise(CCW) 反時計回り
[OpenGL] [DirectX]
Coordinate System Right-handed Left-handed ※1
Front face(default) CCW CW
※1. 手の指でX軸の正の向きを指し、指をY軸の正の向きに曲げた時、親指が指している方向がZ軸の正の向き
Buffer
(3D)
Vertex Buffer
Index Buffer
Buffer Object
https://www.khronos.org/opengl/wiki/Buffer_Object
-> memory allocated by the OpenGL context (AKA the GPU)
Vertex Buffer Object(VBO)
Uniform Buffer Object(UBO)
Shader Storage Buffer Object(SSBO)
(2D)
Framebuffer
https://www.khronos.org/opengl/wiki/Framebuffer
-> レンダリングで使用するバッファ群(color, depth, stencil, etc.)
-> Textureも紐付け可能
Default Framebuffer
-> provided by the OpenGL Context
Framebuffer Object(FBO)
-> user-created framebuffer
Renderbuffer Object
-> レンダリングで使用するバッファ
-> use as color buffer, depth buffer, stencil buffer, etc.
Texture
https://www.khronos.org/opengl/wiki/Texture
1D, 2D, 3D
-> width, height, depth
1. create create Texture Object.
2. setup
1. bind
2. operate
3. unbind bind the other buffer or bind null.
3. activate
1. active default is GL_TEXTURE0.
2. bind
4. delete
glBindTexture()
-> Texture Objectとの紐付け
-> 現在のTexture Image Unit(GL_TEXTURE0 + i)との紐付け
Image Unit ≒ Texture Object
Sampler Object
https://www.khronos.org/opengl/wiki/Sampler_Object
glBindSampler()
-> Texture Image Unit(GL_TEXTURE0 + i)との紐付け
GLSL binding
Sampler
-> locationにTexture Image Unit(iのみ)を設定して紐付ける
Image
-> glBindImageTexture()でTexture Objectと紐付ける
Rendering Pipeline
https://www.khronos.org/opengl/wiki/Rendering_Pipeline_Overview
座標変換
モデル変換(ワールド変換)
平行移動
拡大・縮小
回転
ビュー変換
プロジェクション変換
透視投影(Perspective Projection)
正投影(Orthographic Projection)
Homogeneous coordinate
同次座標
(x, y, z, w)
※行列の演算を使用する為
--
[直交座標系] <-> [同次座標系]
(x/w, y/w, z/w) <-> (x, y, z, w)
(x, y, z) <-> (x, y, z, 1)
(x, y) <-> (x, y, 0, 1)
--
[座標系] [原点] [表示範囲(x, y, z)]
3D座標系 中心 [-1, 1]
テクスチャ座標系 左上 [ 0, 1]
ウィンドウ座標系 左下 [ 0, dimensions)
Culling
カリング
-> レンダリング(描画)の対象部分を選択する
Clipping
->
Per-Sample Processing
https://www.khronos.org/opengl/wiki/Per-Sample_Processing
Depth Test 深度テスト
Client <-(Command)-> Server
[CPU] [GPU]
Synchronization
https://www.khronos.org/opengl/wiki/Synchronization
Command state
unissued -> issued but not complete -> complete
Shader
https://www.khronos.org/opengl/wiki/Shader
-> Programmable shader
-> 3Dモデルを描画するもの
Vertex Shader
-> 頂点(Vertex)単位
Fragment Shader
Pixel Shader
-> ピクセル(Pixel)単位
Geometry Shader
-> プリミティブ(Primitive)単位
Tessellation Control Shader
Tessellation Evaluation Shader
Compute Shader
-> 起動(Invocation)単位
-> not part of Rendering Pipeline
OpenGL Shading Language(GLSL)
https://www.khronos.org/opengl/wiki/OpenGL_Shading_Language
Interface Block (GLSL)
https://www.khronos.org/opengl/wiki/Interface_Block_(GLSL)
修飾子
attribute in 単位毎で異なる情報
uniform 単位毎で同一の情報
varying in, out
in
out
shared
flat
Data Type (GLSL)
https://www.khronos.org/opengl/wiki/Data_Type_(GLSL)
Built-in Variable (GLSL)
https://www.khronos.org/opengl/wiki/Built-in_Variable_(GLSL)
-> per shaders
Sampler
https://www.khronos.org/opengl/wiki/Sampler_(GLSL)
Texture gather accesses
-> 4[texel]をcomponent(0:r, 1:g, 2:b, 3:a)単位で集める
w, z
x, y
Image
https://www.khronos.org/opengl/wiki/Image_Load_Store
OpenGL Extension
https://www.khronos.org/opengl/wiki/OpenGL_Extension
ARB(OpenGL Architecture Review Board)
OES(OpenGL ES Extension)
https://www.khronos.org/registry/OpenGL/extensions/
Reference Page
https://www.khronos.org/registry/OpenGL-Refpages/
-> accordion-styleのindexに切り替えるとOpenGL APIとGLSL Functionのグループで表示される