ํฌ์ŠคํŠธ

RGB

RGB

๐Ÿ’ซ ๋ง๋จธ๋ฆฌ


Gizmos์˜ X, Y, Z ์ถ•์€ ์™œ ๋นจ๊ฐ„์ƒ‰, ์ดˆ๋ก์ƒ‰, ํŒŒ๋ž€์ƒ‰์ผ๊นŒ?

๐Ÿ’ซ ์ƒ‰๊ณผ ๋น›


๐Ÿซง ๊ฐ์‚ฐ ํ˜ผํ•ฉ

์ž‰ํฌ.
์ƒ‰์˜ ์‚ผ์›์ƒ‰ : CMYK๋กœ ์ด๋ฃจ์–ด์ง„ ์ƒ‰์„ ๋”ํ•˜๋ฉด ๋”ํ• ์ˆ˜๋ก ์–ด๋‘์›Œ์ง€๋ฉฐ, ๋ชจ๋‘ ๋”ํ•˜๋ฉด ๊ฒ€์€์ƒ‰์ด ๋˜๋Š” ์ƒ‰์˜ ์ฒด๊ณ„.

๐Ÿซง ๊ฐ€์‚ฐ ํ˜ผํ•ฉ

๋น›.
๋น›์˜ ์‚ผ์›์ƒ‰ : RGB๋กœ ์ด๋ฃจ์–ด์ง„ ์ƒ‰์„ ๋”ํ•˜๋ฉด ๋”ํ• ์ˆ˜๋ก ๋ฐ์•„์ง€๋ฉฐ, ๋ชจ๋‘ ๋”ํ•˜๋ฉด ํฐ์ƒ‰์ด ๋˜๋Š” ์ƒ‰์˜ ์ฒด๊ณ„.

๐Ÿ’ซ ๋ชจ๋‹ˆํ„ฐ์˜ ์ƒ‰๊ณผ ๋น›


๋ชจ๋‹ˆํ„ฐ๋Š” ๋น›์œผ๋กœ ์ƒ‰์„ ํ‘œํ˜„ํ•˜๊ณ , ๋•Œ๋ฌธ์— ๊ฐ€์‚ฐ ํ˜ผํ•ฉ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿซง How

์ผ๋ฐ˜์ ์œผ๋กœ ์ปฌ๋Ÿฌ ๋ชจ๋‹ˆํ„ฐ๋Š” RGB๋กœ ๊ตฌ์„ฑ๋œ 3๊ฐœ์˜ โ€˜์„œ๋ธŒ ํ”ฝ์…€ (Subpixel)โ€™ ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋‹ˆํ„ฐ์˜ ํ•œ ํ”ฝ์…€์„ ์ด๋ฃจ๋Š” ๊ธฐ๋ณธ๊ตฌ์กฐ๋Š” ๋งˆ์น˜ R, G, B (Red, Green, Blue)์˜ ์ƒ‰์œผ๋กœ ๋น›๋‚˜๋Š” 3๊ฐœ์˜ ์กฐ๋ช…์ด ๋ถ™์–ด์žˆ๋Š” ๋ชจ์Šต์ด๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฆ‰, 3๊ฐœ์˜ ์กฐ๋ช…์ด ๋ชจ๋‘ ๋™์‹œ์— ๋น›๋‚œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ์ด 3๊ฐœ์˜ ์ƒ‰์„ ๋ฉ€๋ฆฌ์„œ ๋ณด๋ฉด ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ ธ์„œ ํฐ์ƒ‰์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ซ ์ƒ‰์€ ์ˆซ์ž๋‹ค


๐Ÿซง ๋ชจ๋‹ˆํ„ฐ์— ๋‚˜ํƒ€๋‚ด๋Š” ์ƒ‰์„ ์ˆซ์ž๋กœ ํ‘œํ˜„ํ•˜๊ธฐ

๋นจ๊ฐ„์ƒ‰์€ 3๊ฐœ์˜ ์กฐ๋ช… ์ค‘ R ์กฐ๋ช…๋งŒ ์ผœ์ง€๊ฒŒ ๋˜๊ณ , ์ •ํ™•ํ•˜์ง„ ์•Š๊ฒ ์ง€๋งŒ, ๋ฐ๊ธฐ๋กœ๋งŒ ๋”ฐ์ ธ๋ณด๋ฉด ํฐ์ƒ‰๋ณด๋‹ค ์•ฝ 1/3 ์ฏค์œผ๋กœ ์–ด๋‘์›Œ์กŒ์„ ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿซง ์ปฌ๋Ÿฌ๋ฅผ ์ˆซ์ž๋กœ ๋‚˜ํƒ€๋‚ด๋ณด๊ธฐ

