๐ RedGPU V4.2.0-Alpha ๊ณต์ ๋ฆด๋ฆฌ์ค!
1๏ธโฃ SSBO (Shader Storage Buffer Object) ๊ตฌ์กฐ ํตํฉ
* ๋ฉ์์ ์ฌ์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ญ ์คํ ๋ฆฌ์ง ๋ฒํผ(SSBO)์ ํต์ผ!
* ์ธ๋ฑ์ค ๋ฒํธํ ๊ธฐ๋ฐ์ ๊ณ ์ ์กฐํ๋ฅผ ํตํด ๋๋ก์ฐ์ฝ ๋ฐ์ธ๋ฉ ๋น์ฉ์ ํ๊ธฐ์ ์ผ๋ก ์ฐจ๋จํ์ต๋๋ค.
- globalVertexSSBO (2,000 ์ฌ๋กฏ): ๋ฉ์ ๋ณํ ๋ฐ ๋ฒํ
์ค ์ฐ์ฐ ์์ฑ
- globalFragmentSSBO_PBR (1,024 ์ฌ๋กฏ): PBR ์ฌ์ง ์์ฑ ๋ฐ GLTF ํ์ฅ ์ต์
์ ์ด
- globalFragmentSSBO_BuiltIn (1,024 ์ฌ๋กฏ): ๊ธฐ๋ณธ ๋นํธ์ธ ๋จธํฐ๋ฆฌ์ผ ์์ฑ ์ ์ด
2๏ธโฃ CPU ์ปฌ๋ง (Culling) ์ต์ ํ ์์คํ
* ์กฐ๊ธฐ ํ๋ฝ (Early-Out): ์นด๋ฉ๋ผ ๋คํธ ๋ฌผ์ฒด๋ ๋ณต์กํ 6-Plane ์ถฉ๋ ๊ฒ์ฌ ์ , ๋จ์ 1ํ ๋ด์ (Dot Product) ์ฐ์ฐ์ผ๋ก ์ฐ์ ์ ์ธํด ์ฐ์ฐ ๋ถํ๋ฅผ ํฌ๊ฒ ๋ฎ์ท์ต๋๋ค.
* ๊ฐ๋ณ ์ธํฐ๋ฆฌ๋ธ๋ ์ปฌ๋ง: ์ฌ์ ๋ฌผ์ฒด๋ค์ 4๊ฐ ๊ทธ๋ฃน์ผ๋ก ๋ถํ ํ์ฌ ๋งค ํ๋ ์ 1/4์ฉ ์์ฐจ ๊ณ์ฐํ๋ฉฐ, ์นด๋ฉ๋ผ ์๋์ ๊ฐ์ํ์ฌ ์ฃผ๊ธฐ๋ฅผ ์ค์๊ฐ ์กฐ์ ํฉ๋๋ค.
* ์๊ฑฐ๋ฆฌ ์์ฃผ ์์ ๋ฌผ์ฒด ์๋ต: ํฌ์ ๋์ด๊ฐ ํ๋ฉด ์ธ๋ก ๋๋น 1% ๋ฏธ๋ง์ธ ๋ฌผ์ฒด๋ ๊ทธ๋ฆฌ๊ธฐ์์ ์ ์ธํด ๋๋ก์ฐ์ฝ ๋น์ฉ์ ์ ๊ฐํฉ๋๋ค.
3๏ธโฃ ๋ชจ์
๋ธ๋ ๋ฉ & ์ ๋๋ฉ์ด์
์์คํ
๊ณ ๋ํ
* ์ ๋๋ฉ์ด์
์ํ ๋จธ์ (AnimStateMachine) ๋์
: ์ํ ๋ฐ ์ ์ด ์กฐ๊ฑด์ ๋ฐ๋ผ ์ค์๊ฐ ๋ฏน์ ๋ ์ด์ด์ ๊ฐ์ค์น์ ํฌ๋ก์คํ์ด๋๋ฅผ ์์คํ
์ด ์๋ ์ ์ดํฉ๋๋ค.
* CPU-Side TRS Blending: ๋ก์ปฌ ์คํ์ด์ค์์ ๋ชจ์
์ ๋จผ์ ๋ฏน์ฑํ์ฌ ์ฐ์ฐ ์ค๋ฒํค๋๋ฅผ ์ค์์ต๋๋ค.
* ์ต๋จ ๊ฒฝ๋ก SLERP ๋ณด์ : ํ์ ๋ฏน์ฑ ์ ์ฟผํฐ๋์ธ ๋ด์ ๊ณ์ฐ์ผ๋ก ๊ผฌ์์ ๋ฐฉ์งํ๋ฉฐ ์ต๋จ ๊ฒฝ๋ก ๋ณด๊ฐ์ ๊ณ์ฐํฉ๋๋ค.
๐ ๋ชจ์
๋ธ๋ ๋ฉ ๋ฐ๋ชจ: redcamel.github.io/RedGPU/exโฆ
๐ ์บ๋ฆญํฐ ์ ์ด ๋ฐ๋ชจ: redcamel.github.io/RedGPU/exโฆ
4๏ธโฃ ๊ทธ๋ฆผ์ (Shadow) ์์คํ
๋ณ๊ฒฝ
* ๋์ ํ๋ฌ์คํ
ํผํ
(Tight Fitting): ๋งค ํ๋ ์ ๋ฉ์ธ ์นด๋ฉ๋ผ ๋ทฐ ํ๋ฌ์คํ
8๊ฐ ์ ์ ์ ์๋ ๊ณต๊ฐ์ผ๋ก ์ญํฌ์ํด ๊ทธ๋ฆผ์ ์์ ๋ฒ์๋ฅผ ๊ฝ ์ฑ์์ผ๋ก์จ ํด์๋ ๋ญ๋น๋ฅผ ๋ฐฉ์งํ๊ณ ๊ทธ๋ฆผ์ ํ์ง์ ๊ทน๋ํํ์ต๋๋ค.
* ๊ทธ๋ฆผ์ ๋ฐํ์ ์ ์ด: ๋ฐฉํฅ์ฑ ์กฐ๋ช
๊ทธ๋ฆผ์ ๊ด๋ฆฌ์์ ๊ฐ๋(strength) ๋ฐ PCF ํํฐ ๋ฒ์ง ์กฐ์ (filterScale) ์์ฑ์ ์ถ๊ฐํ์ฌ ๋ฐํ์ ์กฐ์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
๐ ๊ทธ๋ฆผ์ ๋ฐ๋ชจ: redcamel.github.io/RedGPU/exโฆ
๐ GLTF ๊ทธ๋ฆผ์ ๋ฐ๋ชจ: redcamel.github.io/RedGPU/exโฆ
---
๐ ๋ ์์ธํ ๋ฆด๋ฆฌ์ฆ ๋
ธํธ์ ์ฝ๋๋ GitHub์์ ํ์ธํด๋ณด์ธ์!
๐ github.com/redcamel/RedGPU/rโฆ
#WebGPU #Web3D #JavaScript #RedGPU #GraphicsProgramming #GameDev #FrontEnd
1
2
253















