ํฌ์ŠคํŠธ

Cg

Cg

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


์‰์ด๋” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด.
C for Graphics.

๐Ÿ’ซ ์ข…๋ฅ˜


ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ฒ˜๋Ÿผ ํ•˜๋‚˜๋งŒ ์ž˜ ๋ฐฐ์›Œ๋‘๋ฉด ๋‚˜๋จธ์ง€๋Š” ์‰ฝ๊ฒŒ ํ„ฐ๋“ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿซง Cg

CG (C for Graphics) ์—”๋น„๋””์•„๊ฐ€ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์™€ ํ˜‘๋ ฅํ•˜์—ฌ ๋งŒ๋“  ์–ธ์–ด.

๐Ÿซง HLSL

HLSL (High Level Shading Language) ๊ฐ€์žฅ ์œ ๋ช…ํ•˜๊ณ  ๋ณดํŽธ์ ์œผ๋กœ ๋„“๊ฒŒ ์“ฐ์ž„.

๐Ÿซง GLSL

GLSL (OpenGL Shading Language) OpenGL์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด.

๐Ÿ’ซ Unity


Unity๋Š” CG ์–ธ์–ด๋ฅผ ์‚ฌ์šฉ, URP๋ถ€ํ„ฐ๋Š” HLSL ์‚ฌ์šฉ. (์–ธ๋ฆฌ์–ผ๋„ HLSL).
Unity๋Š” ์ถ”๊ฐ€์ ์œผ๋กœ ShaderLab ์–ธ์–ด๋ฅผ ์ œ์ž‘ํ•˜๊ณ  ์ด๋ฅผ ์ง€์›.

๐Ÿซง Shader Lab

(๊ณ ์ • ํŒŒ์ดํ”„๋ผ์ธ ์‰์ด๋” : fixed function shader)

  • ๋งค์šฐ ๊ฐ€๋ณ๊ณ , ํ•˜๋“œ์›จ์–ด ํ˜ธํ™˜์„ฑ์ด ์ข‹์ง€๋งŒ, ๊ธฐ๋Šฅ์ด ์ƒ๋‹นํžˆ ๋ถ€์กฑ > ๊ณ ๊ธ‰ํšจ๊ณผ X
  • ์ž์ฒด ๋ฌธ๋ฒ• > ๋‹ค๋ฅธ ์‰์ด๋” ๋ฌธ๋ฒ•๊ณผ ๊ฑฐ์˜ ํ˜ธํ™˜ X + ๊ฑฐ์˜ ์ง€์› ์ค‘๋‹จ
  • ใ„ด โ˜† ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์— ๋งž๋Š” ์‰์ด๋”๋กœ ์ž๋™์œผ๋กœ ๋ถ„๊ธฐ๋˜์–ด ๋งŒ๋“ค์–ด์คŒ
  • ใ„ด ๋ชจ๋ฐ”์ผ, PC, ๊ธฐํƒ€ ์ฝ˜์†” ๊ธฐ๊ธฐ, ๋ผ์ดํŠธ ๋งต ์œ ๋ฌด, ์กฐ๋ช…์ด ํ”ฝ์…€ ๋ผ์ดํŒ…์ผ ๋•Œ, ๋ฒ„ํ…์Šค ๋ผ์ดํŒ…์ผ ๋•Œ ๋“ฑ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋งˆ๋‹ค ๋‹ค๋ฅธ ์‰์ด๋”๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜์ง€๋งŒ, ์„œํ”ผ์Šค ์‰์ด๋”๋Š” ์ด๋Ÿฐ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ์ œ์ž‘
  • ใ„ด ๋•Œ๋ฌธ์— ํŽธ๋ฆฌ > ๋ถˆํ•„์š”ํ•œ ์‰์ด๋” ์–‘์€ ๋Š˜์–ด๋‚จ > ์ตœ์ ํ™” X

ํ˜ธํ™˜์„ฑ์€ ๊ฐ€์žฅ ๋†’์ง€๋งŒ, ๊ทธ๋งŒํผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒŒ ์ œํ•œ์ 

๐Ÿซง Surface Shader

Shader Lab ์Šคํฌ๋ฆฝํŠธ + Cg ์‰์ด๋” ์ฝ”๋“œ.