ํ•œ ํ”ฝ์…€์˜ ์ƒ‰์„ ๊ฒฐ์ •ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ โ€˜ํ”ฝ์…€ ์‰์ด๋”(Pixel Shader)โ€™ ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค

๐Ÿซง ์ปฌ๋Ÿฌ๋ฅผ ์ˆซ์ž๋กœ ์ธ์‹ํ•ด ๋ณด๊ธฐ

RGB๋Š” ํ•ฉ์ณ ๋†“์œผ๋ฉด ์ปฌ๋Ÿฌ๋กœ ๋ณด์ด์ง€๋งŒ ๋”ฐ๋กœ๋”ฐ๋กœ ๋†“์œผ๋ฉด ํ‘๋ฐฑ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด R ๊ฐ’๋งŒ ์žˆ๊ณ  ๋‚˜๋จธ์ง€๋Š” ์—†๋‹ค๊ณ  ํ•˜๋ฉด, R ๊ฐ’์˜ ์ˆซ์ž๋Š” ๋” ์ด์ƒ ์ปฌ๋Ÿฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ R ๊ฐ’์˜ โ€˜๊ฐ•๋„โ€™๋งŒ ํ‘œํ˜„ํ•˜๋Š” ํ•œ ์ž๋ฆฌ ์ˆซ์ž์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋งˆ์น˜ โ€˜๋ถ‰์€์ƒ‰ ์ „๊ตฌ๋ฅผ ์ผœ๋Š”๋ฐ ํ•„์š”ํ•œ ์ „๊ธฐ์˜ ํž˜โ€™ ๊ฐ™์€ ๋Š๋‚Œ์ฒ˜๋Ÿผ ๋ง์ž…๋‹ˆ๋‹ค. ๊ทธ ํž˜ ์ž์ฒด๊ฐ€ ๋ถ‰์€์ƒ‰์„ ๋‚˜ํƒ€๋‚ด์ง€๋Š” ์•Š์œผ๋ฏ€๋กœ ๊ฐ ์ปฌ๋Ÿฌ์˜ ์ฑ„๋„์„ ๋”ฐ๋กœ ๋ณผ ๋•Œ๋Š” ํ‘๋ฐฑ์œผ๋กœ โ€˜๊ฐ•๋„โ€™๋งŒ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์•ŒํŒŒ ์ฑ„๋„๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ํˆฌ๋ช…๋„๋„ ๋”ฐ๋กœ ๋–ผ์–ด ๋†“๊ณ  ๋ณด๋ฉด ํ‘๋ฐฑ์˜ โ€˜๊ฐ•๋„โ€™์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ซ ์ƒ‰ ์—ฐ์‚ฐ


๐Ÿซง ์ปฌ๋Ÿฌ๋ฅผ ์—ฐ์‚ฐํ•ด ๋ณด๊ธฐ

