Notice
Recent Posts
Recent Comments
Link
관리 메뉴

λͺ©λ‘μ „체 κΈ€ (1096)

KoreanFoodie's Study

[OpenGL ES] 10κ°• : 좜λ ₯ 병합(Output Merger), 색상 버퍼(Color Buffer), 깊이 버퍼(Depth Buffer)

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€.μš”μ•½ : 1. 좜λ ₯ 병합 λ‹¨κ³„μ—μ„œλŠ” Fragment Shader λ₯Ό 톡해 전달받은 픽셀을 보여쀄지 말지, ν˜Ήμ€ μ–΄λ–»κ²Œ 보여쀄지λ₯Ό κ²°μ •ν•œλ‹€. μ΄λ•Œ 3 κ°€μ§€μ˜ 버퍼λ₯Ό μ‚¬μš©ν•œλ‹€(Color Buffer, Depth Buffer, Stencil Buffer) 2. Z-buffering 을 μ΄μš©ν•΄ z 값을 μ΄μš©ν•œ 컬링을 슀크린 μŠ€νŽ˜μ΄μŠ€μ—μ„œ μˆ˜ν–‰ν•  수 μžˆλ‹€. μ΄λ•Œ, μ–΄λ–€ 물체λ₯Ό λ¨Όμ € λ Œλ”λ§ν•˜λŠ”μ§€μ™€ 관계없이 결과값은 λ™μΌν•˜λ‹€. 3. μ•ŒνŒŒ λΈ”λ Œλ”©(Alpha Blending) 을 μ΄μš©ν•˜λ©΄ 투λͺ…ν•œ μ˜€λΈŒμ νŠΈλ“€μ΄ 겹쳐져 ..

Game Dev/OpenGL ES 2023. 4. 20. 22:42
[OpenGL ES] 9κ°• : λΌμ΄νŒ…, 퐁 λͺ¨λΈ(Phong Model), λ‚œλ°˜μ‚¬(Diffuse), μ •λ°˜μ‚¬(Specular), μ£Όλ³€κ΄‘(Ambient), 자체 λ°œκ΄‘(Emissive)

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. Fragment Shader λŠ” Texturing κ³Ό Lighting 을 μˆ˜ν–‰ν•˜λŠ”λ°, Lighting 의 λŒ€ν‘œμ μΈ λͺ¨λΈλ‘œλŠ” 퐁 λΌμ΄νŒ… λͺ¨λΈ(Phong Lighting Model 이 μžˆλ‹€). 2. 퐁 λΌμ΄νŒ… λͺ¨λΈμ—μ„œ, 빛은 4 κ°€μ§€μ˜ μš”μ†Œλ₯Ό λ”ν•œ ν–‰λ ¬λ‘œ ν‘œν˜„λœλ‹€ : Diffuse(λ‚œλ°˜μ‚¬), Specular(μ •λ°˜μ‚¬), Ambient(μ£Όλ³€κ΄‘), Emissive(자체 λ°œκ΄‘). 3. Specular 에 ν•„μš”ν•œ View λ²‘ν„°μ˜ 경우, Vertex Shader κ°€ μ›”λ“œ κ³΅κ°„μ—μ„œ κ΅¬ν•œ View 벑..

