Amplify Shader μμνκΈ°
νκ·Έ: Amplify Shader, Shader, Unity
μΉ΄ν κ³ λ¦¬: AmplifyShader
π Amplify Shader
βοΈ Shader λ?
κ²μμ νλ€λ³΄λ©΄ λ¬Ό, μ 리, ꡬλ¦, μ΄ννΈ λ± λ¨μν νννκΈ° νλ κ²λ€μ΄ μ‘΄μ¬νλ€.
Unity μμ Material μ 건λ λ€κ³ λ§λ€ μ μλ κ²λ€μ΄ μλ
μ’ λ νμ€κ°μκ² κ΅¬ννκΈ° μν΄μλ Shader κ° κΌ νμνλ€.
Unity μμλ Shader Graph λΌλ Pakage λ₯Ό μ 곡νλ€.
μ€λͺ μ 보면 HDRP νΉμ URP λ§ μ 곡μ νλ€κ³ μ νμλ€.
Buit-In μμλ μμ΄λ κ·Έλνλ₯Ό λ€λ£° μ μλ€.
νμ§λ§ Amplify Shader Asset μ ꡬ맀νλ©΄ κ°λ₯νλ€. (νμ°μ²λΌ μ¬λ²λ¦Ό)
κ·Έλνκ° μλ μ€ν¬λ¦½νΈλ‘ μμ ν μ μμ§λ§ κ·Έλνκ° λ μ¬λ°μ΄λ³΄μΈλ€. :)
π λ©λͺ¨
World Position μ μ€μ¬ = μΈκ³ μ€μ¬ (μμ )
Vertex Position μ μ€μ¬ = ν΄λΉ λ©μμ νΌλ² μμΉ
μ°¨μ΄λ₯Ό λλ μ μκ² (1, 0, 0) μ Sphere λ₯Ό λ°°μΉνλ€.
π World Position
π Shader Graph
π» Execute
(1, 0, 0) μ μμΉν¨μλ (0, 0, 0) μ κΈ°μ€μΌλ‘ νλμ λ°λ³΅νλ€.
π Vertex Position
π Shader Graph
π» Execute
μκΈ° μμ μ κΈ°μ€ (1, 0, 0) μ κΈ°μ€μΌλ‘ νλμ λ°λ³΅νλ€.
π Shader Graph μ€λͺ
λ κ·Έλν λͺ¨λ Time λ Έλμμ μκ°λ§λ€ Sin κ·Έλν (-1.0 ~ 1.0) μ κ°μ λ°λ³΅μ μΌλ‘ λ°ννλ€.
μ΄μ κ° ν¬μ§μ μ Multiply (κ³±μ ) νμ¬ νλνλ€.
-1.0 ~ 1.0 μ λ°ννλκ±°λ©΄ Scale μ΄ -1 λ‘ λ€μ§νμ λ°λλ‘ κ·Έλ €μ ΈμΌ νλκ±° μλκ°?
λΌκ³ μκ°ν μ μλλ° κ·Έκ² λ§λ€.
νμ§λ§ νμ¬ μ°κ²°λ κ³³μ Local Vertex Offset μΌλ‘ λ§ κ·Έλλ‘ Offset μ΄λ€.
νμ¬ λ©μ¬ κΈ°μ€μΌλ‘ -1 λ§νΌ μμμ‘λ€ 1 λ§νΌ 컀μ§κ² λλ―λ‘
νμ¬ λ©μ¬κ° 1 μ΄λΌλ©΄ 0 μμ 2 λ‘ μ¬λΌμ‘λ€ μ»€μ§κΈ°λ₯Ό λ°λ³΅νλ κ²μ΄ λ§λ€.
Offset μ μκ°νκ³ λ Έλλ₯Ό ꡬμ±νκ² λλ©΄ λ€μκ³Ό κ°λ€.
π Shader Graph (Offset κ³ λ €/World Position)
Vertex Position μ μκΈ° μμΉμμ Scale -1 ~ 1 μ λ°λ³΅νκΈ°μ λμΌλ‘ 보μλ ν°κ° μλλ€.
κ·Έλμ World Position μΌλ‘ ν΄λ³΄μλ€.
π Shader Graph
π» Execute
π λλμ
λ Έλμ λν μ€λͺ λ§ λ³΄λ μ ν μ΄ν΄κ° λμ§ μμλ€. γ γ
μ¬λ¬κ°μ§ ν¨κ³Όλ€μ λ§λ€μ΄λ³΄λ©° 곡λΆνλ κ²μ΄ μ’μ κ² κ°λ€!
λκΈλ¨κΈ°κΈ°