if๋ฌธ ์ฐ๋ฉด if(a == 0){C}
์ด๋ ๊ฒ ์ผ์๋ C ๊ณ์ฐ์ ๋คํ๊ณ ๊ทธ๋ค์ ์กฐ๊ฑด๋ฌธ์ ๋ฐ๋ผ
๋ฒ๋ฆด์ง ์๋ฒ๋ฆด์ง ๋ฌ๋ผ์ ธ์
C๊ฐ ๋ฌด๊ฑฐ์ธ์๋ก ์ฑ๋ฅ์ ์์ข๋ค๊ณ ์๊ณ ์๋๋ฐ
๊ตฌ๊ธ๋ง์ ํ๋ค๋ณด๋๊น
์ ์กฐ๊ฑด๋ฌธ์ด 32๋นํธ? ์ค๊ฐ ๋ด์ฉ์ด ์ดํด๊ฐ ์์๋๋๋ฐ
๋ค ๋๊ฐ์ด ๋์ค๋ฉด ์ฑ๋ฅ์ ์๊ด์๋ค๋๋ฐ
๋ฌด์จ ๋ด์ฉ์ธ์ง ์๋ ์ฌ๋์์?
์๋ ๋๊ธ ๊ธ์ ๋ณธ๋ฌธ ๋ด์ฉ์ค:
32๊ฐ์ ์ฐ๋ ๋์ ๋ํด์ ๋ชจ๋ cond ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ธ๋์นญ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์๋๋ค. ๊ฐ๋ น 32๊ฐ์ ์ฐ๋ ๋์ cond ๊ฐ ๋ชจ๋ ๋์์ true ์ด๋ฉด hairShading ๋ง ์ฒ๋ฆฌํ๊ณ ๊ตณ์ด clothShading ์ ์ฒ๋ฆฌ ํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ GPU๊ฐ ๋ฐํ์์ ์ ์ ์๊ธฐ ๋๋ฌธ์ else ๋ถ๋ถ์ ์ํํ์ง ์๊ณ ๋์ด๊ฐ๋ค. ์ด๊ฒ์ย ๋ค์ด๋๋ฏน ๋ธ๋์นญ (dynamic branching)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ฌผ๋ก ์ด๋ฐ ์ต์ ํ๋ ์ฒ์๋ถํฐ ๋์๋๊ฑด ์๋๋ค. ์๋ GPU๋ cond ์ ์ํ์ ๋ฌด๊ดํ๊ฒ ๋๋ค ๋์ํ์ง๋ง ์ง๊ธ์ ๋๋ํ๊ฒ ์ฒ๋ฆฌํด์ค๋ค6. ์ฐธ๊ณ ๋ก ์ด๋ ๊ฒ ๋์ผํ ๋ถ๊ธฐ๋ก ์ฒ๋ฆฌ๊ฐ ๋ ๋ย ์์ง์ฑ(coherence)์ด ์ข๋ค๊ณ ๋งํ๋ค
- dc official App
https://blog.hybrid3d.dev/2020-12-21-reason-for-slow-of-if-statement-in-shader
- dc App
์จ ์๋ ๊ทธ๋๋ก ์ดํดํ๋ฉด ๋๋๊ฑฐ ์๋?
ํ๋์ ๋ช ๋ น์ 32 or 64๊ฐ์ ์ค๋ ๋ ๋ธ๋ญ์ด ๋์์ ๋ณ๋ ฌ์ฒ๋ฆฌํ๋๋ฐ, ๋ง์ฝ ๋ธ๋ญ ์ ์ฒด๊ฐ ๊ฐ์ ๋ถ๊ธฐ๋ก ํ์ ๋๋ค๋ฉด ๋ค๋ฅธ ๋ถ๊ธฐ์ ๋ํ ์ฒ๋ฆฌ๋ ์๋ตํ๋ค
์ค์ ์ฑ๋ฅ ์ฐจ์ด๋ฅผ ํ์ธํด๋ณด๊ณ ์ถ๋ค๋ ์๊ธฐ?
๋ด๊ฐ ์ผ๋งค๋ก ๋ฐฐ์ด๊ฑฐ๋ผ ์ํฉ์ผ๋ก ์ค๋ช ํด์ฃผ๋๊ฑฐ ์๋๋ฉด ์ ์ดํด๋ฅผ ๋ชปํจ ๋ธ๋ญ ์ ์ฒด๋ผ๋๊ฒ ์ ๋ํฐ๋ก ์ค๋ช ํ๋ฉด ํํ๋ฉด์์ ๊ฐ์ ์์ด๋๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ค๋ธ์ ํธ๋ค์ ๋ถ๊ธฐ๋ฌธ ๊ฐ์ด ๊ฐ์๋๋ฅผ ๋งํ๋๊ฑฐ์? - dc App
์ 32 or 64ํฝ์ ๋ธ๋ฌ์๋ก ์์น ํ ๋ ๋ชจ๋ ํฝ์ ์ด ๊ฐ์ ์(๋ถ๊ธฐ, ๊ฒฐ๊ณผ ์ปฌ๋ฌ๊ฐ ์๊ธฐ ์๋)์ผ๋ก ์น ํด์ง๋ค๋ ๋๋์ผ๋ก ์๊ฐํ๋ฉด ๋ ๋ฏ?
์ ๊ฐ์ ์์ด๋๋ฅผ ์ฐ๋ ํ๋ธ 5๊ฐ๊ฐ ์๋๋ฐ ํ๋ธ 5๊ฐ์ ํฝ์ ๋น ์กฐ๊ฑด๋ฌธ ๊ฒฐ๊ณผ๊ฐ์ด ๋ค ๊ฐ์์ผํ๋ค๋๊ฑด๊ฐ? - dc App
ใดใด ์์ด๋ ์ธ์์์๋ ๊ทธ๋ฐ ๊ฐ๋ ์ ์๋ฏธ ์์
์๋๋ฉด ํํ๋ฉด์ ํ๋ธ๊ฐ 5๊ฐ๊ฐ ๋์ค๊ณ 5๊ฐ๋ค ์์ ๋ค๋ฅธ๋ฐ ๊ฐ๊ฐ ํ๋ธ์ ํฝ์ ๋น ๋ชจ๋ ๋ถ๊ธฐ๋ฌธ ๊ฐ์ด ๊ฐ์ผ๋ฉด ์๊ด์๋๊ฑด๊ฐ ํ ํ๋ธ๋ ์ ๋ถ true ํ๋๋ ์ ๋ถ false - dc App
ใ ใ ;; - dc App
ํ๋ธ๋ฅผ ๊ทธ๋ฆฌ๋๋ฐ ํ์ดํ๋ผ์ธ ํ๋ฉด์ ์์ด๋์ ๊ฐ์ ์์ฐฝ ๋๋ ค ๋ฃ๋๋จ๋ง์ผ
hlsl๋ก ์ง์ฌ์ง ์์ด๋ ํ๋๋ ๊ทธ๊ฑธ ์ฌ์ฉํ๋ ํ๋ธ ์ฌ๋ฌ๊ฐ๋ฅผ ๋ ๋๋ง ํ ๋๋ก ์ค๋ช ๊ฐ๋ฅ? - dc App
๊ทธ๋ผ GPU๋ ์์ด๋๋ฅผ ์คํํ๋ฉด์ ๊ทธ๊ฑธ ๋ฉํฐ ์ค๋ ๋๋ก ๋ณ๋ ฌ์ฒ๋ฆฌํ๋๋ฐ ๊ทธ ์ค๋ ๋๊ฐ 32 or 64๊ฐ ๋จ์๋ก ๊ตฌ๋ถ๋๊ณ
๊ทธ ๋จ์ ๋ด์์ ๋ถ๊ธฐ๊ฐ ๊ฐ๋ค๋ฉด ํ๋๋ง ํ๋ค๋ ์๋ฆฌ
ํ๋ธ๊ฐ ์ฌ๋ฌ๊ฐ์ธ๊ฑด ์๋ฌด ์๊ด ์์
๋๋ ค๋ฃ๋ ๊ฐ์ ์๊ฐ ํ๋ธ ๊ฐ์์ ๋น๋กํด์ ๋์ด๋ ์์ด์ง
์ ์ฐ๋ ๋๋จ์๋ก ๋ถ๊ธฐํ๋๊ฒ ์ ์ดํด๊ฐ ์๊ฐ๋๋ฐ int๊ฐ ํ๋๋ก ํ ๊ธ๋ง๋ค์ด์ 0,1ํ๊ณ if(i == 0)C ์ด๋ฐ ์กฐ๊ฑด๋ฌธ ํ๋ ๋ง๋ค๋ฉด ์ด์บ๋จ? ์ฌ์ฉ์๊ฐ ํ ๊ธ์ ํค๊ณ ๋๊ณ ํ๋๊ฑฐ์ ์ํฅ์ด ์๋? ์๋๋ฉด ๊ฑ ๋ฌด์กฐ๊ฑด ๋๋ค ๊ณ์ฐํจ? - dc App
ํ ํ๋ ์์ ๊ทธ๋ฆฌ๋๊ฑฐ๋๊น ์ฌ์ฉ์ ์ ๋ ฅ์ผ๋ก ๊ฐ์ ํ ์ฌ์ง๊ฐ ์์
๊ทธ๋ฆผํ์ ํฐ ๋ฐฐ๊ฒฝ์ด ์๊ณ ๊ฑฐ๊ธฐ์ ์ฌ๊ฐํ์ด ํ๋ ์๋๋ฐ ๊ฑฐ๊ธฐ ์ ์ฑ์ฐ๊ธฐ๋ฅผ ํ๋ ๊ณผ์ ์ ์์ํด๋ณด์
ํ๋ฒ์ 32ํฝ์ ์ฉ ํด์ ๋ชจ๋ ์์น ์ด ๋๋ ๋๊น์ง ๊ทธ๋ฆผํ์ด ๋ฉ์ถ๋๊ฑฐ์ (1ํ๋ ์)
๊ทธ ๊ณผ์ ์์ 32ํฝ์ ์ฒ๋ฆฌ๊ฐ ๋์ผํ ๋ถ๊ธฐ๋ผ๋ฉด ์๋ตํ๋ค
์ค๊ฐ์ ์ด๋ค ํ์ฐจ๋ ํต์ผ์ด ์๋๊ณ ์ด๋ค ํ์ฐจ๋ ํต์ผ์ด ๋๊ณ ํ ์ ์๋๊ฒ
๋ชจ๋ ํ์ฐจ๊ฐ ๋๋๋ฉด ๊ฒฐ๊ณผ๋ฌผ์ด ํ๋ฉด์ ์ถ๋ ฅ๋๊ณ 1ํ๋ ์์ด ๋๋๋๊ฑฐ
๋ฌด์จ ๋๋์ธ์ง๋ ์๊ฑฐ๊ฐ์๋ฐ ๊ทธ๋ผ ์๊น ์์ ๋ด๊ฐ ๋งํ๊ฑฐ if(i == 0)์ด๋ผ๋ ์กฐ๊ฑด๋ฌธ์ด ํ๋ ๋ค์ด๊ฐ ์์ด๋๋ฅผ ์ฌ์ฉํ๋ ์ค๋ธ์ ํธ๊ฐ ํ๋ ์๋๋ฐ i์ ๊ฐ์ด ํ๋กํผํฐ๋ก ๋์์๋๋ฐ 1์ ์ ๋ ฅํ ์ํ๋ฉด ์๋ฅผ ๊ทธ๋ฆฌ๋ ๋ชจ๋ ๋นํธ๋ ๋ค ๊ฐ์ ๋ถ๊ธฐ๋ฅผ ํํ ๋๊น if๋ฌธ์ ๋ฌด์๋๋๊ฑด๊ฐ? - dc App
๋๋ ์ง์ ์ธก์ ํด๋ณธ๊ฑด ์๋๋ผ์ ํ์คํ๋ค๊ณ ์ฅ๋ด์ ๋ชปํ๊ฒ ๋๋ฐ ์ ๊ธฐ ๋์์๋ ๋ด์ฉ๋๋ก๋ผ๋ฉด ๊ทธ ์๊ฐ์ด ๋ง์
๊ทผ๋ฐ ๊ทธ๋ฐ ๋ด์ฉ์ด๋ฉด define์ด ๋ซ์ง ์์?
๊ทธ๋ผ ๊ฐ์ ์กฐ๊ฑด์ผ๋ก ์ค๋ธ์ ํธ๊ฐ 2๊ฐ ์๋๋ฐ ํ๋๋ i์ 0์ ๋ฃ๊ณ ๋ค๋ฅธ ํ๋๋ 1์ ๋ฃ์ผ๋ฉด ํ๋ธ์ ํฝ์ .์์น์ ๋ฐ๋ผ์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋๊ฑด๊ฐ // ์๋ ๋ฉํฐ์ปดํ์ผ๋ก ๋์ด ์๋ ๊ฑด๋ฐ ๋ฒ ๋ฆฌ์ธํธ๊ฐ ๋๋ฌด ๋ง์ ์์ด๋๋ผ ์ข ์ค์ด๊ณ ์ถ์ด์ - dc App
ํ๋ธ ๋จ์๊ฐ ์๋๋ผ ํฝ์ ๋จ์๋ก ์น ํ๋๊ฑฐ๋๊น ๊ทธ ๊ฒฝ์ฐ๋ 0์ 0๋ผ๋ฆฌ ๋ญ์น๊ณ 1์ 1๋ผ๋ฆฌ ๋ญ์ณ์ ๊ทธ๋ฆด๊ฑฐ์
ํน์ ๋ฒํ ์ค ๋จ์
์ ์ด๊ฒ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ฆฌ๋ฉด์ ํ๋ฉด์ข ์ฌ์ด๋ฐ ํ๋ธ ๋จ์๊ฐ ์๋๋ผ ๊ทธ๋ฅ 32or64ํฝ์ ๋จ์๋ก ์์๋ก ๊ทธ๋ ค์ง๋๊น 64ํฝ์ ์ 1์ธ ํ๋ธ ํฝ์ ์ด๋ 0์ธํ๋ธํฝ์ ์ด ๊ฐ์ด ๊ทธ๋ ค์ง๋ฉด 0.1๊ด๊ณ ์์ด if๋ค ํ๋๊ฑฐ๊ฒ ๋ค - dc App
๋ง ์์ฌ์ ๋ค์ด๊ฐ์ง๋ ์์๊ฑฐ์ ๋ฐฐ์นญํด์ ๋์๊ฐ๋๊น
srp๋ฐฐ์ฒ ์ฌ์ฉ์ค์ด๋ผ ๊ฐ์ ์์ด๋์ ๋ค์ ๋ค ํต์ผ๋ก ๊ทธ๋ ค - dc App
์ํฉ์ด ๋ชฌ์คํฐ ์์ด๋์ด๊ณ ๋์กธ๋ธ ๊ธฐ๋ฅ์ด ๋ฉํฐ์ปดํ์ผ๋ก ๋์ด์๋๊ฑธ ์์ ํ ๋ ์ด๋ป๊ฒ ๋ ์ง ๊ถ๊ธํ๋๊ฑฐ๋ผ ์บ๋ฆญํฐ ์ฌ๋ฌ๊ฐ ๋ง๋์ฌ์๋ ์์ผ๋๊น ๊ฒฐ๊ตญ ๊ฒน์น ๊ฑฐ๊ฐ๋ค ใ - dc App
์ํผ ๋ต๋ต ํ ์๋ ์์ํ ๋ฐ ใฑใ ใฑใ - dc App