(์„œํ”ผ์Šค ์‰์ด๋”)

  • ShaderLab ์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ๊ป˜ ์ผ๋ถ€๋ถ„์€ CG ์‰์ด๋” ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉ
  • ๊ธฐ๋ณธ์ ์ธ ์กฐ๋ช… ์ฝ”๋“œ์™€ ๋ฒ„ํ…์Šค ์‰์ด๋”์˜ ๋ณต์žกํ•œ ๋ถ€๋ถ„์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ
  • ํ”ฝ์…€ ์‰์ด๋” ๋ถ€๋ถ„๋งŒ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์Œ > ํŽธํ•จ
  • ๋น„์ฃผ์–ผ ์‰์ด๋” ์—๋””ํ„ฐ์™€๋„ ์ƒ๋‹นํžˆ ๋น„์Šทํ•œ ๊ฐœ๋… > ์‰ฝ๊ฒŒ ๊ณต๋ถ€ํ•˜๊ณ  ์‘์šฉํ•˜๊ธฐ์—๋„ ์ข‹์Œ
  • ๋‹จ, ์ตœ์ ํ™”์—๋Š” ๋‹ค์†Œ ๋ฌด๋ฆฌ, ์ผ์ • ์ˆ˜์ค€ ์ด์ƒ์˜ ๊ณ ๊ธ‰ ๊ธฐ๋ฒ• X

๊ฐ€์žฅ ์‰ฝ๊ณ  ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ์—์„œ ์ž˜ ๋Œ€์‘๋˜๋Š” ์…ฐ์ด๋”, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์šด ๊ฐœ๋…, ์•„ํ‹ฐ์ŠคํŠธ ๋ ˆ๋ฒจ์—์„œ ๋ฐฐ์šฐ๋Š”

  • ์ด๊ฑธ ๋ฐฐ์›Œ๋‘๋ฉด Vertax & Fragment Shader ๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ณ , ๋žœ๋” ๋ชฝํ‚ค๋กœ๋„ ๊ฐˆ ์ˆ˜ ์žˆ๊ณ , ๋…ธ๋“œ๋กœ๋„ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค

์Šคํƒ ๋‹ค์Šค ์„œํ”ผ์Šค ์‰์ด๋”๋Š” ์œ ๋‹ˆํ‹ฐ 5๋ถ€ํ„ฐ ๊ธฐ๋ณธ์œผ๋กœ ์ ์šฉ๋œ ์‰์ด๋” ํ˜•ํƒœ
ํ•˜์ง€๋งŒ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ˜ ์‰์ด๋” ๋ผ์ดํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋ฐ”์ผ๊ณผ ๊ฐ™์€ ์ €์‚ฌ์–‘ ๊ธฐ๊ธฐ์—์„œ ๊ตฌ๋™ํ•˜๊ธฐ์—๋Š” ๋‹ค์†Œ ๋ฌด๊ฑฐ์šด ๊ฒƒ์ด ์‚ฌ์‹ค

๐Ÿซง Vertax & Fragment Shader

  • ShaderLab ์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ๊ป˜ CG ์‰์ด๋” ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉ, ์ข€ ๋” ๋ณธ๊ฒฉ์ ์ธ ์‰์ด๋” ์ž‘์„ฑ ๋ฐฉ๋ฒ•
  • ์ž๋™์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ถ€๋ถ„์ด ๋ณ„๋กœ ์—†์–ด์„œ ์ œ๋Œ€๋กœ ๋œ CG ์‰์ด๋” ๋ฐฉ์‹์œผ๋กœ ๋ฒ„ํ…์Šค์˜ ์ขŒํ‘œ๋ณ€ํ™˜๋ถ€ํ„ฐ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ์ž‘๋™
  • ๋ฐฐ์šฐ๊ธฐ๋Š” ์กฐ๊ธˆ ์–ด๋ ต์ง€๋งŒ, ์™„์ „ํžˆ ์ˆ˜๋™์œผ๋กœ ์ œ์–ด ๊ฐ€๋Šฅ > ์ตœ์ ํ™” + ๊ณ ๊ธ‰ ๊ธฐ๋ฒ• O

Surface Shader์˜ ์ƒ์œ„ ๋ฒ„์ „, CG๋ฅผ ๋” ๋””ํ…Œ์ผํ•˜๊ฒŒ ๋‹ค๋ฃธ, Surface Shader๊ฐ€ ์˜คํ†  ๋ชจ๋“œ๋ผ๋ฉด. Vertax & Fragment Shader๋Š” ์ˆ˜๋™์ด๋ผ๋Š” ๋Š๋‚Œ.

๐Ÿ’ซ Memo


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