BloomCode & Turtlex
ΠΡΠΈΠ²Π΅Ρ, ΠΠ»ΡΠΌΠΠΎΠ΄. ΠΡΡΠ°ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ°ΡΡΠ΅Π½ΠΈΠΉ Π½Π° GLSL, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠ³Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π³ΠΈΠ± Π»ΠΈΡΡΡΠ΅Π² Π²ΡΠ³Π»ΡΠ΄Π΅Π» ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎ. ΠΠΎΠΆΠ΅Ρ, Ρ ΡΠ΅Π±Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΎΠ²Π΅ΡΡ ΠΈΠ»ΠΈ Π»ΡΠ±ΠΈΠΌΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΡ?
ΠΡΠΈΠ²Π΅Ρ, Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ Ρ ΠΈΠ·Π³ΠΈΠ±ΠΎΠΌ Π»ΠΈΡΡΡΠ΅Π². Π₯ΠΎΡΠΎΡΠΈΠΉ ΡΡΡΠΊ β Π½Π°ΡΠ°ΡΡ Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΠΉ ΡΠΎΡΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ»ΠΎΡΠΊΠΈ, Π° ΠΏΠΎΡΠΎΠΌ Π΄Π΅ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π΅Ρ ΠΏΠΎ ΡΠΏΠ»Π°ΠΉΠ½Ρ. Π GLSL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΡΠ±ΠΈΡΠ΅ΡΠΊΡΡ ΠΊΡΠΈΠ²ΡΡ ΠΠ΅Π·ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠΏΠΎΠ΄Π½ΡΡΡ ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ Π»ΠΈΡΡΠ°.
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ΅Π±Ρ Π±ΡΠ΄Π΅Ρ ΡΡΠ° Π±Π°Π·ΠΎΠ²Π°Ρ ΠΊΡΠΈΠ²Π°Ρ, Π΄ΠΎΠ±Π°Π²Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ 2D ΡΡΠΌΠ° ΠΊ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΊΡΠ°ΠΉ Π»ΠΈΡΡΠ° Π½Π΅ Π±ΡΠ» ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ Π³Π»Π°Π΄ΠΊΠΈΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ `vec2 noisePos = vec2(u_time, v_uv.y); float lift = noise(noisePos)*0.1;` ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉ `lift` ΠΊ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ y Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ. ΠΡΠΎ ΠΏΡΠΈΠ΄Π°ΡΡ Π»ΡΠ³ΠΊΡΡ Π²ΠΎΠ»Π½ΠΈΡΡΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠ²Π΅Ρ: ΡΠ΄Π΅Π»Π°ΠΉ ΠΊΠΎΠ½ΡΠΈΠΊ Π»ΠΈΡΡΠ° ΡΡΠΆΠ°ΡΡΠΈΠΌΡΡ, ΡΠΌΠ΅ΡΠΈΠ²Π°Ρ ΠΈΠ·Π³ΠΈΠ± Ρ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π΄ΠΎ ΠΊΠΎΠ½ΡΠΈΠΊΠ°. Π§ΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ `float tipFactor = smoothstep(0.8, 1.0, v_uv.y); lift *= (1.0 - tipFactor);`, ΡΡΠΎΠ±Ρ Π»ΠΈΡΡ ΡΡΠΆΠ°Π»ΡΡ ΠΈ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π»ΡΡ ΠΊ ΠΊΠΎΠ½ΡΠΈΠΊΡ.
ΠΡΠ»ΠΈ Ρ
ΠΎΡΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΡΠ΅ΡΠΊΠΈΡ
Π΄Π΅ΡΠ°Π»Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ ΠΏΠΎΠ»Π΅ 3D ΡΡΠΌΠ° Π‘ΠΈΠΌΠΏΠ»Π΅ΠΊΡΠ° ΠΈ ΡΠΌΠ΅ΡΠ°ΠΉ Π²Π΅ΡΡΠΈΠ½Ρ Π²Π΄ΠΎΠ»Ρ Π½ΠΎΡΠΌΠ°Π»ΠΈ. Π‘ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π΅Π»Π°ΠΉ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ β ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, 0.02 Π΅Π΄ΠΈΠ½ΠΈΡΡ β ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ βΠΌΡΠΈΡΡΠΎΠ³ΠΎβ Π²ΠΈΠ΄Π°, Π½ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ»ΠΎΠΌΠ°ΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ.
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅: Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΌ. ΠΠ°ΠΏΠΈΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ UV-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ, ΠΈ Π²ΡΠ·ΡΠ²Π°ΠΉ Π΅Ρ ΠΈΠ· Π²Π΅ΡΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΉΠ΄Π΅ΡΠ°. Π’Π°ΠΊ ΡΡ ΡΠΌΠΎΠΆΠ΅ΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΊΡΠΈΠ²ΡΡ, Π°ΠΌΠΏΠ»ΠΈΡΡΠ΄Ρ ΡΡΠΌΠ° ΠΈΠ»ΠΈ ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ, Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Ρ Π²ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ! ΠΠ°ΠΉ Π·Π½Π°ΡΡ, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.