๋…ธ๋ž€์ƒ‰ (1,1,0) + ๋นจ๊ฐ„์ƒ‰ (1,0,0) ๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์ผ๋‹จ ์ˆซ์ž๋กœ๋Š” (2,1,0) ์ด ๋ฉ๋‹ˆ๋‹ค. ์ •๋‹ต์€ ๋…ธ๋ž€์ƒ‰์ž…๋‹ˆ๋‹ค. ๋น„๋ก ์ˆซ์ž๋Š” 1์„ ๋„˜์–ด์„ฐ์ง€๋งŒ ์ด๊ฒƒ์€ ์ˆซ์ž๋กœ ์กด์žฌ๋งŒ ํ•  ๋ฟ, ๋ชจ๋‹ˆํ„ฐ์—์„œ๋Š” 1์ด์ƒ์˜ ์ƒ‰์ƒ์€ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ใ„ด [์—ฌ๊ธฐ์—์„œ ์šฐ๋ฆฌ๋Š” โ€˜1๋ณด๋‹ค ๋ฐ์€์ƒ‰โ€™ ์ฆ‰, โ€˜ํฐ์ƒ‰๋ณด๋‹ค ๋ฐ์€์ƒ‰โ€™ ์ด ์‹ค์ œ๋กœ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์„ธ๊ณ„์—์„œ๋„ โ€˜๋ˆˆ๋ถ€์‹ค ์ •๋„๋กœ ๋ฐ์€ ๋น›โ€™ ์ด ์กด์žฌํ•˜๋“ฏ์ด ๋ง์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋‹ˆํ„ฐ๋กœ ๊ทธ ์ƒ‰์„ ์ถœ๋ ฅํ•ด๋‚ด๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ˆˆ์œผ๋กœ๋Š” 1์ด ๋„˜์–ด๊ฐ€๋Š” ๋ฐ์€์ƒ‰์„ ๊ตฌ๋ณ„ํ•ด๋‚ผ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์— ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ƒ‰์ƒ์„ ์ถ”๊ฐ€๋กœ ์—ฐ์‚ฐํ•  ๋•Œ ์˜ค์ฐจ๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. + {์ด ๋ถ€๋ถ„์€ HDR ๋“ฑ์— ์—ฐ๊ด€๋˜๋ฉฐ, ๋ธ”๋ฃธ (Bloom) ํšจ๊ณผ ๋“ฑ์„ ๋งŒ๋“ค ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.}] ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋บ„์…ˆ๋„ ๊ณ„์‚ฐ์— ๋”ฐ๋ผ์„œ๋Š” 0 ์ดํ•˜์˜ ์ƒ‰์ƒ์ด ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 0 ์ดํ•˜์˜ ์ˆซ์ž๋Š” 0์œผ๋กœ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋นจ๊ฐ„์ƒ‰์—์„œ ํŒŒ๋ž€์ƒ‰์„ ๋บ€ ์ƒ‰์€ ๊ทธ๋ƒฅ ๋นจ๊ฐ„์ƒ‰์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ˆซ์ž๋กœ๋Š” -1์ด ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์œผ ์ฃผ์˜ํ•˜์„ธ์—ฌ โ˜… ๋‚˜๋ˆ—์…ˆ์€ ์ƒ๋Œ€์ ์œผ๋กœ ๊ณฑ์…ˆ๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค

๐Ÿซง ์ปฌ๋Ÿฌ์˜ ๋ฐ˜์ „ (Invert)

1 = float1 (1) = float3 (1, 1, 1) = float4 (1,1,1,1) ์ด ๋•Œ 1์ž๋ฆฌ ์ˆซ์ž์˜ ๊ฒฝ์šฐ ๊ตณ์ด ์•ž์— float์„ ๋ถ™์ด์ง€ ์•Š์Œ, ๊ทธ๋ƒฅ 1์ด๋ผ๊ณ  ์”€ 1์—์„œ ์–ด๋–ค ์ƒ‰์„ ๋นผ๋ฉด ๊ทธ ์ƒ‰์ด ๋ฐ˜์ „๋ฉ๋‹ˆ๋‹ค. 1-x ๊ณ„์‚ฐ์€ ํฐ์ƒ‰์„ ๊ฒ€์ •์ƒ‰์œผ๋กœ, ๊ฒ€์ •์ƒ‰์„ ํฐ์ƒ‰์œผ๋กœ ๋’ค์ง‘์–ด ์ฃผ๋Š” ๋“ฑ์˜ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ์‰์ด๋” ๊ณ„์‚ฐ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๊ณค ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿซง Swizzling

= mix up, ํœ˜๋ชฐ์•„์น˜๋Š”
๋ฒกํ„ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ž„์˜๋กœ ์žฌ์ •๋ ฌํ•˜๊ณ  ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฒกํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ (CG์—์„œ)

  • Pointer Swizzling
    • ํฌ์ธํ„ฐ๋กœ ๋งํฌ๋œ ์ž๋ฃŒ ๊ตฌ์กฐ ๋‹จ์œ„๋ฅผ, ID๋‚˜ ์ด๋ฆ„ ๋“ฑ์œผ๋กœ ๋Œ€์ฒดํ•จ์œผ๋กœ์จ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋”๋ผ๋„ ์„ฑ๊ณต์ ์œผ๋กœ ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œ, ์—ญ์ง๋ ฌํ™” ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•
  • ์ฐธ๊ณ ๋กœ ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ์˜ ํœ˜๋ชฐ์•„์น˜๋Š” ์นผ๋‚ ์€ Sweeping์ด๋‹ค.

๐Ÿ’ซ Memo


๐Ÿซง Ref

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.