Skip to content

Latest commit

ย 

History

History
103 lines (58 loc) ยท 5.03 KB

File metadata and controls

103 lines (58 loc) ยท 5.03 KB

Abstract

๋ฌผ์ฒด๋ฅผ ๋ฐ˜ํˆฌ๋ช…ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๋ณด์ž.

Shader

Shader "UnityShaderTutorial/basic_translucent" {
    Properties { 
        _Color ("Main Color", COLOR) = (1,1,1,0.5) 
        _MainTex("Texture", 2D) = "white" {} 
    } 
    SubShader {
	Tags { "Queue" = "Transparent" }
        Pass {
            Blend SrcAlpha OneMinusSrcAlpha 
                                                                       
            SetTexture [_MainTex] {
                    constantColor[_Color] 
                    Combine texture, constant
            }
        } 
    } 
} 

Description

์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ฐ˜ํˆฌ๋ช…ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” Blend command๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒน์น˜๋Š” ์˜ค๋ธŒ์ ํŠธ์˜ ์ƒ‰์ƒ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•ด์•ผํ•  ์ง€ ๋ช…์‹œํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Blend๋Š” ๋น„ํ™œ์„ฑํ™” ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ํ˜„์žฌ ์˜ค๋ธŒ์ ํŠธ ๋’ค์— ์žˆ๋Š” ๋ชจ๋“  ์ƒ‰์ƒ์€ ๋ฎ์–ด์”Œ์›Œ์ ธ ๋ณด์ด์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.

๋ฌผ์ฒด์˜ RGB๊ฐ’์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์•ŒํŒŒ๊ฐ’๋งŒ์„ ์ˆ˜์ •ํ•˜์—ฌ ํ‘œํ˜„ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Blend command์˜ ์ธ์ž๋Š” Alpha ์ข…๋ฅ˜๊ฐ€ ๋œ๋‹ค.

์œ„์˜ ์ฝ”๋“œ์—์„œ Blend command์˜ ์ธ์ž๋Š” SrcFactor, DstFactor ๋‘ ๊ฐœ์ด๋ฉฐ, SrcFactor์—๋Š” ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ์˜ ์•ŒํŒŒ๊ฐ’์ด, DstFactor '1 - ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ์˜ ์•ŒํŒŒ๊ฐ’'์ด ๋“ค์–ด๊ฐ„๋‹ค.

SetTexture Block์—์„œ ์˜ค๋ธŒ์ ํŠธ์˜ ์•ŒํŒŒ๊ฐ’์„ ํ…์Šค์ณ์— ์ ์šฉํ•˜๋Š” ์ผ์„ ํ•œ๋‹ค. constantColor command๋Š” constant ์ƒ‰์ƒ์„ ์ •์˜ํ•˜๊ณ  combine command์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ค€๋‹ค. combine command์˜ ์ธ์ž ์˜๋ฏธ๋Š” 'texture์— constant์˜ ์•ŒํŒŒ๊ฐ’์„ ์ ์šฉํ•œ๋‹ค.' ์ด๋‹ค.

Combine texture * constant ๋˜ํ•œ ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€๋งŒ, constant์˜ RGB๊ฐ’์ด texture์— ์ ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์ด ์ฐจ์ด์ ์ด๋‹ค.

์œ„์˜ ์ฝ”๋“œ์—์„œ Tags command๋Š” ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ์˜ ๋ Œ๋”๋ง ์ˆœ์„œ๋ฅผ "Transparent"๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. ํ•ด๋‹น ํƒœ๊ทธ์˜ ๊ฐ’์€ Unity์—์„œ ์ง€์ •ํ•œ ๊ฐ’์ด๋ฉฐ, Tags command๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ๋ Œ๋”๋ง ์ˆœ์„œ๊ฐ€ ๊ฐ™์€ ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ ์œ„์— ๊ทธ๋ ค์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

Prerequisites

Unity ShaderLab SubShader Tags

SubShader๋Š” Tags๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, SubShader์˜ Tags๋Š” rendering engine์— ๋ Œ๋”๋งํ•  ๋ฐฉ๋ฒ•๊ณผ ์‹œ๊ธฐ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. Tags์˜ ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 Tags { "TagName1" = "Value1" "TagName2" = "Value2" }