Game Dev/OpenGL ES 2023. 4. 20. 01:48
[OpenGL ES] 5κ°• : λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈ, 카메라 곡간, λ·° λ³€ν™˜(View Transform), 였λ₯Έμ† μ’Œν‘œκ³„μ™€ 왼손 μ’Œν‘œκ³„, μ ˆλ‘μ²΄

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€.μš”μ•½ : 1. λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈμ€ 크게 λ‹€μŒκ³Ό 같은 μˆœμ„œλ‘œ μ§„ν–‰λœλ‹€ : Vertex Shader -> Rasterizer -> Fragment Shader -> Output Merger 2. Vertex Shader λŠ” 각 정점에 λŒ€ν•œ 정보λ₯Ό μ±„μ›Œ Rasterizer 둜 μ „λ‹¬ν•œλ‹€. Vertex Shader 의 역할은 였브젝트 κ³΅κ°„μ—μ„œ μ›”λ“œ 곡간(World Transform)으둜, μ›”λ“œ κ³΅κ°„μ—μ„œ 카메라 곡간(View Transform)으둜, λ§ˆμ§€λ§‰μœΌλ‘œ 카메라 κ³΅κ°„μ—μ„œ 클립 곡간(Projection T..

Game Dev/OpenGL ES 2023. 4. 14. 03:30
[OpenGL ES] 4-2κ°• : μ›”λ“œ 곡간, 였브젝트 곡간, 였일러 λ³€ν™˜, μž„μ˜μ˜ 좕에 λŒ€ν•œ νšŒμ „

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. 였브젝트 κ³΅κ°„μ—μ„œ μ •μ˜λœ λ¬Όμ²΄λŠ” μ•„ν•€ λ³€ν™˜μ„ μ΄μš©ν•΄ μ›”λ“œ 곡간 μ’Œν‘œκ³„μ—μ„œ ν‘œν˜„ν•  수 μžˆλ‹€. 이λ₯Ό World Transform 이라고 λΆ€λ₯Έλ‹€. 2. 였브젝트 κ³΅κ°„μ˜ μΆ• u, v, n 을 μ›”λ“œ κ³΅κ°„μ˜ μΆ• x, y, z 둜 맞좰주렀면, u, v, n 을 Transpose μ‹œν‚¨ 행렬을 κΈ°μ‘΄ 였브젝트 μΆ• 행렬에 κ³±ν•΄ μ£Όλ©΄ λœλ‹€. 3. μž„μ˜μ˜ 좕에 λŒ€ν•œ 행렬도 2번과 λ§ˆμ°¬κ°€μ§€λ‘œ μ§„ν–‰ν•˜λ©΄, μ’Œν‘œκ³„ μ‹œμŠ€ν…œμ„ μ‰½κ²Œ λ³€ν™˜ν•  수 μžˆλ‹€! μ›”λ“œ 곡간과 였브젝트 곡간 μ˜€λΈŒμ νŠΈκ°€ μ •μ˜λœ μ’Œν‘œκ³„ μ‹œμŠ€ν…œμ„ μš°λ¦¬λŠ”..

Game Dev/OpenGL ES 2023. 4. 12. 13:25
[OpenGL ES] 4-1κ°• : λ²‘ν„°μ˜ νšŒμ „κ³Ό λ³€ν™˜, μ•„ν•€λ³€ν™˜, 3차원 κ³΅κ°„μ—μ„œμ˜ λ³€ν™˜, λ™μ°¨μ’Œν‘œκ³„(Homogeneous Coordinates)

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. μ•„ν•€λ³€ν™˜μ€ Scaling, Rotation, Translation ν–‰λ ¬μ˜ κ²°ν•©μœΌλ‘œ, [L|t] 둜 ν‘œν˜„ν•  수 μžˆλ‹€. 아무리 λ§Žμ€ λ³€ν™˜μ„ 해도 κ²°κ΅­ λ‹¨μΌν•œ [L|t] 둜 ν‘œν˜„ κ°€λŠ₯ν•˜λ‹€! 2. ν–‰λ ¬μ—μ„œ 열을 ν•˜λ‚˜ μΆ”κ°€ν•΄ ν™•μž₯을 μ‹œν‚€λ©΄, Translation 을 행렬을 μ΄μš©ν•΄ ν‘œν˜„ν•  수 μžˆλŠ”λ°, 이렇듯 ν™•μž₯된 ν–‰λ ¬μ˜ μ’Œν‘œκ³„λ₯Ό λ™μ°¨μ’Œν‘œκ³„(Homogeneous Coordinates) 라고 ν•œλ‹€. 3. 원점이 μ•„λ‹Œ 점을 κΈ°μ€€μœΌλ‘œ 물체λ₯Ό νšŒμ „ν•˜λ €λ©΄, κΈ°μ€€ 점을 μ›μ μœΌλ‘œ Translation ν›„,..

Game Dev/OpenGL ES 2023. 4. 12. 00:38
[OpenGL ES] 3κ°• : λͺ¨λΈλ§, 폴리곀 λ©”μ‹œ, ν‘œλ©΄ 법선(Surface Normal), 정점 법선(Vertex Normal)

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€.μš”μ•½ : 1. κ·Έλž˜ν”½μŠ€μ—μ„œλŠ” 물체λ₯Ό 폴리곀 λ©”μ‹œμ˜ μ‘°ν•©μœΌλ‘œ ν‘œν˜„ν•œλ‹€. μ΄λ•Œ ν΄λ¦¬κ³€μœΌλ‘œλŠ” 일반적으둜 μ‚Όκ°ν˜•μ„ μ‚¬μš©ν•œλ‹€. 2. 폴리곀 λ©”μ‹œλ“€μ˜ 정점 μ’Œν‘œμ™€ Normal 은 Vertex Array 의 ν˜•νƒœλ‘œ μ €μž₯ν•œλ‹€. 3. ν‘œλ©΄ 법선(Surface Normal)은 폴리곀 λ©”μ‹œ μ‚Όκ°ν˜•μ˜ Normal 벑터이며, 정점 법선(Vertex Normal) 은 νŠΉμ • Vertex μ—μ„œμ˜ Normal 벑터이닀. λ§€λˆν•œ 물체λ₯Ό ν‘œν˜„ν•  λ•ŒλŠ” Vertex Normal 이 맀우 μœ μš©ν•˜λ‹€.폴리곀 λ©”μ‹œ (Polygon Mesh)폴..

Game Dev/OpenGL ES 2023. 4. 11. 21:02
[OpenGL ES] 2κ°• : λ²‘ν„°μ˜ 내적/외적, μ„ ν˜• 보간(Linear Interpolation)

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. μ’Œν‘œκ³„λŠ” Orthonormal ν•œ κΈ°μ € λ²‘ν„°λ‘œ μ •μ˜ν•  수 μžˆλ‹€. 2. 벑터λ₯Ό λ‚΄μ ν•˜λ©΄ μ ˆλŒ“κ°’μ— 코사인 값을 κ³±ν•œ κ²°κ³Όκ°€ λ‚˜μ˜¨λ‹€. 90 도일 경우 0 이닀! 3. μ™Έμ μ˜ 경우, 였λ₯Έμ† λ²•μΉ™μœΌλ‘œ λ°©ν–₯을 ꡬ할 수 μžˆλ‹€. μ™Έμ μ˜ μ ˆλŒ“κ°’μ€ 두 벑터가 λ§Œλ“œλŠ” ν‰ν–‰μ‚¬λ³€ν˜•μ˜ 넓이이닀. μ’Œν‘œκ³„ (Coordinate System and Basis) 와 λ²‘ν„°μ˜ 내적/외적 μ’Œν‘œκ³„λŠ” 원점(origin)κ³Ό κΈ°μ €(basis) 둜 이루어진닀. μœ„μ˜ κ·Έλ¦Όμ—λŠ” 2D 곡간을 μ΄λ£¨λŠ” κΈ°μ € λ²‘ν„°μ˜ 쑰합이 λ‚˜μ™€ μžˆλŠ”λ°, ..

Game Dev/OpenGL ES 2023. 4. 11. 01:19