Circuit & ShaderNova
Circuit Circuit
ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ШСйдСрНова. ΠŸΡ‹Ρ‚Π°ΡŽΡΡŒ Π·Π°ΠΏΠΈΡ…Π½ΡƒΡ‚ΡŒ рСалистичноС ΠΏΡ€Π΅Π»ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π² 2 миллисСкунды Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… графичСских процСссорах, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ приблиТСния диэлСктриков просто вытягиваСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ПомоТСшь, ΠΌΠΎΠΆΠ΅Ρ‚, ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивный ΡˆΠ΅ΠΉΠ΄Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всС Π΅Ρ‰Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ настоящСС стСкло?
ShaderNova ShaderNova
НС услоТняй, просто ΡƒΠ±Π΅Ρ€ΠΈ лишний ΡˆΡƒΠΌ. ΠžΡΡ‚Π°Π²ΡŒ ΠΎΠ΄ΠΈΠ½ сдвиг тСкстуры, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒ ΠΏΡ€Π΅Π»ΠΎΠΌΠ»Ρ‘Π½Π½Ρ‹Π΅ UV Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΎΠΊΠ½Π° просмотра, ΠΈ ΠΎΡ‚ΠΊΠ°ΠΆΠΈΡΡŒ ΠΎΡ‚ смСси Π¨Π»ΠΈΠΊΠ° – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ постоянный ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ прСломлСния. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΏΠΎΡ‚ΠΎΠΌ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΡΠ³Ρ‡ΠΈΡ‚ΡŒ, подшСй Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ размытия. Π’ΠΎΡ‚ набросок – Π±Π΅Π· изысков, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΡƒΡ‚ΡŒ: ```glsl vec3 viewDir = normalize(vWorldPos - cameraPos); vec3 refractDir = refract(viewDir, vNormal, 1.0/IOR); vec2 offset = refractDir.xy * maxUV; // maxUV – Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π° просмотра Π² Ρ‚Π΅ΠΊΡΡ‚ΡƒΠ»ΡŒΠ½Ρ‹Ρ… пиксСлях vec2 uv = vUV + offset / texSize; // ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ просмотр vec4 refraction = texture(refractionTex, uv); fragColor = mix(color, refraction, roughness); ``` Π’ΠΎΡ‚ ΠΈ всё. Если всё Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ 2 мс, ΡƒΠ±Π΅Ρ€ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡΡ†ΠΈΡŽ `roughness` ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈ просмотр тСкстуры Π½Π° Ρ€Π°Π·ΠΌΡ‹Ρ‚Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€ с Π½ΠΈΠ·ΠΊΠΈΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ – это поэзия ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΠ° – ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ просмотр ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
Circuit Circuit
Π—Π²ΡƒΡ‡ΠΈΡ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, Π½ΠΎ Π±ΡƒΠ΄ΡŒ остороТна с UV-ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ – Ссли смСщСниС Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ Π·Π° ΠΊΡ€Π°ΠΉ, Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π·ΠΊΠΈΠ΅ Π³Ρ€Π°Π½ΠΈ ΠΈΠ»ΠΈ Ρ‡Ρ‘Ρ€Π½Ρ‹Π΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ `clamp(uv, 0.0, 1.0)` послС слоТСния. И Π΅Ρ‰Ρ‘, `mix` с ΡˆΠ΅Ρ€ΠΎΡ…ΠΎΠ²Π°Ρ‚ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‚ΠΊΡƒ; Ссли Π±ΠΎΡ€Π΅ΡˆΡŒΡΡ с 2 миллисСкунды, зафиксируй коэффициСнт смСшивания Π² ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ подстановки. Π”Π΅Ρ€ΠΆΠΈ всё ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ.