็ถใใงใใใใขใใกใผใทใงใณใใฎ่ฉฑใใใพใใ
็ฎ็
ไปๅใฎใขใใกใผใทใงใณใฏๅ จไฝ็ใซใๆฒใฎๅ ท็พๅใใจใใฆไฝใฃใฆใใพใใใชใฎใง้ณใซๅใใใๅใใใใใใจใๅบๆฌใ
ใ้ณใซๅใใใใใจใใใฎใฏใใกใใใฟใคใใณใฐใ ใใงใฏใชใใใชใชใผในใฎ้ทใใ้ฐๅฒๆฐใๅ จไฝไธญใฎ้่ฆๅบฆใ็ทฉๆฅใใใฎไปใ้ณใซ้ขใใใใญใใใฃใใชใใงใใใงใใ
ใพใใใใใฏใๆณขๅฝขใจใใฆใฎ้ณใใซ้ใใใใชใบใ ใจใใฆใฎ้ณใใๅซใฟใพใใใใใฏๅณใก็ก้ณใงใใฃใฆใ้ณใซๅใใใใใจใใใใจใใใใจใงใใ
ไปๅใฎๆฒใฏใใกใใใกใใๆฅฝใใใใ้ใณ็ฒๆใใใใใใทในใใใใใฏใชๆงๆใใใฆใใใใฎใง้ณๅใใใใใใใใๆฅฝใใใฃใใงใใ
ๅบ็ค
ๅใใไฝใใซใใใๅคงไบใชใใจใฏใ็งใฏใใๅพฎๅใใ ใจๆใใพใใๅณใกใๆ้ใใใใฎๅคๅ้ใใฎใใจใงใใ
ไพใใฐใ็ฌ้ใใ่กจ็พใใใจใใๆๅญ้ใไธ็ฌใงๅบใใใจใใใใจใใพใ่ใใใใพใใ
ใใใใ็ฅ่ฆ็ใซใฏใใใใพใง็กใใฃใ็ถๆ ใใใๅบใฆใใใใจใใๅคๅใๅฎๅจใใฆใใพใใใใจใ่ฆใใชใใฆใใ
ใใใ่กจ็พใใใใจใซใใฃใฆใใๅบ็พใใจใใ็ฅ่ฆใ่ฃๅผทใใใใจใใงใใพใใ ใใใ่ชๅผตใงใใ
ใใใซใฏใๅบ็พใ็ตใใฃใใใจใใ็ฅ่ฆใใใใพใใใใใไพใใฐใๅบ็พๆใฎๅคๅ้ใๅผทใใ็ตใใฃใใจใใซ้ๅใใฎๅคๅ้ใไธใใใใใจใง่กจ็พใใใใจใใงใใพใใ
ๆๅใซๆฏในใฆใๆๅณใใไนใฃใฆใใใฎใใใใใใใพใใญใ
ใพใใใชใบใ ใใใใชใฉๆชๆฅไบ็ฅใใงใใๅ ดๅใซใฏใใใใใๅบใใใจใใ็ฅ่ฆใใพใ็บ็ใใฆใใใฏใใงใใ้ณใง่จใใจใใใฎใชใใผในใทใณใใซใฎๅฝนๅฒใ ใจๆใใ
ใคใพใใฏใ็ฌ้ใใจใฏ่จใใฉใใฎๅๅพใใพใ่กจ็พใใ่ฆ็ด ใจใชใใใใใใงใใ
ใใใฆใ็ฌ้ใใซ่ฟใใใฐ่ฟใใปใฉๅคๅ้ใฏๅคงใใใใในใใซ่ฆใใพใใใใฎๅนๆใฏ่ฆใฆใฎ้ใใๆฅๆฟใชๅคๅใซใใฃใฆ็ฌ้ใ่ฟไผผใใฆใใใใจ็งใฏๆใใฆใใพใใ
ใชใไธใซๆใใใฎใฏใ็ฉไฝใฎๅคงใใใๅคใใฆ็ฌ้ใ่กจ็พใใไพใใงใใใใไปใซใใใใใงใใใใพใใๅคงไบใชใฎใฏใ็ฌ้ใฎๅๅพใ่กจ็พๅฏพ่ฑกใงใใใใจใใ็นใ
ใใฆใใใใชใจใใใงใพใๆ นๆฌ็ใซใ็ฉใฎๅใใใซใคใใฆ่ใใใใจๆใใพใใใใพใๆใๅคงไบใชใฎใฏใณใฌใงใใใใ
้ๅใฎ็ฌฌ1ๆณๅ (ๆ ฃๆงใฎๆณๅ)
ใๅ จใฆใฎ็ฉไฝใฏใๅค้จใใๅใๅ ใใใใชใ้ใใ็ญ้็ด็ท้ๅใ็ถใใใใ
ใคใพใใๆใ่ช็ถใชๅใใใจใใใฎใฏใใพใฃใใๅใ้ๅบฆใงๅใ็ถใใใใจใใจใใใใจใงใใ
้ใซ่จใใฐไปใฏๅ จใฆไฝใใใฎใๅค้จใใใฎๅใใๅใใฆใใใใใใงใใไพใใฐๆฉๆฆๅใ้ๅใๅ็ดๆๅใๅผพๆงๅใๆตฎๅใ
ใๅๅญฆ็ๆณๅใซๅพใๅฟ ่ฆใฏใชใใฎใงใฏใใจๆใๆฐๆใกใใใใใจๆใใพใใใ็พๅฎ็ใซไบบ้ใฎ็ฎใฏใๅๅญฆ็ๆณๅใซๅพใฃใฆใใใใใซ่ฆใใใใใใซๅบๆฅใฆใใใๆฐใใใพใใใใใฏใ็ญ้็ด็ท้ๅใใใชใๅ ดๅใใใใซๅใๅ ใใฃใฆใใใใใซๆใใใใจใใๆๅณใงใใ
ใพใใๅคงใใใฎๅคๅใใฟใใใชใ็พๅฎใงใฏใใใใชใๅใใใซใชใใจใใใใ่ช่ญใ็ตๆง่ใใฆใใใงใใใฉใ
ใงใ
ไพใใฐ้ๅใๅฐ็ไธใงๆพใๆใใ็ฉไฝใฏ้ๅใซใใฃใฆใใใใๆพ็ฉ็ท ("็ฉ"ใ"ๆพ"ใฃใใจใใฎ"็ท") ใๆใใใจใ็ฅใใใฆใใพใใ
ใชใฎใงใ้ๅใซๅพใใขใใกใผใทใงใณใไฝใใใใใฐใๆพ็ฉ็ทใๆใใใใชๅใใไฝใใฐ่ฏใใใจใใใใจใซใชใใพใใใทในใใใใใฏใงใใญใ
็ฉ็็พ่ฑกใซๅพใใใใชใขใใกใผใทใงใณใฏใ็ฉ็็พ่ฑกใ่จ่ฟฐใใใฐใใฎใพใพใๆญฃใใๅใใใๅพใใใพใใใใฎ่ใๆนใฏ Physically-Based Rendering ใซไผผใฆใพใใญใ
ใใ ใใใใงๆณจๆใในใ็นใจใใฆใ(ๅฐ็ไธใฎ) ๅ จใฆใฎ็ฉไฝใซใฏใใฉใใช่ณช้ใงใใใใจๅใ้ๅๅ ้ๅบฆใๆใใใใจใใๅคงไบใชๅ็ใใใใพใใใคใพใ้ใใฎ่กจ็พใฏใ้ๅใงใฏๅบๆฅใชใใจใใใใจใงใใ
ๅฏพ็ ง็ใซ้ใใ้ขใใฃใฆใใใฎใฏใ็ฉไฝใจใฎ่ก็ชใใงใใ่ณช้ใฏใ้ๅใใฉใใใใ็ถญๆใใใใใฎใใฉใกใผใฟใชใฎใงใ่ปฝใใใฎใงใใใฐใ็ถญๆๅบๆฅใใซๅ็บใใใใใใ็จๅบฆใฎ้ใใชใใใจใใซใฎใผใๅคฑใฃใฆๅๆญขใใ้็ใ่ถ ใใใฐใ่ก็ชๅฏพ่ฑกใ็ ดๅฃใใใใใใซใชใใพใใ
ใคใใงใซ่จใใฐ่ก็ชใซใฏๅคๅฝขใใคใใฆใใใใฎใง (ไพใใฐ้็ใใผใซใจใใฏๆๆใฎ็ฌ้ใใกใใใกใๆญชใใงใใใใใงใใญ)ใใใใๅ ฅใใใจ็ตๆงใๅ็บๆใใๅบใพใใๆๅใไธใใใซใฏๆ้ใๅฟ ่ฆใชใฎใงใใญ (Amebientใฎใจใใซใใกใใฃใจๆธใใพใใ)ใ
ใพใใใใช่ฉฑใใใใจใใใง็งใฎไฝใฃใใขใใกใผใทใงใณใฎ9ๅฒ9ๅใฏ็ฉ็็พ่ฑกใซๅพใฃใฆใใชใใใงใใใใจใฏ่จใใใฏใๅบๆฌใฏ็ฅใฃใฆใใในใใง (ใใใใฏใใใฏใใใฏใใใใชใใงใใใใญ๏ผ)ใใใใใ้ธ่ฑใใใฎใใพใๆฅฝใใใ ใจๆใฃใฆใใพใใ
easing
ใชใใง easing ใจๅผใฐใใใใใซใชใฃใฆใใฎใใฏ็งใฏใใใใชใใใงใใใใพใใชใใใๅใใ่กจใ้ขๆฐใใฟใใใชใใฎใ ใจๆใใพใใ
่ฟฝ่จ: ใใใฏๆฅใชๅคๅใใใใใใใใซ็นใใจใใๆๅณใฃใฝใใจใใใใจใใใใใพใใใใใใใซ
ใงใไธใฎไธญใซใฏใใใใใฎ easing ้ขๆฐใใใใฟใใใชใใงใใใ็งใฏใใใใฏใปใผใใคใบๆ ๅ ฑใ ใจๆใฃใฆใใพใ (ๆใฏใใใใไฝฟใฃใฆใใใฉ)ใไปๅใฎใขใใกใผใทใงใณใงใฏๅบๆฌ็ใซ ใใไฝฟใฃใฆใพใใใ
ใใฎ่ฉฑใฏไธๆฆใใใจใใฆใ
easing ใซใฏใinใใoutใใin-outใใฎ3็จฎ้กใใใใพใใใin-out ใฏ in ใจ out ใใใฃใคใใใฐใใใฎใง่ฆใใพใใ (ๅฎ้ๅ้กใๅ ฅใใใจใๅบใใๅใๅใ (= ๅใๆๅณๅใใปๅใ้่ฆๅบฆ) ใงใใใใจใฃใฆ็กใใชใใงใใ๏ผ)ใ
ใถใฃใกใใ out ใ in ใใฒใฃใใใใใใใ ใใงใใใใพใๆ้็ๅ ๆ้ขไฟใจใใฆใฏใใฎ2ใคใฎ้ใใฏ้่ฆใงใใ
ใใใใใใๆขใซ่ชฌๆใใฆใใพใใใinใใฏ็ฌ้ใซ็นใใใไบๅใฎใใใฎๅใใใงใใoutใใฏ็ฌ้ใใ็นใใใๅฟ็ญใ็คบใๅใใใฎใใจใงใใ
ไฝๅบฆใ่จใใพใใๅคงไบใชใฎ (= ๅใใฎไธญใง็ฅ่ฆใซไธใใๅฝฑ้ฟ้ใๅคใใใฎ) ใฏใๅคๅ้ใๅคงใใใฟใคใใณใฐใใงใใ็งใฏ in/out ใฎๅบๅฅใใใคใใใใใชใใชใใฎใงๆ่ฟ e1/e0 ใฃใฆๅผใใงใพใ (1 (ใใใ) ใฎใฟใคใใณใฐใ้่ฆใใ0 (ใฏใใพใ) ใฎใฟใคใใณใฐใ้่ฆใ)ใ
ไพใใฐ UI ใงใใฟใณใๆผใใใจใใฎๅๅฟใฏใๅณๅบงใซใฆใผใถใซๅฟ็ญใ่ฟใในใใe0 ใไฝฟใใพใใ้ใซใทในใใ ใใ่ฟไบใใใใจใใฏใe1 ใไฝฟใใใจใงไบๅใ่กใฃใฆใ้ฉใใใใใใใใใจใใงใใพใใ
ใใฆใใจใใใงใฉใใชๅใใ่ช็ถใซ่ฆใใ (= ๅคๅใใฏใฃใใใจๆใใใใชใ) ใฎใงใใใใ๏ผ
ไพใใฐใๆฅใซๅใใใชใใชใใใฎใฏใชใใ ใไธ่ช็ถใงใใใใฃใใใจ้ๅบฆใ 0 ใซใชใฃใฆใปใใใงใใ้ใซใๆฅใซ้ๅบฆใๅบใใใฎใฏใพใ้้ใใชใๅคๅใ็บ็ใใใใงใใใใใใใ่ชไฝใฏๅ้กใใใพใใใ
ใใ ใใใจใใ้ๅบฆใใ ใใ ใ 0 ใซใชใฃใใใจใใฆใใๆฌกใฎๅใใซใฏใไฝใใใๆใใพใใใ๏ผ
ใคใพใใใดใฃใใใจๆญขใพใใใใฆใใใๆใใ
ใใฎๆ่ฆใฎๆญฃไฝใฏๅ ้ๅบฆใฎไธ้ฃ็ถๆงใงใใใฐใฉใใซใใใจใใใใ
ใฑใใฃใจใใกใใฃใฆใพใใใๅ ้ๅบฆๅคๅใไธ้ฃ็ถใใจใใใใจใฏๆญฃใใใใใใงใดใฃใใๅใๅ ใใใฎใใใใใใจใใใใจ ( ใชใฎใง)ใใใใใใใฃใฆ่ช็ถใชใใจใงใใใใ๏ผ
ไฝใใใฆใชใใชใใใใใชไธ้ฃ็ถใชๅคๅใ (ๆฝๅจ็ใซ) ่ตทใใฆใใใฏใใใใใพใใใ
ใคใพใ้ๅบฆใใ ใใ ใ 0 ใซใชใใ ใใงใชใใๅ ้ๅบฆใใ ใใ ใ 0 ใซใชใฃใฆใปใใใฎใงใใ
ใใใฆๅๆงใซๅ ้ๅบฆใฎๅคๅ (่บๅบฆ) ใใงใใ้ใใ ใใ ใ 0 ใซใชใฃใฆใปใใใงใใใใใฆโฆ
ไปฅไธใฎ่ฉฑใใใใ่ช็ถใชๅใใใจใใใฎใฏใ็ก้ๅๅพฎๅๅฏ่ฝใใงใใใใจใๆใซ่ฆๆฑใใฆใใใฎใงใฏใชใใ๏ผใจ่จใใพใใไพใใฐ็ญ้็ด็ท้ๅใไพใใฐๆพ็ฉ็ทใไพใใฐ ใ ใใใใฆ ใงใใ
ใใใ็ก้ๅๅพฎๅๅฏ่ฝใงใใใใจใ่ฆๆฑใใใจใใใใจใฏใใใคใฉใผๅฑ้ใ่ใใใจใใใ็ฌ้ใฎๅใใใใ้ๅปใปๅฐๆฅใฎๅใใไบๆธฌใงใใใใจใใใใจใๆๅณใใพใ*1ใใใใฏใขใใกใผใทใงใณใฎๅฝนๅฒ็ใซใฏ่ฏใใใจใ ใจ่จใใพใใใไพใใฐใๅใใๅฎๅ จใซใชใใชใฃใ็ถๆ (= ๅฎๆฐ้ขๆฐ) ใซใชใใใจใใใใจใฏ้ๅปใซใๅใใ็กใใฃใใฏใใจใใใใจใซใชใใพใ (ใ ใใ ใๅๆญขใใใ่ช็ถใใชใขใใกใผใทใงใณใฏๅญๅจใใชใ๏ผ)ใใใใงใฏใๅๆญขใใใขใใกใผใทใงใณใใไฝใใพใใใ
ใจใใใใใงใฉใใใฆใใใใซๅฆฅๅใฏๅฟ ่ฆใงใใ็งใฏ่ซฆใใฆ ใ้ฉๅฝใชใจใใใงๅๆญใใใใใซใใฆใฆใๅๆญขใใฆใใใใซ่ฆใใฆ้ๅบฆใใ 0 ใใใชใใฃใใใใพใใใงใใพใใใปใผ 0 ใชใฎใง่ฆใใไธๅคงไธๅคซใงใใ
ไพใใฐ ใฎใจใใซ ใชใฎใใ็ก็ใใ ใ ใฃใใใจใซใใใใจใง ใใ ใธใฎ้ขๆฐใซใใฆใใพใใๅ ฅๅใจๅบๅใซๆใ็ฎใจ่ถณใ็ฎใใใใ ใใ
ใจใใใใใงใใใช้ขๆฐใไฝฟใฃใฆใพใใ
float e0(float t, float k) { float x = exp(-saturate(t)*k); float s0 = 1; float s1 = exp(-k); return (x - s0) / (s1 - s0); } float e1(float t, float k) { return 1 - e0(1 - t, k); }
ใใ็งใฎใขใใกใผใทใงใณใฎใฝใผในใณใผใใฎ่ณใใจใใใซใใใใใใพใใ ใงๅใใฎ้ญใใๅคใใใใไธใ ใๅฎๆฐๅใป ใใใฎ้ๆฐๅใใใใจใงๆๅคงๅคๅ้ใ็ถญๆใใใพใพใ็ด ๆฉใ็ตใใใขใใกใผใทใงใณใใใคใใใใจใใงใใพใใไพฟๅฉใ
ใปใจใใฉใใใใฎ็ตใฟๅใใใงๅบๆฅใฆใใพใใใใใพใซๆฌฒใใใชใใใฎใจใใฆใใกใใฃใจ่กใฃใฆๆปใใใคใใใใใพใใ
float eb(float t, float b) { t = 1 - t; return 1 - t*t*(b*t - b + 1); }
ใใฎ้ขๆฐใฏ ใใใฆ ใจใใๆกไปถใฎ่งฃใจใใฆไฝใฃใไธๆฌก้ขๆฐใงใใout ็ใชๅใใใใใใ ใใฉใใกใใฃใจ่กใ้ใใใฎใงใใ
ใใใ e0 ใฎ็ตๆใซใคใชใๅใใใฆใใใ (้ขๆฐๅๆใใ) ใใจใงใใตใใฃใจใฒใใใฃใฆใใกใใฃใจๆปใใๅใใไฝใฃใฆใใพใใ
ใใใ ใใงๅ จใฆใฎใขใใกใผใทใงใณใ่ณใใใใจใใใจใใกใใใใใงใฏใชใใใงใใใใ็ฌ้ใฎๅใใใฎๆฎใฉใฏใใใงๅๅใ ใจๆใใพใใๆ็ถ็ใชๅใ (ใตใใตใๅใใฆใใใฎใจใ) ใฏ็งใฏในใใฉใคใณๆธใใใใใฆใพใ (CUEใฎใจใใซใใฃใ)ใ
ใชใใงไธใฎไธญใฎใขใผใทใงใณใฐใฉใใฃใใฏในใใฟใใชๆใงใซใผใๆธใใฆไฝใใใฆใใใฎใใฏใใใใใใชใใใงใใ (ใใใใใงใใ)ใใขใฌใฏใไบบใไธๅฏงใซๅใใๆใใใใจใง็ใพใใๆญชใฟใใๆฅฝใใใงใใใใงใใใใ๏ผใพใๅฎ้ใใใใใจใใใฏๅคๅใใใจๆใใใงใใใฉ (็ใใใฎใพใพใใฏใปใซใชใๆใใใซใชใฃใฆใใ)ใ
็งใฎไฝใฃใฆใๅใใๆใใใซ็งใฎ็ใๅบใฆใใฎใงไบบใฎใใจใฏ่จใใชใใงใใใฉใญใใใ ็งใฎ็ใฏใๆญชใฟใใงใฏใชใใจๆใใ
ใซใผใใจใใฃใฟใซใฏ2้ๅพฎๅใพใงใ่กจ็คบใใๆฉ่ฝใปใใใงใใใญใ
ใพใๆไฝๆฅญใขใผใทใงใณ (็งใๅซใ) ใฏใฒใผใ ใใใชใ (interactiveใซๅใใๅคๅใใชใ) ใใๅบๆฅใใจใใใใใพใใใญโฆใใใใฏใ่ฏใใใจใใงใใใฉใ
ๅฎ่ฃ
ไปๅใฎใขใใกใผใทใงใณใฏใๅ่ฟฐใใใใใซๅ จใฆใใณใผใใงๆธใใใฆใใพใใ็ฉไฝใฎไฝ็ฝฎใปๅ่ปขใป่ฒใปๅคๅฝขใชใฉๅ จใฆใงใใ
— phi16 (@phi16_) January 3, 2023
ใใใชๆใใ
ใใฎๆนๆณใฎใกใชใใใปใใกใชใใใซใคใใฆไธๅฟ่จใใฆใใใพใใ
- ใกใชใใ
- ๅคๆฐใฎ็ฉไฝใซๅฏพใใๅใใไธๆฐใซ่จ่ฟฐใงใใ
- ใใฎใใกใใใคใใ ใ้ใๅใใใฟใใใชใใจใใงใใ
- ใทใณใใซใช้ขๆฐใซๅพใ็ฉ็็พ่ฑกใฎ่จ่ฟฐใๅฏ่ฝ
- ใฉใณใใ ใๆฐ่ปฝใซไฝฟใใใใพใใชใใงใ
- ๅใใฎใขใธใฅใผใซๅใปไฝฟใๅใใๅฏ่ฝ
- ๅใใๆใใใ่ถณใใใใใฆ็ตใฟๅใใใใใจใใงใใ
- ๅพฎๅใ่ชๅใง่จ็ฎใใใใจใง้ๅบฆใฎๅคใใขใผใทใงใณใซไฝฟใใ
- ้็ ดๅฃ็ทจ้ (ใใผใธใงใณ็ฎก็ใ็ฐกๅ)
- ไฝใๆๅณใใๅใใชใฎใใ่ชญใใใใจใใงใใ (่จ่ชใงๆธใใฆใใใฎใง)
- ๅคๆฐใฎ็ฉไฝใซๅฏพใใๅใใไธๆฐใซ่จ่ฟฐใงใใ
- ใใกใชใใ
- ่ชฐใงใๆธใใใใใงใฏใชใ
- ใงใใขใใกใผใทใงใณใซใผใใๅคงไฝใฎไบบๆใใชใใชใใงใใ๏ผ (ๅคงไฝใใซใใฃใฆใชใใ ใใใ)
- ไฝ็ฝฎใๆๅฎใใใจใใซๆฐๅคใๆธใใชใใใใใชใใฎใงใกใใฃใจ็ด่ฆณ็ใงใฏใชใ
- ใจใฏ่จใใขใใกใผใทใงใณใซใผใใๅฅใซใๅฎ้ใฎไฝ็ฝฎใใๆๅฎใใฆใใใใงใฏใชใใโฆ
- ใใใๅใใใใซใใใพใงใฎไป็ตใฟไฝใใ้ขๅ
- ่ชฐใงใๆธใใใใใงใฏใชใ
ใใผใใใใจใใจใกใชใใใจใใกใชใใใ1ๅฏพ1ๅฏพๅฟใใใใใซๆธใใใใคใใใใใฃใใใงใใใณใฌใซ้ขใใฆใฏๅงๅ็้ใใฆใใใชใใใใชใใงใใญโฆใ
ใใใชใฃใฆใใๅ จใฆใฎๅๅ ใฏใใใญใฐใฉใ ่จ่ฟฐใใใใขใใกใผใทใงใณใซใผใ็ทจ้ใใผใซใฎใปใใไธๆนใฎใฌใคใคใผใซใใ็บใๅฝ็ถใใญใฐใฉใ ่จ่ฟฐใฎใปใใ็ดฐใใใใจใใงใใใใจใใ็นใงใใใพใใใใใพใใชใฎใใ
ใจใฏ่จใ็พๅฎ็ใชๅ้กใฎ9ๅฒใฏ Unity ใฎ Animation ็ทจ้ๆฉ่ฝใ้้ญใชใใจใซ่ตทๅ ใใใฎใงใใใฏใพใโฆใ
ๆญฃ็ดๅพฎๅใ่ชๅใง่จ็ฎใใใฎใใใชใซๆฅฝใงใฏใชใ (็นใซ Quaternion ใจใๅบใฆใใใจ) ใฎใง่ชๅ็ใซใใกใใฃใฆใใฃใฆใปใใใใงใใใฉใญใ็ก็ใใชใพใใ
่ฉฑใๆปใใฆใใพใไปๅใฎๅฎ่ฃ ใฏใใใชไป็ตใฟใซใชใฃใฆใใพใ:
- Timeline ใงๆ้ใๅธใ Material ใฎใใฉใกใผใฟใๅคๅใใใ
- ใใฎ Material ใ่ฒผใฃใ Quad ใใซใกใฉใงๆฎใฃใฆ RenderTexture ใซไฟๅญ
- ๅใจใใงใฏใใใใฎ RenderTexture ใๅ็ งใใซ่กใฃใฆ็พๅจๆๅปใๅๅพ
- ๆๅปใใใฉใกใผใฟใจใใฆใจใใงใฏใใ่จ่ฟฐ
ใใใใใฎ Timeline ใงๆไฝใใฆใใ Animation ใงใใ
- ๆใใฎ่ตคใใใคใใ็พๅจใฎๅฐ็ฏๆฐใ(ๆดๆฐๅค) ใงใใ
- 0 ไป่ฟใฎ้ใจ็ทใฎใฎใถใฎใถ (ไธ่งๆณข) ใใใๅฐ็ฏ้ๅงใใใฎๆ้ใใ่กจ็พใใฆใใพใใ
- ใขใใกใผใทใงใณใง้ขๆฃ็ใชๅใใใใใจ่ฏใใชใ (ๆญฃ็ขบใชๅคใๅใใไฟ่จผใใชใ) ใฎใงใ2ใคใฎไธ่งๆณขใใไฝ็ธใ่จ็ฎใใใใใซใใฆใใพใใ
- CUE ใฎใจใใซใใใฃใใ
- (ใพใไปๅใฏ 5 ๅใ ใใชใฎใงใทใณใใซใซไธๆฌใฎ็ด็ทใซใใฆใใใใพใง็ฒพๅบฆใฎๅ้กใฏใชใใฃใใใใใใชใ)
- CUE ใฎใจใใซใใใฃใใ
- ใขใใกใผใทใงใณใง้ขๆฃ็ใชๅใใใใใจ่ฏใใชใ (ๆญฃ็ขบใชๅคใๅใใไฟ่จผใใชใ) ใฎใงใ2ใคใฎไธ่งๆณขใใไฝ็ธใ่จ็ฎใใใใใซใใฆใใพใใ
ๅใจใใงใฏใใๆ้ใๅใๅบใ้จๅใฏใใใชๆใใ
sampler2D _TimeTexture; float4 env; void loadEnv() { env = tex2Dlod(_TimeTexture, float4(0.5, 0.5, 0, 0)); } float localTime(int si, float sl) { float2 bt = env.xy; int i = bt.x - si; float l = bt.y - sl; return i * 4 + l; }
ๅ vertex shader / fragment shader ใฎๅ
้ ญใง loadEnv()
ใๅผใณๅบใใใใซใใฆใใฆใใใใใใจไปฅ้ๅฅฝใใชใจใใใงใๅฅฝใใชใฟใคใใณใฐใๅบๆบใซใใๆๆ้ localTime
ใใๅพใใใพใใ
ใใใพใงใใใฐใใจใฏใใใ ใใงใใ
ๅ จใฆใฎใขใใกใผใทใงใณใ่งฃ่ชฌใใฆใใใจ็ก้ใซ็ตใใใชใใฎใงใๅฅฝใใชใจใใใใใใคใ็ดนไปใใฆใใใใใชใจๆใใพใใ
้ๅง็ดๅ
ใใใฎๅฝนๅฒใฏ2ใคใใใพใใ
- ๆฒใๅงใพใไธๅบฆไธๆๅใซๅใใใใใใจใงใใ้ๅง็ดๅใงใใใใจใใจใไธๆใฎ้้ใใฎๆ ๅ ฑใไผใใใ
- ๅพ ๆฉใจใใงใฏใใจใกใคใณใจใใงใฏใใฎ้ใ็นใใ
ใใใฏใพใ ้ณใ้ณดใฃใฆใชใใใงใใใใใใงใไธๅบฆใใฐใฃใใฃใฆๅคงใใใชใใพใใๆฅใชๅใใงใฏใใใพใใใๅฎๅ จใซ่ช่ญใใๅฟ ่ฆใฏใชใใๆฌกใ่ช่ญใใ็บใฎไบๅๅไฝใใซใชใฃใฆใใพใใใชใฎใงใใ ๅคงใใใๅคใใ็จๅบฆใงใใ
ใกใคใณใขใผใทใงใณใฎ้ๅงใฏใกใใใจ่ฆใฆใปใใใฃใใฎใงใใใฎๅใซ็ฐก็ด ใชๅใใๅ ฅใใใใจใงๆณจ่ฆใใใใจใใ่ฉฑใงใใญใใใใพใง็ป้ขใซๅใใใชใใฎใง่ฆ็นใๆบใใใงใใใใจใ ใจๆใใฎใงใ
ใใใฆใๅงใพใใ่ฟใฅใใซใคใไธใซๅ ้ใใฆใใใ้ๅงใพใงใฎไบๆธฌใๆ็คบใใพใใใงใใกใคใณใจใใงใฏใใซๆปใใใซๅใๆฟใใใพใ (ๅ ้จ็ใซใๅ จใ้ใ 2 ใคใฎใชใใธใงใฏใใงใ)ใ
่ฆใใ็ใซใฏ็นใใใฎใชใ 2 ใคใฎใจใใงใฏใใงใใใใๅใๆนๅใซๅใใใใใฎ้ๅบฆใงๅใใฆใใใใจใใ่ฆ็ด ใ ใใง้ข้ฃๆงใไฝใฃใฆใพใใ็ด ๆฉใๅใใ ใจใใใใใใจใใงใใใฎใ้ข็ฝใใงใใญใ
ใใจใใจใกใคใณใจใใงใฏใใฏๆๅใซไฝใฃใฆใๅถไฝ็ต็คใซใชใฃใฆใใใซใฉใ็นใใใใใช๏ฝใจๆใฃใฆใใใงใใ่ฉฆใใซๅ ฅใใฆใฟใใใดใฃใใใ ใฃใใฎใงใใใฃใใใจใใๆใใงใใใ
ๅฎ่ฃ ใงใใ
if (lt > 47) { s += (1 - e0(map(47, 47.5, lt), 4)) * 0.2 + 0.2; // size p.y += e1(map(47.5, 47.75, lt), 6) * 0.5; // position c = 1.1; // color }
ใกใชใฟใซ map
ใฏใณใฌใงใ (map(a,b,a) = 0, map(a,b,b) = 1
ใซใชใใใใช็ทๅฝขๅคๆ)ใ
float map(float a, float b, float x) { return saturate((x-a) / (b-a)); }
้ๅงๆใ 48 ใฎใฟใคใใณใฐใชใฎใงใใฎไธๆๅใใ้ๅงใใพใใใพใไธ็ฌใงใตใคใบใ 0.4
ๅขใใใฆๅคๅใ่ฆ่ชใใใคใค 0.2
ใพใงๅๆๆใใฆ (47 ใใ 47.5 ใพใง) ่ฝใจใใฆใไบๆใใไฝใใพใใ
ใใใฆ 47.5 ใใ 47.75 ใพใงใฎ 1/4 ๆใไฝฟใฃใฆไธใซๅใใใๆๅพใฎ 1/4 ๆใฏๅใใใพใใใใใใฏใไธ็ฌ่ฉฐใพใฃใๆ่ฆใ(ใใใในใใใใจไผผใใใใชใคใกใผใธ) ใซใชใฃใฆใใใฆ (5ใใฌใผใ ใใใชใใงใใใฉ)ใๆปใใใใใๅ้กใ่งฃๆถใใพใใ
ใจใใใฎใใ47.5 ใใ 48 ใพใงๅใใใฆใใพใใจๆปใใใซ็นใใใใใฆใใพใฃใฆใๆฒใ้ๅงใใใใจใใ็ฌ้ใฎๆ่ฆใ่ใใฆใใพใฃใใฎใงใใใชใฎใงไธ้ฃ็ถๆง (= ๅคงใใชๅคๅ้) ใๅ ฅใใพใใใ
่งฃ่ชฌ็จ pic.twitter.com/tBCLCVNQwP
— phi16 (@phi16_) 2023ๅนด1ๆ6ๆฅ
โฆใใผใใใฎๆงๅญใ่ฆใใจใใใฃใฆใใใ ใใใใจๆใใใงใใใใณใผใใงๆธใใใจใใฆใใฉใใๆณฅ่ญใใใจใใใใใจใซๅคใใใฏใใใพใใใ้ๅ ทใฎๅ้กใชใฎใงใใ
ใชใฎใงใขใใกใผใทใงใณ่งฃ่ชฌใจใใฆใฏใใใๅบ็คใใง็ตใใฃใฆใใฆใใใจใฏใใใใฉใใใใไฝฟใใใ ใจๆใฃใฆใใพใโฆใ
ๆ่งใชใฎใงใขใใกใผใทใงใณใซใผใใงใฏๅณใใใใช้จๅใๅคใใซ็ดนไปใใพใใ
ๅฃฐ
ๅฎ็ดใซใๆณขใใงๅฃฐใ่กจ็พใใฆใใพใใ็ฉๅฝขๆณขใชใฎใฏๅๆ้ณๅฃฐ็ใชใใฅใขใณในใงใใญใใพใใใ ใฃใจใใใใ
ๅฝ็ถใใฎๆณขใฏๆญฃใใใใฎใงใฏไธๅใใใพใใใใไธๅฟ้ณ็จใซๆฒฟใฃใฆๅจๆณขๆฐใๅคใใใพใใ
int ix = floor(it); int ii = floor(ix / 16.0); int ir = ix - ii * 16; // 1212123- / 1212124-32 / 1212123- / 1212321- float h[16] = { 1, 2, 1, 2, 1, 2, 4, 4, 4, 4, 3, 2, 2, 2, 2, 2 }; int h0 = h[ir]; if (ix < 0) h0 = 1; else if (ii == 3 || (ii != 1 && ir >= 8)) h0 = 3; if (ii != 1 && h0 == 4) h0 = 3; ix++; ii = ix / 16; ir = ix % 16; int h1 = h[ir]; if (ix < 0) h1 = 1; else if (ii == 3 || (ii != 1 && ir >= 8)) h1 = 3; if (ii != 1 && h1 == 4) h1 = 3;
ใใใใซใใใงใใญใ่ดใใๆใ 8 ๆๅจๆใง่ฟใ้ณ็จใซใชใฃใฆใใฎใงใใใๅบๆบใจใใ8 ๆใ 16 ๅๅฒใใฆใใพใใ
ๅๆๆฏใฎๅจๆณขๆฐใใผใใซใ h
ใจใใใใคใงใใๅจๆใใจใซๅพฎๅฆใซ้ใฃใใใใๅใฏๆฌกใฎๆกไปถๆใงใฉใใซใใใฆใพใใ
ใงใใ็พๅจใฎๅๆใใจใๆฌกใฎๅๆใใฎ้ใใใฌใณใใใใใใซใh0
ใจ h1
ใ่จ็ฎใใฆใใพใใๆณขใฎๅฝขใฎ่จ็ฎใฏๅ
จใฆ h0
h1
ใใใใใซ่กใฃใฆใๆๅพใซๆททใใฆใใพใใ
float a = eb(map(-0.3, 0.3, frac(it) - 0.5), 4); if (ii == 1 && ir >= 9 || ix >= 38) a = smoothstep(-0.5, 0.5, frac(it) - 0.5); bool efi0 = h0 >= 3 || ii == 1 && ir >= 9; bool efi1 = h1 >= 3 || ii == 1 && ir >= 9; float freq[5] = { 0, 9, 17, 25, 33 }; float sp0 = efi0 ? 4 : 2; float sp1 = efi1 ? 4 : 2; float wav0 = sin(loc * freq[h0] * 2 * pi + lt * sp0) * 0.5 + 0.5; float wav1 = sin(loc * freq[h1] * 2 * pi + lt * sp1) * 0.5 + 0.5; if (efi0) wav0 *= tanh(sin(loc * 170 + lt * 8) * 5) * 0.1 + 2; if (efi1) wav1 *= tanh(sin(loc * 170 + lt * 8) * 5) * 0.1 + 2; float eff = 0; eff = max(eff, min(e0(lt-4, 8), 1 - e0(lt-9.75, 2))); eff = max(eff, min(e0(lt-12, 8), 1 - e0(lt-19, 2))); eff = max(eff, min(e0(lt-20, 8), 1 - e0((lt-25.75)/2, 2))); eff = max(eff, e0(lt-28, 8)); base *= lerp(1, 0.5, eff); base += lerp(wav0, wav1, a) * 2 * eff;
ใพใใคใพใ a
ใใใฌใณใ็ใงใfreq
ใๅจๆณขๆฐใใผใใซ (64 ๅๅฒใใใฆใใฎใง 32 ใ Nyquist ๅจๆณขๆฐใใใใใๅพฎๅฆใซๅคใใใใใซๅคใ้ธใใงใใพใ) ใงใๆใ
่ชๅผตใใใ (efi0
, efi1
)ใๅฃฐใๅบใฆใใจใใฏใใผในๆณขใๅผฑใใใใใใใใใใงใใญใ
ใกใชใฟใซใไปๅไฝฟใฃใฆใไธ่งๅฝขใฏๅฎ้ใซใฏๅ จ้จไธ่งๆฑใงใๅฅฝใใชใจใใซไผธใฐใใใใงใใใใใซใชใฃใฆใพใใใใใ้ใใฆไธฆในใฆๅฃฐใฎๆณขๅฝขใไฝใฃใฆใพใใ
ใฉใไธฆในใใใ่จ็ฎใใ็บใซใฏใ้ฃใฎๆณขใฎ้ซใใใ็ฅใๅฟ ่ฆใใใใฎใงใใใใ่จ็ฎใใฆใพใใใใใใใฎใฏๆๅคใจๅคงๅคใงใใญใ
็ๅฐใฎ่กๆ
ใพใๆ นๆฌ็ใซใๅไธ่งๅฝขใฎใใฉใกใผใฟๆๅฎใ่กใใคใณใฟใใงใผในใใใใงใใ
bool EffectVert(uint id, float z, inout float3 p, inout float4 q, inout float3x3 m, inout float4 c, inout float4 cs);
id
ใฏIDใz
ใฏๅ
็จใฎไธ่งๆฑใฎๆๅ (-1
) ใๅฅฅ (+1
) ใใใใใๅ
ฅๅใจใใฆใไฝ็ฝฎ p
ใๅงฟๅข (ใฏใฉใผใฟใใชใณ) q
ใๅคๅฝข่กๅ m
ใ่ฒ c
ใๅณๅฝขๆๅฎ cs
ใ่ฟใใพใใ
ไฝ็ฝฎใปๅงฟๅขใป่ฒใฏใใใใใฎ้ใใๅณๅฝขๆๅฎใฏไธ่งๅฝขใซ็ฉดใ้ใใใ่งไธธใซใใใใใใใฉใกใผใฟใงใใใงใๅคๅฝข่กๅใใพใๆฅฝใใ่ฆ็ด ใงใ
ๅ็ดใซๅไฝ่กๅใซในใฑใผใซๅใใใฐๅคงใใๆๅฎใจใใฆไฝฟใใใใงใใใใพใใใไปฅๅคใใงใใใใใงใใญใ
ๅใฎ่งฃ่ชฌใงๆธใใใไผธใฐใใใจใใใฎใใใใงใใใใช้ขๆฐใไฝใใพใใใ
float3x3 idM() { return float3x3(1, 0, 0, 0, 1, 0, 0, 0, 1); } float3x3 strM(float3 v) { float l = length(v); if (l < 0.00001) return idM(); float3 w = v / l; return float3x3( 1 + v.x*w.x, v.x*w.y, v.x*w.z, v.y*w.x, 1 + v.y*w.y, v.y*w.z, v.z*w.x, v.z*w.y, 1 + v.z*w.z ); }
idM
ใฏๅไฝ่กๅใstrM
ใๆๅฎใใๆนๅใซใไผธใฐใใ่กๅใงใใ ใจใฏ็ฐใชใใไผธใณใ ใฎ้ทใใซๆฏไพใใใใใซใใฆใใใฎใงๅฐใๆฑใใใใใชใฃใฆใพใใ
ใใจใฏใใใซ้ๅบฆใ็ชใฃ่พผใใฐ็ไผผ็ใชใขใผใทใงใณใใฉใผใซใชใใพใใใใใใใงใ*2ใ
ใจใใใใใง็ๅฐ่กๆใฎ่จ็ฎใใใกใใ
float3 blow(float effT, uint id, inout float3 p, inout float4 q, inout float3x3 m) { float slowSpeed = 0.005; float lastSpeed = 0.25; float weight = 12; float mt = effT < 0.125 ? effT : 0.125 + slowSpeed * (effT - 0.125) + (lastSpeed - slowSpeed) * pow((effT - 0.125) / 3.875, weight+1) / (weight+1) * 3.875; if (effT >= 4) { mt = 0.125 + slowSpeed * (4 - 0.125) + (lastSpeed - slowSpeed) * pow((4 - 0.125) / 3.875, weight+1) / (weight+1) * 3.875; mt += effT - 4; } float3 pp = p; float3 fullImp = normalize(pp) / length(pp) * (rand(float2(id,1)) + 0.5) * 500; float3 fullImq = randSphere(float2(id,0)) * 20; float dt = 0.001; float3 g = float3(0,-10,0); float ct = min(1, mt / dt); float imp = smoothstep(0, 1, ct); float impI = (pow(ct, 3) - pow(ct, 4) / 2 + max(0, mt / dt - 1) * 1) * dt; p += impI * fullImp; p += pow(mt, 2) / 2 * g; float3 v = 0; v += imp * fullImp; v += mt * g; q = mulQ(axisQ(impI * fullImq), q); v *= 0.075; m = mul(strM(v), m) * 0.75; return fullImp; }
ใถใฃใกใใ็งใใใผใใฆใชใใฎใง่งฃ่ชฌใงใใชใใใงใใใๆ้่ปธ mt
ใใพใๆญชใใงใใฃใฝใใงใใญโฆใๆๅใฏ็ญ้ โ ๆธ้ โ ใ ใใ ใๅ ้ใใฆใใจใซๆปใใใฟใใใชๅใใ ใจๆใใพใใ
ๆ้ใฎๅคๅ้ใ 1
โ 0.005
ใใใใฃใใใจ 0.25
ใพใงๅขๅ โ ใใใใ 1
ใซๆปใใใจใใๅใใใใฆใใพใใใงใใใใ็ฉๅใใฆๆ้ใ่จ็ฎใใฆใใใฟใใใงใใ็ฉๅใฏใ ใใใงใใญใ
ใใจใฏ่กๆใฎ่จ็ฎใงใใใใใใฏใไธญๅคฎใใใฎ่ท้ขใฎ้ๆฐใฎๅผทใใงใใฉใณใใ ใชๅใไธใ (fullImp
)ใใใฉใณใใ ใชใใซใฏใไธใใ (fullImq
)ใใใใงใใ
ใใใใใไธ็ฌใงไธใใใฎใงใฏใชใ 0.001
็งๆใใฆใใใใใงใใใใฎ impI
ใฎ่จ็ฎใฏ Amebient ใฎใจใใซใใฃใใsmoothstep
ใฎ็ฉๅใใงใใใ็ดฐใใใใจใฏๅฟใใพใใใ
ใชใใใใใใงไฝ็ฝฎใ่จ็ฎใใคใคใใใฎๅพฎๅใซใใฃใฆ้ๅบฆใ็ฎๅบใงใใพใใใใใๅคๅฝข่กๅ m
ใซ็ชใฃ่พผใใงใใพใใญใ
ใใใพใงไธๅฏง (๏ผ) ใซใใๅฟ ่ฆใใใฃใใใฏใใใใใใพใใใใไธๅฏงใซใใใจๅฐใชใใจใใใพใจใใชๅใใใใใฆใใใใฎใงใ่ฟทใใชใใฆ่ฏใใใใใชใใใชใจๆใใพใใใใพใใ
ใกใชใฟใซใใใฎใจใใฎ่จ็ฎใซ้ๅใๅ
ฅใฃใฆใ (p += pow(mt, 2) / 2 * g;
) ใฎใงใใใๆใใซ่ฝไธใใฆใใใพใใ
ใฝใใฝใ
ใใกใฎใใค pic.twitter.com/QkzzFELuTv
— phi16 (@phi16_) 2023ๅนด1ๆ3ๆฅ
ใๆฐใซๅ ฅใใงใใใใใใใ
float ut = lt - spawns[id % 5] - 16 * (id / 5); if (ut < 0) return false; float4 p0 = poyoPoint(id, lt - dt); float4 p1 = poyoPoint(id, lt + dt); p = lerp(p0.xyz, p1.xyz, z); p.y += noise(float2(id, lt*0.3 + rand(id.xx))) - 0.5; m = 1; if (distance(p0, p1) > 0.00001) { float3 t = normalize(p1 - p0); q = dirQ(float3(0, 0, 1), t); m = lerp(0.25, 1, exp(-distance(p0, p1)*0.5)); } m += 1 - e0(ut, 4.0); m *= e0(ut * 2, 9.0); m *= lerp(0.5, 1.5, lerp(p0.w, p1.w, z)); if(ut > 0) c.rgb = lerp(c.rgb, 1.2, 1-e0(ut/2, 8));
ใใใฏไปไธใ้จๅใฎใณใผใใงใใใฝใใกใใใฎไฝ็ฝฎใฏ poyoPoint
ใ่จ็ฎใใฆใใใใฎใงใใใฎ้ใใซใใปใซใงใคใชใใพใใz
ใฏไปๅใฏ 0
ใใ 1
ใฎ้ใฎๅคใๅใใฟใใใงใใญใm
ใฏ่กๅใงใฏใชใใใ ใฎในใฑใผใซใ่กจใในใซใฉใผๅคใซใชใฃใฆใพใใ
ๅใซใใปใซใ็งปๅๆนๅใซๅ่ปข q = dirQ(float3(0, 0, 1), t);
ใใคใคใๅใใๅคงใใใจใใซใฏ็ธฎใใๅฆ็ m = lerp(0.25, 1, exp(-distance(p0, p1)*0.5));
ใๅ
ฅใฃใฆใใพใใใใฎ็ธฎใใใใคใใใกใใใกใใใใใใใงใใใญใใชใใใ
ใใจใฏใ็ปๅ ดๆ (ut = 0
) ใฏใกใใฃใจ้ๅฐใซ่จใใใm += 1 - e0(ut, 4.0);
ใ็ปๅ ดๆใฏ 0 ใใไธ็ฌใง่จใใใm *= e0(ut * 2, 9.0);
ใจใใใใจ poyoPoint
ๅดใงๅคงใใๆๅฎใใฆใใๅใๅๆ ใใใจใใๆๅพใฏใ็ปๅ ดใใ็ฌ้ใซ็ฝใๅ
ใใๅฆ็ใงใใญใ
poyoPoint
ใฏใพใใใใใใใชใๅฎ่ฃ
ใซใชใฃใฆใพใใใๅบๆฌ็ใซใฏใn ๆ็ฎใงๆญฃ n ่งๅฝขใฎๅฝขใซไธฆใถ (ใกใใฃใจไธไธใซใฉใณใใ ใซใใใ)ใใใใใใ่ฃ้ใใใใใซ็งปๅใใใใจใใๅใใใใฆใใพใใ่ฃ้้ขๆฐใฏๆฌกใงใใ
float eb01(float t, float a) { t = saturate(t); return - 2 * t * t * t + (a + 3) * t * t - a * t; }
ใใใฏ ใฎ่งฃใใชใใพใใคใพใใๆๅใซใใฃใจๆปใใใ็ๅฐใฏๆฅใซ่กใใใฎใใใใใใฃใใฎใงใใa = 1
ใงไฝฟใฃใฆใพใใ
ๅพๆนใฎๅ
— phi16 (@phi16_) 2023ๅนด1ๆ6ๆฅ
ใใใฏใกใฃใกใใช่ฉฑใชใใงใใใฉใ
ใพใใในใฑใผใซใๅคๅใใใใขใใกใผใทใงใณใใฃใฆ่ช็ถใซ่ฆใใชใใจๆใใใงใใใญใใใชใใใฃใใชใใฎใชใใพใ ใใใใงใใใๆง้ ใๆใฃใ็ฉไฝใๆกๅคง็ธฎๅฐใใใจ้ๅๆใ่ฆใใพใใ็งใฏใใพใใๅคๅฝขใใๅ ๆใใชใใใใใงใใใใ
ใชใฎใง็งใฏใๅ จไฝใฎในใฑใผใซๅคๅใใฏ่กใใชใใใใซใใฆใใพใใใใใชใใจใชใไฝใฃใฆใฟใใใฎๅใใในใฑใผใซๅคๅใซใชใฃใกใใฃใใใงใใ
ๅณๅฏใซๆกๅคง็ธฎๅฐใใฆใใใใใงใฏใชใใใงใใใใใใใใฎไธ่งๅฝขใฎไฝ็ฝฎใซใๅใๅ็ใๆใใฆ็ธฎใใใใใใใซใใใฏในใฑใผใซๅคๅใงใใใงใใใฎๅใใใใใใโฆใ
ๅฐใฃใใฎใงใ่ฉฆใใซ ใๅ ๅดใ 0.2 ๆ้ ใใใใๅฆ็ใๅ ฅใใฆใฟใพใใใใใใจในใฑใผใซๆใใชใใชใใใใใซๅ ๅดใจๅคๅดใงๅ่ชฟๅไฝใใฆใ้ฐๅฒๆฐใๅบใพใใ๏ผใใฃใใผใ
ใจใใ่ฉฑใ
่ก
็พๅฎใฎ่กใใใซใใซๅใใใใคใฏใใใพใง้ฃใใใใจใใใฆใใพใใใ
v2f vert (appdata v) { loadEnv(); v2f o; o.origPos = mul(UNITY_MATRIX_M, v.vertex); o.vertex = UnityObjectToClipPos(v.vertex); o.screen = o.vertex; float angle = 0; v.vertex.xyz = CityVert(v.vertex.xyz, v.uv2, angle); o.vertex = UnityObjectToClipPos(v.vertex); o.normal = v.normal; o.normal.xz = mul(ei(angle), o.normal.xz); o.worldPos = v.vertex; return o; }
้่ฆใชใฎใฏ o.screen
ใซ่กใๅใใๅใฎในใฏใชใผใณๅบงๆจใๆ ผ็ดใใ ใจใใๆใใ 1ใคใงใใCityVert
้ขๆฐใซใใฃใฆ v.vertex
ใฏๅฅฝใๅๆๅใใๅคใๅ
ฅใฃใกใใใพใใใo.screen
ใใใฏๅใใฆใใชใใจใใฎในใฏใชใผใณๅบงๆจใๅๅพใงใใพใใ
ใใจใฏใใฎๅบงๆจใง GrabPass ใใตใณใใชใณใฐใใใจใใใพใใงๅ ใฎไฝ็ฝฎใซใใฃใใใฏในใใฃใ็งปๅใใใใฎใใใซ่ฆใใใใจใใใใใงใใญใ็ฐกๅใงใใญใ
ใใฎๆนๆณใฎ่ชๆใชๆฌ ็นใฏ่ฃ้ขใ่ฆใใชใใใจใงใใใชใฎใงใใซใๅ่ปขใใใใจๅญๅจใใชใ้ขใใใกใใใกใ่ฆใใพใใใใๅ่ปขใฏใใใใใใ่กจใใฎใซๅนๆ็ใ ใใใพใใฉใใใใใพใงใขใผใใฃใใกใฏใใฏๆฐใซใใใชใใจๆใฃใใฎใงใใฃใกใใใพใใใ
ใใใใๅคใชใใจใใทใงใผใใฏๆฐ่ปฝใซใงใใใฎใ้ข็ฝใใจใใใงใใญใ็ฐกๅใใใชใใจใ้ใซใงใใชใใฃใใใใพใใใฉใใ
็็ ด
ใใใฏ่ฒใ ใจๅคงๅคใงใใโฆใๆ็ป่ฒ ่ทใๅคงๅคใงใใใญใ
ใพใๅๅบงๆจใซ 16 ้ใใฎๅคใๅฎใใพใใใใใฏใไฝๅ็ฎใซๅฅใใใใใใ่กจใๆฐๅคใงใใ
sampler2D _Noise; #define peelN 16 int peelIndex(float2 p) { int g = tex2D(_Noise, p * 0.1).r * 4; float2 p2 = p + tex2D(_Noise, p * 0.3).rr * 2; float f = rand(voronoi(p2/2)); return floor(rand(float2(f, g)) * (peelN - 1) + 1); } // int index = peelIndex(worldPos.xz / 16 + uv * 8);
ใงใๅใใซใ 16 ๅๅฅใใๅใใไฝใใพใใๅใ้้ใ ใจๆง้ ใใใใใใใใชใฃใฆใใพใใฎใงๅใใซใงใฟใคใใณใฐใใใใใฆใใพใใ
float3 ori = float3(0,1,0) + n * 0.3; float3 o = p + n * 20 * e0(t, 4) * e1(t*2, 4); float d = saturate(p.y / 60); o += ori * pow(max(0, t * 2 - d), 2) * 100; return o;
ๅฅใใใๅใใฏใณใฌใใใใงใใใใๆใใซไธใใๅฅใใใฆใใฃใฆใใใพใใ
ใฟใคใใณใฐใฏ ใใ ใจไผผใใใใชใใจใใใฃใฆใใพใใ่งฃ่ชฌใงใใๆฐใใใชใใฎใงใณใผใใฏ็กใใงโฆใ
ใใจใฏใๅฅใใใ้จๅใฏใ็พๅจใฎๅฅใใๅคใจๅใ้ ๅใ ใ็ฝใ่กจ็คบใใ่กใฏใ็พๅจใฎๅฅใใๅคใใใๅคงใใ้ ๅใ ใ็ฝใ่กจ็คบใใใใจใใๆใใซใชใใพใใใชใใพใใใ
ๅฎ่ฃ ใใๅใฏใณใฌๆฌๅฝใซใกใใใจใใฃใใใไฝใใใใช๏ฝ๏ฝ๏ฝใฃใฆไธๅฎใ ใฃใใใงใใใใชใใจใใชใฃใฆใใใฃใใไธ็ชใฎๆธๅฟตๆๆใงใใใ
ใพใใชใผใใผใใญใผใใใกใใใกใๅคใใฆ้ใใใงใใใฉใญ๏ผใใ ๅๆใซๆฒ่ชไฝใใ้้ๆใฎใใ้จๅใใ ใฃใใฎใงใใใๆๅณใงใฏใดใฃใใใจใใใใจใงโฆใ
ใใพใ
ใกใชใฟใซๆๅพใฎใญใฉใผใณใฃใฆใชใใใคใใใชใดใณใงใใ
ใพใจใ
ๅๅฅใฎๆผๅบ่งฃ่ชฌใจใใใใใฏๆๅใฎๅบ็ค้จๅใๆธใใใใฆๆธใใใใฟใใใชใจใใใใใพใใๆฅฝใใๅใใใใฃใจๅขใใใจๅฌใใใงใใ
ไปๅใๅ ใ ใฏใใฃใจใในใใจใใงใฏใใจใใใใๅพๅฆ็ใใใใพใไฝฟใฃใฆ็ตตใใใฃใใใใงใใใใชใใจใๆใฃใฆใใใงใใๆ็ต็ใซใฏใใใพใงใใใพใใใงใใใใพใใใใพใงใงๆบ่ถณใใฆใใพใฃใใจใใใใใใ
ๆ่ฌใใผใใฃใฏใซ็ใชใจใใงใฏใใไฝฟใใชใใฃใ (ใไฝฟใใชใใฃใใใฎใงใฏใชใใฎใงใใไปๅใซ้ใฃใฆใฏ) ใฎใงใจใใงใฏใๅใใฃใจ้ใใญใฐใจๆใใพใใใใพใใ
็พ็ถใฎ็งใฎ่ฝๅใๅบใใใจใใ็นใงใฏๆบ่ถณใใฆใใพใใ่ฒใ ใงใใใใใซใชใใใใ
ใใใใงใใไฝใใใใฐๆฐ่ปฝใซใฉใใใ
ใกใชใฟใซ่ฒผใฃใฆใใใฐใฉใใฎๆฎใฉใฏ Graphtoy ใงไฝใใพใใใๆๅใฎใใคใฏ Wolfram|Alpha ใงใใๅใใฎ gif ใฏ shadertoy ใงๆใใใใฎใ ScreenToGif ใงๆฎใฃใฆใพใใ
*1:็ก้ๅๅพฎๅๅฏ่ฝใ ใใใคใฉใผๅฑ้ใงใใชใ้ขๆฐใฎ่ฉฑใฏใใพใใ
*2:ไธ่งๅฝขไปฅๅคใซ้ฉ็จใใใจใใฏใฉใณใใ ใใคใบใๆใใใจใใๆใใฃใฝใๆฐใใใพใ