๊ธฐ๋ณธ์ ์œผ๋กœ ํ‚ค-๊ฐ’ pair์ด๋ฉฐ, ๋ Œ๋”๋ง ์ˆœ์„œ์™€ SubShader์˜ ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํƒœ๊ทธ๋“ค์ด ์žˆ๋‹ค. ๋‚ด์žฅ ํƒœ๊ทธ ์ด์™ธ์— ์ž์‹ ์ด ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. Unity built-in ํƒœ๊ทธ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • Rendering Order - Queue tag

ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๊ทธ๋ ค์ง€๋Š” ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฏธ๋ฆฌ ์ •์˜๋œ render queue๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Background : ๋‹ค๋ฅธ ๊ฒƒ๋“ค๋ณด๋‹ค ๋จผ์ € ๋ Œ๋”๋งํ•œ๋‹ค. ๋ณดํ†ต ๋ฐฐ๊ฒฝ์— ์œ„์น˜ํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

Geometry(default) : ๋ถˆํˆฌ๋ช…ํ•œ ์˜ค๋ธŒ์ ํŠธ๋“ค, ๊ธฐ๋ณธ ๋ฌผ์ฒด๋“ค์ด ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

AlphaTest : ์•ŒํŒŒํ…Œ์ŠคํŠธ๋ฅผ ํ•œ ๋ถˆํˆฌ๋ช… ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค. solid ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๊ทธ๋ ค์ง„ ํ›„ alpha-tested ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค.

Transparent : ์œ ๋ฆฌ๋‚˜ ํŒŒํ‹ฐํด ์ดํŽ™ํŠธ ๊ฐ™์€ ๋ฐ˜ํˆฌ๋ช… ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

Overlay : ๋ Œ์ฆˆ ํ”Œ๋ ˆ์–ด์™€ ๊ฐ™์€ overlay ์ดํŽ™ํŠธ๋“ค์ด ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

๊ฐ๊ฐ์˜ queue๋“ค์€ ๋ชจ๋‘ ์ •์ˆ˜ํ˜• ์ธ๋ฑ์Šค๋กœ ํ‘œํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ํ‚ค์›Œ๋“œ์— ์ •์ˆ˜๋ฅผ ๋”ํ•ด ๋ Œ๋”๋ง ์ˆœ์„œ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค.

Unity render engine์€ "Geometry+500"๊นŒ์ง€๋ฅผ ๋ถˆํˆฌ๋ช… ์˜ค๋ธŒ์ ํŠธ๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ๋‚ด๋„๋ก ๊ทธ๋ฆฌ๊ธฐ ์ˆœ์„œ๋ฅผ ์ตœ์ ํ™”ํ•œ๋‹ค. ๋” ๋†’์€ queue๋Š” ํˆฌ๋ช… ์˜ค๋ธŒ์ ํŠธ๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ๊ฑฐ๋ฆฌ๋ณ„๋กœ ์ •๋ ฌํ•˜์—ฌ ๊ทธ๋ฆฐ๋‹ค.

  • Rendering Type tag

ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ Shader Replacement ๋˜๋Š” ์นด๋ฉ”๋ผ์˜ depth texture๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

  • DisableBatching tag

ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ๊ฐ€ Draw Call Batching์— ํฌํ•จ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๊ณ ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

"True", "False"(default), "LODFading"(LOD Fade๊ฐ€ ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ batching ์‚ฌ์šฉ ์•ˆ ํ•จ, ์ฃผ๋กœ ๋‚˜๋ฌด์—์„œ ์‚ฌ์šฉ)์„ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

  • ForceNoShadowCasting tag

ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๊ทธ๋ฆผ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

  • IgnoreProjector tag

ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ๊ฐ€ Projector์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์ฃผ๋กœ ๋ฐ˜ํˆฌ๋ช… ์˜ค๋ธŒ์ ํŠธ์— ์‚ฌ์šฉํ•œ๋‹ค.

  • CanUseSpriteAtlas tag

์•„ํ‹€๋ผ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ shader์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์ž์„ธํ•œ ๊ฒƒ์€ Sprite Packer ์ฐธ์กฐ.

  • PreviewType tag

์ธ์ŠคํŽ™ํ„ฐ์—์„œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ถ€๋ถ„์— material์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌ์ฒด๋กœ ํ‘œํ˜„๋˜์ง€๋งŒ, "Plane" ๋˜๋Š” "Skybox"๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.