Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³? Π ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅Π½Π΄Π΅Ρ? Π‘Π»ΠΎΠ²Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΈΠ³Ρ.
- Tutorial
ΠΡΠΈΠ²Π΅Ρ, Π΄ΡΡΠ³! Π ΡΡΠΎΡ ΡΠ°Π· Ρ ΠΎΠΏΡΡΡ ΠΏΠΎΠ΄Π½ΠΈΠΌΡ Π²ΠΎΠΏΡΠΎΡ ΠΎ Π³ΡΠ°ΡΠΈΠΊΠ΅ Π² ΠΠΠ -ΠΈΠ³ΡΠ°Ρ . Π― ΡΠΆΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°Π» ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΡ HDRR (Π½Π΅ ΠΏΡΡΠ°ΡΡ Ρ HDRI) ΠΈ ΡΡΡΡ-ΡΡΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠ» ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΠΈ ΡΠ²Π΅ΡΠ°. Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ SSLR (ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠ°ΠΊ SSPR, SSR): . ΠΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ - ΠΏΠΎΠ΄ ΠΊΠ°Ρ.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Deferred Rendering
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²Π²Π΅Π΄Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΊΠ°ΠΊ Deferred Rendering (Π½Π΅ ΠΏΡΡΠ°ΡΡ Ρ Deferred Shading , Ρ.ΠΊ. ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ). Π ΡΠ΅ΠΌ ΡΡΡΡ Deferred Rendering ? ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅, Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π·Π°ΡΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, DOF ) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ ΠΎΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΡΡΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΊ ΠΎΡΠΎΠ±ΡΠΉ Π²ΠΈΠ΄ ΠΏΠΎΡΡΠΏΡΠΎΡΠ΅ΡΡΠΈΠ½Π³Π°. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ DOF (Depth Of Field , ΡΠ°Π·ΠΌΡΡΠΈΠ΅ Π½Π° Π΄Π°Π»ΡΠ½ΠΈΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡΡ ) ΠΊ Π½Π°ΡΠ΅ΠΉ ΡΡΠ΅Π½Π΅? ΠΠΌΠ΅ΡΡ ΡΠ°ΠΌΡ ΡΡΠ΅Π½Ρ (Color Map ) ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΠ΅ΠΊΡΠ΅Π»Ρ (Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ ΠΊΠ°ΠΌΠ΅ΡΡ). ΠΠ°Π»Π΅Π΅ - Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ. ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Blur ΠΊ Color Map , Π³Π΄Π΅ ΡΠ°Π΄ΠΈΡΡ ΡΠ°Π·ΠΌΡΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π³Π»ΡΠ±ΠΈΠ½Ρ ΠΏΠΈΠΊΡΠ΅Π»Ρ (ΠΈΠ· Depth Map ). Π Π΅ΡΠ»ΠΈ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ - ΡΠ΅ΠΌ Π΄Π°Π»ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠ΅ΠΌ ΡΠΈΠ»ΡΠ½Π΅Π΅ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΠΌΡΡ. Π’Π°ΠΊ ΡΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° Deferred Rendering ? ΠΠ½Π° ΡΡΡΠΎΠΈΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ GBuffer , ΠΊΠΎΡΠΎΡΡΠΉ, ΠΎΠ±ΡΡΠ½ΠΎ, Π² ΡΠ΅Π±Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠΈ ΡΠ΅ΠΊΡΡΡΡΡ (RenderTarget ):Π ΡΠ»ΡΡΠ°Π΅ Ρ Color map , Normal map Π²ΡΠΎΠ΄Π΅ Π²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠ΅ Surface.Color ΡΠ΅ΠΊΡΡΡΡΡ: ΠΏΠΎΠΆΠ°Π»ΡΠΉ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Π΅ΠΊΡΠΎΡ Π½ΠΎΡΠΌΠ°Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π»Π΅ΠΆΠ°ΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ [-1, 1] (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠ°Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π²Π΅ΠΊΡΠΎΡΠ° Π² ΡΠΎΡΠΌΠ°Ρ ).
Π Π²ΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ Depth map ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ. ΠΠ°ΠΊ ΠΆΠ΅ Depth map Ρ ΡΠ°Π½ΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΏΠΈΠΊΡΠ΅Π»Ρ, Π΄Π° Π΅ΡΠ΅ ΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ? ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎ, ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π°:
Float4 vertexWVP = mul(vertex, World*View*Projection);
ΠΠ°Π΅Ρ Π½Π°ΠΌ ΡΠΊΡΠ°Π½Π½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ:
Float2 UV = vertexWVP.xy;
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ βΠ΄Π°Π»Π΅ΠΊΠΎβ ΠΎΡ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ:
Float depth = vertexWVP.z / vertexWVP.w;
ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ UV Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½, Ρ.ΠΊ. ΠΏΡΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄Π° Π½Π° Π²Π΅ΡΡ ΡΠΊΡΠ°Π½ ΠΎΠ½ ΠΈ ΡΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΎΠΈΡ Ρ ΡΠ°Π½ΠΈΡΡ Π² ΠΊΠ°ΡΡΠ΅ Π³Π»ΡΠ±ΠΈΠ½Ρ Π½Π΅ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ, Π° ΡΠΎΠ»ΡΠΊΠΎ Π³Π»ΡΠ±ΠΈΠ½Ρ.
Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ:
Float3 GetPosition(float2 UV, float depth) { float4 position = 1.0f; position.x = UV.x * 2.0f - 1.0f; position.y = -(UV.y * 2.0f - 1.0f); position.z = depth; //Transform Position from Homogenous Space to World Space position = mul(position, InverseViewProjection); position /= position.w; return position.xyz; }
ΠΠ°ΠΏΠΎΠΌΠ½Ρ, ΡΡΠΎ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ GBuffer Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΡΠ°ΠΊΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° ΠΊΠ°ΠΊ MRT (Multiple Render Targets ), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΈΡΡΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΡΠ°Π·Ρ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Render Target (ΠΏΡΠΈΡΠ΅ΠΌ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ RT ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΡΠ°Π·Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ). ΠΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠ°Π²ΠΈΠ» MRT - ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π²ΡΠ΅Ρ Render Target Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ . Π ΡΠ»ΡΡΠ°Π΅ Color Map , Normal Map - Surface.Color : 32-ΡΡ Π±ΠΈΡΠ½Π°Ρ RT , Π³Π΄Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ°Π½Π°Π» ARGB ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ 8 Π±ΠΈΡ, Ρ.Π΅. 256 Π³ΡΠ°Π΄Π°ΡΠΈΠΉ ΠΎΡ 0 Π΄ΠΎ 1.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ ΠΊ Π»ΡΠ±ΠΎΠΉ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΌΡΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ Screen Space ΡΡΡΠ΅ΠΊΡ: SSAO (Screen Space Ambient Occlusion). ΠΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π±ΡΡΠ΅ΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ ΠΈ Π½ΠΎΡΠΌΠ°Π»ΠΈ, ΡΡΠΈΡΠ°Ρ ΡΡΠΎΠ²Π΅Π½Ρ Π·Π°ΡΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ΅ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π΅ Π±ΡΠ΄Ρ, ΠΎΠ½ ΡΠΆΠ΅ Π½Π° Ρ Π°Π±ΡΠ΅, ΡΠΊΠ°ΠΆΡ Π»ΠΈΡΡ ΡΠΎ, ΡΡΠΎ Π·Π°Π΄Π°ΡΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΠ°ΡΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ: Ρ Π½Π°Ρ Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ², Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΈΠ· ΡΡΠΈΡΠ°Π΅ΠΌΠΎΠ³ΠΎ βΠΏΠΈΠΊΡΠ΅Π»Ρβ ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ»-Π²ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Ρ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠ΅ΠΉ.
ΠΡΠΈΠΌΠ΅Ρ ΡΡΡΠ΅ΠΊΡΠ° (ΡΠ»Π΅Π²Π° Π±Π΅Π· SSAO, ΡΠΏΡΠ°Π²Π° Ρ SSAO):
Π’Π°ΠΊ ΠΆΠ΅ Deferred Shading ΡΠ²Π»ΡΠ΅ΡΡΡ Screen Space ΡΡΡΠ΅ΠΊΡΠΎΠΌ. Π’.Π΅. Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΡΠ²Π΅ΡΠ° Π½Π° ΡΠΊΡΠ°Π½Π΅ (Π±Π΅Π· Π²ΡΡΠΊΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ) ΠΌΡ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ²Π°Π΄ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Additive Π² ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ RenderTarget : Light Map . Π Π·Π½Π°Ρ ΠΌΠΈΡΠΎΠ²ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ βΠΏΠΈΠΊΡΠ΅Π»Ρβ, Π΅Π³ΠΎ Π½ΠΎΡΠΌΠ°Π»Ρ, ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΡΠ²Π΅ΡΠ° - ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΠΎΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ.
ΠΡΠΈΠΌΠ΅Ρ Deferred Shading (ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΎΡΠ»ΠΎΠΆΠ΅Π½ΠΎ, ΠΏΠΎΡΠ»Π΅ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ):
ΠΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Screen Space ΡΡΡΠ΅ΠΊΡΠΎΠ²
Π‘Π°ΠΌΡΠΉ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠ»ΡΡ Screen Space ΡΡΡΠ΅ΠΊΡΠΎΠ² - Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΡΠ΅ΠΊΡΠ° ΠΎΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ.Π‘Π°ΠΌΡΠΉ Π³Π»Π°Π²Π½ΡΠΉ ΠΌΠΈΠ½ΡΡ - Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΡΡΡ Π²ΡΠ΅Ρ ΡΡΡΠ΅ΠΊΡΠΎΠ². ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π±ΡΠ΄Π΅ΠΌ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ Information Lost , Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΎ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΠ±Π·ΠΎΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ SSE Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΌΠ΅ΠΆΠ½ΡΡ Π³Π»ΡΠ±ΠΈΠ½ ΡΠ΅ΠΊΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Ρ Π»ΡΠ±ΠΎΠΉ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠ΅ΠΉ.
ΠΡ ΠΈ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ, ΡΡΠΎ Screen Space ΡΡΡΠ΅ΠΊΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π° GPU ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΡΡ-ΠΏΡΠΎΡΠ΅ΡΡΠΈΠ½Π³ΠΎΠΌ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ SSLR
ΠΠΎΡΠ»Π΅ Π²ΡΠ΅ΠΉ ΡΠ΅ΠΎΡΠΈΠΈ ΠΌΡ ΠΏΠΎΠ΄ΠΎΡΠ»ΠΈ ΠΊ ΡΠ°ΠΊΠΎΠΌΡ ΡΡΡΠ΅ΠΊΡΡ, ΠΊΠ°ΠΊ Screen Space Local Reflections : Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠΊΡΠ°Π½Π½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅.ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠ΅ΠΉ:
ΠΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ³ΠΎΠ» Π·ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π΅ΡΡΡ FOV (ΠΎΠ±ΡΡΠ½ΠΎ 45 Π³ΡΠ°Π΄ΡΡΠΎΠ², Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ 60 Π³ΡΠ°Π΄ΡΡΠΎΠ²), Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠ°ΠΌΠ΅ΡΠ΅ ΠΎΠ½ΠΈ ΡΠ°Π·Π½ΡΠ΅ Ρ.ΠΊ. ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Π΅ΡΠ΅ ΠΈ Aspect Ratio (ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½).
ΠΠΊΠ½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ (ΡΠ°ΠΌ, Π³Π΄Π΅ ΠΌΡ ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅ΠΌ UV-space
Π΄Π°Π½Π½ΡΠΌΠΈ) - ΡΡΠΎ, ΡΡΠΎ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, Π½Π° ΡΠΎ ΠΌΡ ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΡ ΡΡΠ΅Π½Ρ.
ΠΠ΅ΡΠ΅Π΄Π½ΡΡ ΠΈ Π·Π°Π΄Π½ΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Near Plane, Far Plane
, Π·Π°Π΄Π°ΡΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΠ΅Π»Π°ΡΡ Π² ΡΠ»ΡΡΠ°Π΅ Deferred Rendering
ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Far Plane
ΡΡΠΎΠΈΡ, Ρ.ΠΊ. ΡΠΎΡΠ½ΠΎΡΡΡ Depth Buffer
ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΏΠ°Π΄Π΅Ρ: Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠ΅Π½Ρ.
Π’Π΅ΠΏΠ΅ΡΡ, Π·Π½Π°Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ ΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π° ΠΎΠΊΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ (Π° ΡΠ°ΠΊ ΠΆΠ΅ Π³Π»ΡΠ±ΠΈΠ½Ρ) Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΌΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Float3 GetPosition(float2 UV, float depth) { float4 position = 1.0f; position.x = UV.x * 2.0f - 1.0f; position.y = -(UV.y * 2.0f - 1.0f); position.z = depth; position = mul(position, InverseViewProjection); position /= position.w; return position.xyz; }
ΠΠΎΡΠ»Π΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π²Π΅ΠΊΡΠΎΡ Π²Π·Π³Π»ΡΠ΄Π° Π½Π° ΡΡΠΎΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ:
Float3 viewDir = normalize(texelPosition - CameraPosition);
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ CameraPosition Π²ΡΡΡΡΠΏΠ°Π΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΊΠ°ΠΌΠ΅ΡΡ.
Π Π½Π°ΠΉΡΠΈ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° ΠΎΡ Π½ΠΎΡΠΌΠ°Π»ΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π΅:
Float3 reflectDir = normalize(reflect(viewDir, texelNormal));
ΠΠ°Π»Π΅Π΅ Π·Π°Π΄Π°ΡΠ° ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΠΊΠ°ΡΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ. Π’.Π΅. Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° Ρ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠ΅ΠΉ. ΠΠΎΠ½ΡΡΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ, ΡΡΠΎ Π»ΡΠ±Π°Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ. Π ΠΌΡ Π² Π½ΠΈΡ
ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½Ρ. Π’.ΠΊ. ΠΊΠ°ΠΆΠ΄Π°Ρ Π²ΡΠ±ΠΎΡΠΊΠ° ΠΈΠ· Depth Map
ΡΡΠΎΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π ΠΌΠΎΠ΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΠΌΡ Π±Π΅ΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ L
ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ΅Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΈΡΡ
ΠΎΠ΄Ρ ΠΈΠ· ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π°ΡΠΈΠΌ ΡΠ΅ΠΊΡΠ΅Π»Π΅ΠΌ ΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ βΠ²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈβ:
Float3 currentRay = 0; float3 nuv = 0; float L = LFactor; for(int i = 0; i < 10; i++) { currentRay = texelPosition + reflectDir * L; nuv = GetUV(currentRay); // ΠΏΡΠΎΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π½Π° ΡΠΊΡΠ°Π½ float n = GetDepth(nuv.xy); // ΡΡΠ΅Π½ΠΈΠ΅ Π³Π»ΡΠ±ΠΈΠ½Ρ ΠΈΠ· DepthMap ΠΏΠΎ UV float3 newPosition = GetPosition2(nuv.xy, n); L = length(texelPosition - newPosition); }
ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΌΠΈΡΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π½Π° ΡΠΊΡΠ°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ:
Float3 GetUV(float3 position) { float4 pVP = mul(float4(position, 1.0f), ViewProjection); pVP.xy = float2(0.5f, 0.5f) + float2(0.5f, -0.5f) * pVP.xy / pVP.w; return float3(pVP.xy, pVP.z / pVP.w); }
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΠΌΡ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ βΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΎΡΡΠ°ΠΆΠ΅Π½Π½ΠΎΠΉ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠ΅ΠΉβ. Π Π½Π°ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ nuv Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠ΅ΠΉ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½, Ρ.Π΅. nuv.xy β ΡΡΠΎ UV ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π² ΡΠΊΡΠ°Π½Π½ΠΎΠΌ Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅, Π° nuv.z ΡΡΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Π°Ρ Π³Π»ΡΠ±ΠΈΠ½Π° (Ρ.Π΅. abs(GetDepth(nuv.xy)-nuv.z) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ) .
Π ΠΊΠΎΠ½ΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ L Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡΡΠ°ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΠ°ΠΏ - ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊ Color Map :
Float3 cnuv = GetColor(nuv.xy).rgb; return float4(cnuv, 1);
Π Π°Π·Π±Π°Π²ΠΈΠΌ ΡΠ΅ΠΎΡΠΈΡ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡΠΌΠΈ, ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ Color Map ΠΈΠ· GBuffer):
ΠΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ΅ΠΉΠ΄Π΅ΡΠ° (ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ) ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ (Color Map ΠΈΠ· GBuffer + ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ΅ΠΉΠ΄Π΅ΡΠ° SSLR):
ΠΠ΅ Π³ΡΡΡΠΎ . Π ΡΡΡ ΡΡΠΎΠΈΡ Π΅ΡΠ΅ ΡΠ°Π· Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Space-Screen ΡΡΡΠ΅ΠΊΡΡ ΡΡΠΎ ΡΠΏΠ»ΠΎΡΠ½ΠΎΠΉ Information Lost (ΠΏΡΠΈΠΌΠ΅ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Ρ Π² ΠΊΡΠ°ΡΠ½ΡΠ΅ ΡΠ°ΠΌΠΊΠΈ).
ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Π΅ΠΊΡΠΎΡ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ Space-Screen β ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Color -ΠΊΠ°ΡΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΈ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Clamping Π½Π°ΡΠ΅Π³ΠΎ UV .
Π§ΡΠΎΠ±Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ°ΠΆΠ°ΡΡ βΠ΄Π°Π»ΡΠ½ΠΎΡΡΡβ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π Π΄Π°Π»Π΅Π΅ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π·Π°ΡΠ΅Π½ΡΡΡ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ°Π΅ΡΡΡ:
L = saturate(L * LDelmiter); float error *= (1 - L);
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° error (ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠ±ΡΠ°ΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡ SSLR - information lost):
Π£ΠΆΠ΅ Π»ΡΡΡΠ΅, Π½ΠΎ ΠΌΡ Π·Π°ΠΌΠ΅ΡΠ°Π΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Π΅ΠΊΡΠΎΡ ΠΎΡΡΠ°Π·ΠΈΡΡΡ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΌΠ΅ΡΡ? Clamping βΠ° UV ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ UV (x > 0, y > 0, x < 1, y < 1) ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π½Π΅Π²Π΅ΡΠ½ΡΠΌ:
ΠΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΡΠ³Π»Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΡΠΈΡΠΊΠ° Ρ ΡΠ³Π»Π°ΠΌΠΈ ΠΎΡ ΡΡΡΠ΅ΠΊΡΠ° Π€ΡΠ΅Π½Π΅Π»Ρ :
Float fresnel = dot(viewDir, texelNormal);
Π§ΡΡΡ-ΡΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ ΡΠΎΡΠΌΡΠ»Ρ:
Float fresnel = 0.0 + 2.8 * pow(1+dot(viewDir, texelNormal), 2);
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π€ΡΠ΅Π½Π΅Π»Ρ, Ρ ΡΡΠ΅ΡΠΎΠΌ Normal-ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° (Π·Π½Π°ΡΠ΅Π½ΠΈΡ fresnel-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ SSLR-Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°).
If you"re a developer of 3D games, then you"ve probably come across the terms forward rendering and deferred rendering in your research of modern graphics engines. And, often, you"ll have to choose one to use in your game. But what are they, how do they differ, and which one should you pick?
Deferred Rendering for many lights (Image courtesy of Hannes Nevalainen)
Modern Graphics Pipelines
To begin, we need to understand a little bit about modern, or programmable, graphics pipelines.
Back in the day, we were limited in what the video card graphics pipeline had. We couldn"t change how it drew each pixel, aside from sending in a different texture, and we couldn"t warp vertices once they were on the card. But times have changed, and we now have programmable graphics pipelines . We can now send code to the video card to change how the pixels look, giving them a bumpy appearance with normal maps , and adding reflection (and a great deal of realism).
This code is in the form of geometry , vertex , and fragment shaders , and they essentially change how the video card renders your objects.
Simplified view of a programmable graphics pipeline
Forward Rendering
Forward rendering is the standard, out-of-the-box rendering technique that most engines use. You supply the graphics card the geometry, it projects it and breaks it down into vertices, and then those are transformed and split into fragments, or pixels, that get the final rendering treatment before they are passed onto the screen.
Forward rendering: Geometry shader to vertex shader to fragment Shader
It is fairly linear, and each geometry is passed down the pipe one at a time to produce the final image.
Deferred Rendering
In deferred rendering, as the name implies, the rendering is deferred a little bit until all of the geometries have passed down the pipe; the final image is then produced by applying shading at the end.
Now, why would we do that?
Deferred rendering: Geometry to vertex to fragment shaders. Passed to multiple render targets, then shaded with lighting.
Deferred lighting is a modification of deferred rendering that reduces the size of the G-buffer by using more passes on the scene.
Lighting Performance
Lighting is the main reason for going one route versus the other. In a standard forward rendering pipeline, the lighting calculations have to be performed on every vertex and on every fragment in the visible scene, for every light in the scene.
If you have a scene with 100 geometries, and each geometry has 1,000 vertices, then you might have around 100,000 polygons (a very rough estimate). Video cards can handle this pretty easily. But when those polygons get sent to the fragment shader, that"s where the expensive lighting calculations happen and the real slowdown can occur.
Developers try to push as many lighting calculations into the Vertex shader as possible to reduce the amount of work that the fragment shader has to do.
The expensive lighting calculations have to execute for each visible fragment of every polygon on the screen, regardless if it overlaps or is hidden by another polygon"s fragments. If your screen has a resolution of 1024x768 (which is, by all means, not very high-res) you have nearly 800,000 pixels that need to be rendered. You could easily reach a million fragment operations every frame. Also, many of the fragments will never make it to the screen because they were removed with depth testing, and thus the lighting calculation was wasted on them.
If you have a million of those fragments and suddenly you have to render that scene again for each light, you have jumped to x 1,000,000 fragment operations per frame! Imagine if you had a town full of street lights where each one is a point-light source...
The formula for estimating this forward rendering complexity can be written, in big O notation , as O(num_geometry_fragments * num_lights) . You can see here that the complexity is directly related to the number of geometries and number of lights.
Fragments are potential pixels that will end up on the screen if they do not get culled by the depth test.
Now, some engines optimize this, by cutting out lights that are far away, combining lights, or using light maps (very popular, but static). But if you want dynamic lights and a lot of them, we need a better solution.
Deferred Rendering to the Rescue
Deferred Rendering is a very interesting approach that reduces the object count, and in particular the total fragment count, and performs the lighting calculations on the pixels on the screen, thereby using the resolution size instead of the total fragment count.
The complexity of deferred rendering, in big O notation, is: O(screen_resolution * num_lights) .
You can see that it now doesn"t matter how many objects you have on the screen that determines how many lights you use, so you can happily increase your lighting count. (This doesn"t mean you can have unlimited objects-they still have to be drawn to the buffers to produce the final rendering result.)
Let"s see how it works.
The Guts of Deferred Rendering
Every geometry is rendered, but without light shading, to several screen space buffers using multiple render targets . In particular, the depth, the normals, and the color are all written to separate buffers (images). These buffers are then combined to provide enough information for each light to light the pixels.
Color , Depth , and Normal buffers. (Images by astrofa, via Wikimedia Commons.)
Final lighting (shading) result generated using the three buffers. (Image by astrofa , via Wikimedia Commons.)
By knowing how far away a pixel is, and its normal vector, we can combine the color of that pixel with the light to produce our final render.
Which to Pick?
The short answer is, if you are using many dynamic lights then you should use deferred rendering. However, there are some significant drawbacks:
- This process requires a video card with multiple render targets. Old video cards don"t have this, so it won"t work on them. There is no workaround for this.
- It requires high bandwidth. You"re sending big buffers around and old video cards, again, might not be able to handle this. There is no workaround for this, either.
- You can"t use transparent objects. (Unless you combine deferred rendering with Forward Rendering for just those transparent objects; then you can work around this issue.)
- There"s no anti-aliasing. Well, some engines would have you believe that, but there are solutions to this problem: edge detection , FXAA .
- Only one type of material is allowed, unless you use a modification of deferred rendering called Deferred Lighting .
- Shadows are still dependent on the number of lights, and deferred rendering does not solve anything here.
If you don"t have many lights or want to be able to run on older hardware, then you should stick with forward rendering and replace your many lights with static light maps. The results can still look amazing.
Conclusion
I hope that has shed some light on the subject. Your options are there to solve your rendering problems, but it is very important to choose the right one at the start of your game development to avoid difficult changes later on.
02ΠΠΊΡΠ§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π Π΅Π½Π΄Π΅Ρ (Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³)
Π Π΅Π½Π΄Π΅Ρ (Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³) β ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ· ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π²ΡΡ ΠΌΠ΅ΡΠ½ΡΡ ΠΈΠ»ΠΈ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π·Π°ΡΠ°ΡΡΡΡ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΡΡΡΠ΄Π½ΡΠΌΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΠΎΠΆΠ°ΡΡΡ Π½Π° Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΈΠ»ΠΈ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΡΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈ.
ΠΡΠΎΡΠ΅ΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΡΠ°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΠ°Π·Π½ΡΡ ΡΡΠ΅ΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π±ΡΠ΄Ρ ΡΠΎ ΠΊΠΈΠ½ΠΎΠΈΠ½Π΄ΡΡΡΡΠΈΡ, ΠΈΠ½Π΄ΡΡΡΡΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ ΠΈΠ»ΠΈ ΠΆΠ΅ Π²ΠΈΠ΄Π΅ΠΎΠ±Π»ΠΎΠ³ΠΈΠ½Π³. ΠΠ°ΡΠ°ΡΡΡΡ, ΡΠ΅Π½Π΄Π΅Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΡΠ°ΠΏΠΎΠΌ Π² ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ° ΡΡΠΈΡΠ°Π΅ΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΆΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½Π΅ΡΠ΅Π΄ΠΊΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΎΠΌ Π½Π°Π·ΡΠ²Π°ΡΡ Π½Π΅ ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°, Π° ΡΠΊΠΎΡΠ΅Π΅ ΡΠΆΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΡΠΉ ΡΡΠ°ΠΏ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΡΠ»ΠΎΠ²Π° Β«Π Π΅Π½Π΄Π΅ΡΒ».
Π‘Π»ΠΎΠ²ΠΎ Π Π΅Π½Π΄Π΅Ρ (Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³) β ΡΡΠΎ Π°Π½Π³Π»ΠΈΡΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΡΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ ΡΠ»ΠΎΠ²ΠΎΠΌ βΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ β.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π² 3D?
Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠ΅, ΡΠΎ ΠΈΠΌΠ΅Π΅ΠΌ Π² Π²ΠΈΠ΄Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π² 3D Π³ΡΠ°ΡΠΈΠΊΠ΅. Π‘ΡΠ°Π·Ρ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π² 3D ΡΠ΅Π½Π΄Π΅ΡΠ΅ Π½Π΅ΡΡ ΡΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π·Π°ΡΠ°ΡΡΡΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΠΊΠΈΠ½ΠΎΡΠ΅Π°ΡΡΠ΅ Π½Π°Π΄Π΅Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΎΡΠΊΠΈ. ΠΡΠΈΡΡΠ°Π²ΠΊΠ° β3Dβ Π² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΊΠΎΡΠ΅Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°ΠΌ ΠΎ ΡΠΏΠΎΡΠΎΠ±Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 3-Ρ ΠΌΠ΅ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π΄Π»Ρ 3D ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π² ΠΈΡΠΎΠ³Π΅ ΠΌΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ 2D ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ (Π²ΠΈΠ΄Π΅ΠΎ) ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈΡΡ (ΡΠ΅Π½Π΄Π΅ΡΠ΅Π»ΠΈΡΡ) Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ 3-Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅Π½Ρ.
Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³ β ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠ»Π°Π½Π΅ ΡΡΠ°ΠΏΠΎΠ² Π² ΡΠ°Π±ΠΎΡΠ΅ Ρ 3D Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ. Π§ΡΠΎΠ± ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΡΡΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ Ρ ΡΠ°Π±ΠΎΡΠ°ΠΌΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΎΠ². ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ± ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π»Π° Π²ΠΎ Π²ΡΠ΅ΠΉ ΠΊΡΠ°ΡΠ΅, ΡΠΎΡΠΎΠ³ΡΠ°ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ°ΠΏΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π΅Π½ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ°ΡΡ Π½Π° ΠΏΡΠΈΠ½ΡΠ΅ΡΠ΅. ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΠ°ΠΏΠ°ΠΌΠΈ ΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ΅Π½Π΅Π½Ρ 3d Ρ ΡΠ΄ΠΎΠΆΠ½ΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΡΠ°ΠΏ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅Π½Π΄Π΅ΡΠ° ΠΈ ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°.
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ β ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ°ΠΏΠΎΠ², Π²Π΅Π΄Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΈΠ΄ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠ°. ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅, Π΄Π²ΠΈΠΆΠΎΠΊ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΡΠ΅Π½Π΅ Π² ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ 2D-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ 3d-Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ, ΡΠ΅ΠΊΡΡΡΡ ΠΈ ΡΠ²Π΅ΡΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ ΡΡΠ΅Π½Ρ Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π² 2D ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ Ρ Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΎΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠΉ, ΠΊΡΠ°ΡΠΈΠ²ΠΎΠΉ ΠΈ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°:
Π Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΠΏΠ»Π°Π½Π΅, Π΅ΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΈΠΏΠ° ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°, Π³Π»Π°Π²Π½ΡΠΌΠΈ ΠΎΡΠ»ΠΈΡΠΈΡΠΌΠΈ ΠΊΠΎΡΠΎΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΈ ΡΠΈΠ½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ?
Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°ΡΠ°ΡΡΡΡ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅, Π³Π΄Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΈΡΡΠ²Π°ΡΡΡΡ Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π² Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅ΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ°ΠΊΡΠΎΡΠΎΠΌ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠΈΠΏΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΡΡΠΈΡΡΠ²Π°ΡΡ Π±Π΅Π· Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ° ΠΈ ΡΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΠΈΠ»ΠΈ Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ΅Π½ΠΎΠΉ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ± ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΡΡΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΈΠ³ΡΠ° ΡΠ°Π±ΠΎΡΠ°Π»Π° ΠΏΠ»Π°Π²Π½ΠΎ Π±Π΅Π· ΡΡΠ²ΠΊΠΎΠ² ΠΈ ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, 3D Π΄Π²ΠΈΠΆΠΊΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 20-25 ΠΊΠ°Π΄ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠ»ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π½Π΄Π΅ΡΠ° Π±ΡΠ΄Π΅Ρ Π½ΠΈΠΆΠ΅ 20 ΠΊΠ°Π΄ΡΠΎΠ², ΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄ΠΈΡΠΊΠΎΠΌΡΠΎΡΡ ΠΎΡ ΡΡΠ΅Π½Ρ Π½Π°Π±Π»ΡΠ΄Π°Ρ ΡΡΠ²ΠΊΠΈ ΠΈ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠ»ΡΡΡΡ ΡΠΎΠ»Ρ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Π²Π½ΠΎΠ³ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠ° Π² ΠΈΠ³ΡΠ°Ρ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ΅Π½Π°Ρ ΠΈΠ³ΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ± Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ΅Π½Π΄Π΅ΡΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ»ΠΎΠ²ΠΊΠΈ Π΄Π»Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠ΅Π½Π΄Π΅Ρ Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΏΡΡΠ°ΡΡΡ ΡΠ½ΠΈΠ·ΠΈΡΡ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΡΠ΅ΡΠΎΠ². Π‘ΡΠ΄Π° Π²Ρ ΠΎΠ΄ΠΈΡ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° 3Π΄ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ ΡΠ΅ΠΊΡΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΠΈ ΡΠ΅Π»ΡΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π°ΠΏΠ΅ΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡΡΠ½ΡΠ΅ ΠΊΠ°ΡΡΡ. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈ ΠΏΡΠΎΡΡΠ΅ΡΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠ° Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π»ΠΎΠΆΠΈΡΡΡΡ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ (Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ -GPU), ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ½ΠΈΠ·ΠΈΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Ρ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° (Π¦Π) ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π΅Π³ΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ Π·Π°Π΄Π°Ρ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π½Π΄Π΅Ρ?
Π ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠ΅Π½Π΄Π΅ΡΡ ΠΏΡΠΈΠ±Π΅Π³Π°ΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΡΡΠΎΠΈΡ Π² ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ΅, ΠΈ Π½ΡΠΆΠ΄Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π½Π΅Ρ. ΠΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΡΠ΅Π½Π΄Π΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π² ΠΊΠΈΠ½ΠΎΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ, Π² ΡΠ°Π±ΠΎΡΠ΅ Ρ Π°Π½ΠΈΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΠΌ, Π³Π΄Π΅ Π½ΡΠΆΠ΅Π½ ΡΠΎΡΠΎΡΠ΅Π°Π»ΠΈΠ·ΠΌ ΠΈ ΠΎΡΠ΅Π½Ρ Π²ΡΡΠΎΠΊΠΎΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π Π΅Π½Π΄Π΅ΡΠ° Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π³Π΄Π΅ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»Π°ΡΡ Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠ°ΡΡΡ(GPU) Π ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π»ΠΎΠΆΠΈΡΡΡ Π½Π° ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ(Π¦Π) Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π½Π΄Π΅ΡΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ΄Π΅Ρ, ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
ΠΠ΅ΡΠ΅Π΄ΠΊΠΎ Π±ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π½Π΄Π΅ΡΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°Π΄ΡΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ² ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°ΠΈ 3D Ρ ΡΠ΄ΠΎΠΆΠ½ΠΈΠΊΠ°ΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ±Π΅Π³Π°ΡΡ ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ 3D ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΡΡΠΎΡΠ°ΠΉΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΡΡΡΡΠ½ΡΠ΅ ΠΊΠ°ΡΡΡ Ρ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π ΠΈΡΠΎΠ³Π΅, ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΡΡΡΠ΅ ΠΈ ΡΠΎΡΠΎ-ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½Π΅ΠΉ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΠ΅Π½Π΄Π΅ΡΠΎΠΌ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°.
Π‘Π΅ΠΉΡΠ°Ρ, Π½Π° ΡΡΠ½ΠΊΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π΄Π²ΠΈΠΆΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ, ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΈ ΠΏΡΠΎΡΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ΅Π½Π΄Π΅Ρ Π΄Π²ΠΈΠΆΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ Π² ΠΊΡΡΠΏΠ½ΡΠ΅ 3D ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π». Π‘ΡΠ΅Π΄ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ 3D ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²) Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΎΡΡ ΠΊΠ°ΠΊ:
- 3ds Max;
- Maya;
- Blender;
- Cinema 4d ΠΈ Π΄Ρ.
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΡΠΈΡ 3D ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈΠΌΠ΅ΡΡ ΡΠΆΠ΅ ΠΈΠ΄ΡΡΠΈΠ΅ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ ΡΠ΅Π½Π΄Π΅Ρ Π΄Π²ΠΈΠΆΠΊΠΈ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠ΅Π½Π΄Π΅Ρ-Π΄Π²ΠΈΠΆΠΎΠΊ Mental Ray ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ 3Ds Max. Π’Π°ΠΊΠΆΠ΅, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΠ΅Π½Π΄Π΅Ρ-Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ 3d ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π‘ΡΠ΅Π΄ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ΅Π½Π΄Π΅Ρ Π΄Π²ΠΈΠΆΠΊΠΎΠ² Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ:
- V-ray;
- Mental ray;
- Corona renderer ΠΈ Π΄Ρ.
Π₯ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Ρ ΠΎΡΡ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΡΡΠ΅ΡΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ 3D-ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π²ΡΡΡΠ΅ΡΠΊΠΈ ΠΏΡΡΠ°ΡΡΡΡ ΠΈΠ·Π±Π°Π²ΠΈΡΡ 3D-Ρ ΡΠ΄ΠΎΠΆΠ½ΠΈΠΊΠΎΠ² ΠΎΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΎΠΉ Π»Π΅ΠΆΠ°ΡΠ΅ΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Π½Π΄Π΅Ρ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ½ΠΈ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠ»ΠΎΠ²Π½ΠΎ-ΠΏΡΠΎΡΡΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅Π½Π΄Π΅ΡΠ°, ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΎΡΠ²Π΅ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π°Π±ΠΎΡΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ΅Π½Π΄Π΅Ρ-Π΄Π²ΠΈΠΆΠΊΠΈ ΡΡΡΠΊΠ°Π»ΠΈ ΡΠ»Π°Π²Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ΅ΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ Ρ 3Π΄ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ. Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, βV-rayβ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², ΠΈΠ·-Π·Π° Π½Π°Π»ΠΈΡΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π΄Π»Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΠΉ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ, Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΡΠ΅Π½Π΄Π΅ΡΠ°.
ΠΠ΅ΡΠΎΠ΄Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ΅Π½Π΄Π΅Ρ Π΄Π²ΠΈΠΆΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠ°ΠΊ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, ΡΠ°ΠΊ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ, Π½ΠΎ Π²ΡΠ΅ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΎ Π½Π° ΡΠ²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ .
1. Scanline (ΡΠΊΠ°Π½Π»Π°ΠΉΠ½).
Π‘ΠΊΠ°Π½Π»Π°ΠΉΠ½ ΡΠ΅Π½Π΄Π΅Ρ β Π²ΡΠ±ΠΎΡ ΡΠ΅Ρ , ΠΊΡΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΎΡΠ΄Π°ΡΡ ΡΠΊΠΎΡΠΎΡΡΠΈ, Π° Π½Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Ρ. ΠΠΌΠ΅Π½Π½ΠΎ Π·Π° ΡΡΠ΅Ρ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ, Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΏ ΡΠ΅Π½Π΄Π΅ΡΠ° Π·Π°ΡΠ°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³ΡΠ°Ρ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ΅Π½Π°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎ Π²ΡΡΠΏΠΎΡΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ 3D ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡΠ΅ΡΠ°, Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΏ ΡΠ΅Π½Π΄Π΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΄Π°Π²Π°ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΠΈ ΠΏΠ»Π°Π²Π½ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ ΠΎΡ 30 ΠΊΠ°Π΄ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΈ Π²ΡΡΠ΅.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ:
ΠΠΌΠ΅ΡΡΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Β«ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡΒ», Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Β«scanlineΒ» ΡΠ΅Π½Π΄Π΅ΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΠΈΠ΄ΠΈΠΌΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ Π² 3D Π³ΡΠ°ΡΠΈΠΊΠ΅, ΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Β«ΡΡΠ΄ Π·Π° ΡΡΠ΄ΠΎΠΌΒ», ΡΠΏΠ΅ΡΠ²Π° ΡΠΎΡΡΠΈΡΡΠ΅Ρ Π½ΡΠΆΠ½ΡΠ΅ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠ° ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ ΠΏΠΎ Π²ΡΡΡΠ΅ΠΉ Y ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅, ΡΡΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Π·Π° ΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΄Π° Ρ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΌ ΠΊ ΠΊΠ°ΠΌΠ΅ΡΠ΅. ΠΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΡΠΌΠΈ, ΡΠ΄Π°Π»ΡΡΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΄Π° ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Π΅ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π² ΡΠ°Π±ΠΎΡΡΡ, Π° ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Ρ Π²Π΅ΡΡΠΈΠ½, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² Π·ΠΎΠ½Ρ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΡΡΠ΅ΡΠ°.
2. Raytrace (ΡΠ΅ΠΉΡΡΠ΅ΠΉΡ).
ΠΡΠΎΡ ΡΠΈΠΏ ΡΠ΅Π½Π΄Π΅ΡΠ° ΡΠΎΠ·Π΄Π°Π½ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Ρ ΠΎΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈ Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ. Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ Ρ Π»ΡΠ±ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠΎΡΠΎΡΠ΅Π°Π»ΠΈΠ·ΠΌΠ°, ΠΈ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎ Π½Π΅ ΡΠΏΡΠΎΡΡΠ°. ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΠΉΡΡΠ΅ΠΉΡ-ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠΎΡΡΡΡΠ°ΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΠ΅ ΠΊΠ°Π΄ΡΡ ΠΏΡΠΈΡΠΎΠ΄Ρ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡΡ ΠΎΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΡΠ΄Π°ΡΡΡΡ Π½Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅, Π½Π΅ΡΠ΅Π΄ΠΊΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ΠΉΡΡΠ΅ΠΉΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² Π² CG ΡΡΠ΅ΠΉΠ»Π΅ΡΠ°Ρ ΠΈΠ»ΠΈ ΠΊΠΈΠ½ΠΎ.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π² ΡΠ³ΠΎΠ΄Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Ρ, Π΄Π°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΈ ΠΏΠΎΠΊΠ° ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΈΠ°Π»-ΡΠ°ΠΉΠΌ Π³ΡΠ°ΡΠΈΠΊΠ΅.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ:
ΠΠ΄Π΅Ρ Raytrace Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π½Π° ΡΡΠ»ΠΎΠ²Π½ΠΎΠΌ ΡΠΊΡΠ°Π½Π΅, ΠΎΡ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΏΡΠΎΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»ΡΡΠ΅ΠΉ Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ°ΡΠ΅ΠΌ Π»ΡΡ ΡΠ²Π΅ΡΠ° ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΡΠΊΠΎΠΊΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²Ρ ΠΎΠ΄ΠΈΡΡ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π»ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΡΡΠ΅Π½Ρ. Π¦Π²Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠ³ΠΎ Π»ΡΡΠ° Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Π² Π΅Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΠΌ ΠΏΡΡΠΈ.
ΠΠ΅ΡΠΎΠ΄ Raycasting.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Β«Π±ΡΠΎΡΠ°Π½ΠΈΡΒ» Π»ΡΡΠ΅ΠΉ ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ Ρ Π³Π»Π°Π· Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»Ρ, ΡΠΊΠ²ΠΎΠ·Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠΊΡΠ°Π½Π° ΠΈ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π³ΡΠ°ΠΆΠ΄Π°Π΅Ρ ΠΏΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ Π»ΡΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π² ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π΅Π³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π½Ρ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½ΡΠΆΠ½ΡΠΉ ΡΠ²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Ρ.
ΠΠ΅ΡΠ΅Π΄ΠΊΠΎ Π±ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Β«ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π»ΡΡΠ΅ΠΉΒ» (raytrace) ΠΏΡΡΠ°ΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Β«Π±ΡΠΎΡΠ°Π½ΠΈΡ Π»ΡΡΠ΅ΠΉΒ» (raycasting). ΠΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Β«raycastingΒ» (ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠΎΡΠ°Π½ΠΈΡ Π»ΡΡΠ°) ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠΌ Β«raytraceΒ» ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠ±ΠΈΠ²ΡΠΈΡ ΡΡ ΠΈΠ»ΠΈ Π·Π°Π»ΠΎΠΌΠ»Π΅Π½Π½ΡΡ Π»ΡΡΠ΅ΠΉ, Π° ΠΏΡΠΎΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ Π½Π° ΠΏΡΡΠΈ Π»ΡΡΠ°.
3. Radiosity.
ΠΠΌΠ΅ΡΡΠΎ Β«ΠΌΠ΅ΡΠΎΠ΄Π° ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π»ΡΡΠ΅ΠΉΒ», Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΏΡΠΎΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° Β«ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡΒ». ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ βradiosityβ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎ ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²Π΅Ρ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΏΡΡΠ΅ΠΌ ΡΡΠ΅ΡΠ° Π½Π΅ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ (ΠΎΡΡΠΊΠΎΠΊ ΡΠ°ΡΡΠ΅ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°).
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌΠΈ Β«radiosityΒ» ΡΠ²Π»ΡΡΡΡΡ ΠΌΡΠ³ΠΊΠΈΠ΅ Π³ΡΠ°Π΄ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅Π½ΠΈ ΠΈ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, ΠΈΠ΄ΡΡΠΈΠ΅ ΠΎΡ ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Ρ ΡΡΠΊΠΈΠΌ ΠΎΠΊΡΠ°ΡΠΎΠΌ.
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° Radiosity ΠΈ Raytrace Π²ΠΌΠ΅ΡΡΠ΅ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΡΡΠΈΡ ΠΈ ΡΠΎΡΠΎΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΎΠ².
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π²ΠΈΠ΄Π΅ΠΎ?
ΠΠ½ΠΎΠ³Π΄Π°, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Β«ΡΠ΅Π½Π΄Π΅ΡΠΈΡΡΒ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ 3D Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ, Π½ΠΎ ΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Π°ΠΌΠΈ. ΠΡΠΎΡΠ΅ΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π²ΠΈΠ΄Π΅ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΈΠ΄Π΅ΠΎΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π·Π°ΠΊΠΎΠ½ΡΠΈΠ» ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»ΠΎΠΌ, Π²ΡΡΡΠ°Π²ΠΈΠ» Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π΅ΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π·Π²ΡΠΊΠΎΠ²ΡΠ΅ Π΄ΠΎΡΠΎΠΆΠΊΠΈ ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ. ΠΠΎ ΡΡΡΠΈ, Π²ΡΠ΅ ΡΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ, ΡΡΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠ΅ Π² ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ». ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π½Π°ΠΏΠΈΡΠ°Π» ΠΊΠΎΠ΄, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠ΅ ΡΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ, ΡΡΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ΄ Π² ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ°ΠΊ ΠΈ Ρ 3D Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ°, ΡΠ°ΠΊ ΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΈΠ΄Π΅ΠΎΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΈΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈ Π±Π΅Π· ΡΡΠ°ΡΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠ΅ ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎ Π·Π°Π΄Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ°ΡΡΠΎΠΌ.
Π‘ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π²ΠΈΠ΄Π΅ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅. Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΎΡΡΠ΅ΡΠ° Π»ΠΎΠΆΠΈΡΡΡΡ Π½Π° ΠΌΠΎΡΠ½ΠΎΡΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΎΡ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΠΈΠ΄Π΅ΠΎ-ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°.
ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ: , / / ΠΎΡΠΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΡΠ΅Π½Π΅Π½ΠΈΠ΅ , ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ (Π°Π½Π³Π». deferred shading ) - ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ° (ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ°) Π² ΡΡΡΡ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΡΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π½Ρ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΡΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΠΌΠ΅Π½ΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ Π±ΡΡΠ΅ΡΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΏΠΎΡΠΎΠΌ. ΠΠ»Π°Π²Π½ΡΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΡΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΠΉΠ΄Π΅ΡΠ° Π²ΠΎ ΡΡΠ΅ΠΉΠΌΠ±ΡΡΠ΅Ρ ΡΠ²Π΅ΡΠ°. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°Ρ ΠΏΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ΅Π»ΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° (Π°Π½Π³Π». multiple render targets - MRT ) Π΄Π»Ρ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΡ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΉ Π²Π΅ΡΡΠΈΠ½. ΠΠ±ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π±ΡΡΠ΅ΡΡ, ΠΎΠ½ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ (ΠΎΠ±ΡΡΠ½ΠΎ ΠΊΠ°ΠΊ Π²Π²ΠΎΠ΄Π½Π°Ρ ΡΠ΅ΠΊΡΡΡΡΠ°) ΠΈΠ· ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ) ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΈ ΠΏΠΎΠ»ΠΎΡΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΡΡΠ΅Π½Ρ, ΡΠΌΠ΅Π½ΡΡΠ°ΡΡΡΡ Π΄ΠΎ Π²ΠΈΠ΄ΠΈΠΌΡΡ ΡΠ°ΡΡΠ΅ΠΉ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΌΠ΅Π½ΡΡΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠ²Π΅ΡΠ°Π΅ΠΌΠΎΠΉ ΡΡΠ΅Π½Ρ.
ΠΠ΅ΡΠ²ΠΈΡΠ½ΡΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Β«Π³ΡΡΠ±ΡΠΌΒ» ΠΈ Β«ΡΠ°Π½Π½ΠΈΠΌΒ» ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Z-Π±ΡΡΠ΅ΡΠ°, Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π΅ΡΡ Π½Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Ρ Π² Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ. ΠΡΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΌΠΎΠ³ΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ, Π»ΡΠ³ΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ ΠΈ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, Ρ ΠΎΡΡ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΉ ΠΈ Π΄Π»Ρ Z-Π±ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ; Π²ΡΡ ΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°Π΄Π΅ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΡΡΠ΅Π½Ρ.
ΠΡΡΠ³ΠΈΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π²Π°ΠΆΠ½ΡΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡΠΎ ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ°Π΄ΠΈΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»Π΅Π½Π° ΠΎΡ ΡΡΠ°Π΄ΠΈΠΈ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ, ΡΠΎ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΉ Π°Π½ΡΠΈ-Π°Π»ΠΈΠ°ΡΠΈΠ½Π³ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ. Π₯ΠΎΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΎΡ ΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΏΡΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠ²ΠΎΠΉΡΡΠ² (Π΄ΠΈΡΡΡΠ·Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΊΠ°ΡΡΠ° Π²ΡΡΠΎΡ), ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅, ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ. ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π³ΡΠ°Π½ΠΈΡ (en:edge detection) ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΡΡΠΈΡ ΠΊ Π³ΡΠ°Π½ΡΠΌ (Π³ΡΠ°Π½ΠΈΡΠ°ΠΌ).
ΠΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π²ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΈΠ³ΡΠ°Ρ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΡΠ²Π΅ΡΠ° ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Β«Advanced Technology GroupΒ», ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Sony Computer Entertainment, ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π»Π° ΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ. PhyreEngine, Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Sony Computer Entertainment, ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΡΠ΅Π½Π΅Π½ΠΈΡ. ΠΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈΠ³Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π»Π° Sony Computer Entertainment, ΡΠ²Π»ΡΡΡΡΡ Killzone 2 ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Guerrilla Games, LittleBigPlanet ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Media Molecule ΠΈ inFamous ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Sucker Punch Productions. Π ΠΈΠ³ΡΠ°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³, Π½ΠΎ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΊΠΎΡΠΎΡΡΡ Sony Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π»Π° ΡΡΠ°ΡΡΠΈΠ΅, ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅ΡΠΈΡ ΠΈΠ³Ρ S.T.A.L.K.E.R. ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ GSC Game World, Dead Space ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Electronic Arts ΠΈ Tabula Rasa ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ NCSoft. Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΡΠ΅Π½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΈΠ³ΡΠΎΠ²ΠΎΠΌ Π΄Π²ΠΈΠΆΠΊΠ΅ CryEngine 3 ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Crytek.
ΠΡΡΠΎΡΠΈΡ
ΠΠ΄Π΅Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΡΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΠ°ΠΉΠΊΠ»ΠΎΠΌ ΠΠΈΡΠΈΠ½Π³ΠΎΠΌ (en:Michael Deering) ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ Π² ΡΠ°Π±ΠΎΡΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«The triangle processor and normal vector shader: a VLSI system for high performance graphicsΒ», ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² 1988 Π³ΠΎΠ΄Ρ. Π₯ΠΎΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»ΠΎΠ²ΠΎ Β«ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉΒ», ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ ΡΠ°ΠΌ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ Π½Π°ΡΠ»Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΠ΅ ΠΈΠ³ΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
- NVIDIA SDK 9.51 - Featured Code Samples - download.nvidia.com/developer/SDK/Individual_Samples/featured_samples.html. NVIDIA (2007-01-17).
- Deferred shading tutorial - www710.univ-lyon1.fr/~jciehl/Public/educ/GAMA/2007/Deferred_Shading_Tutorial_SBGAMES2005.pdf. Pontifical Catholic University of Rio de Janeiro.
- Dead Space by Electronic Arts - nzone.com/object/nzone_deadspace_feature.html. NVIDIA.
- Deferred shading in Tabula Rasa - developer.nvidia.com/GPUGems3/gpugems3_ch19.html. NVIDIA.
- Deering, Michael; Stephanie Winner, Bic Schediwy, Chris Duffy, Neil Hunt. Β«The triangle processor and normal vector shader: a VLSI system for high performance graphicsΒ». ACM SIGGRAPH Computer Graphics 22 (4): 21β30.
- Deferred Shading - download.nvidia.com/developer/presentations/2004/6800_Leagues/6800_Leagues_Deferred_Shading.pdf (PDF). NVIDIA.
- Klint, Josh. Β«Deferred Rendering in Leadwerks Engine - www.leadwerks.com/files/Deferred_Rendering_in_Leadwerks_Engine.pdfΒ».
ΠΠ°Π½Π½ΡΠΉ ΡΠ΅ΡΠ΅ΡΠ°Ρ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ°ΡΡΠΈ ΠΈΠ· ΡΡΡΡΠΊΠΎΠΉ ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ . Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° 19.07.11 17:46:16
ΠΠΎΡ ΠΎΠΆΠΈΠ΅ ΡΠ΅ΡΠ΅ΡΠ°ΡΡ:
Β«Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³Β» β Π²ΡΠ΅ ΡΠ°ΡΠ΅ ΠΌΡ Π²ΡΡΡΠ΅ΡΠ°Π΅ΠΌΡΡ Ρ ΡΡΠΈΠΌ Π½ΠΎΠ²ΡΠΌ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ. ΠΠ³ΡΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ, Ρ Π½Π΅ ΡΠ°ΠΊΠΈΡ Π΄Π°Π²Π½ΠΈΡ ΠΏΠΎΡ, ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΈ β Π²ΡΡΠ΄Ρ ΠΌΡ Π²ΡΡΡΠ΅ΡΠ°Π΅ΠΌΡΡ Ρ Π½ΠΈΠΌ. Π’Π°ΠΊ ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³?
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³?
Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³ 3D ΠΌΠΎΠ΄Π΅Π»ΠΈ
Π ΡΠΈΡΠΎΠΊΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΡΠ»ΠΎΠ²Π°: Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³ β ΡΡΠΎ ΡΠ΅ΡΠΌΠΈΠ½ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΠ»ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π ΡΠ°ΠΊΠΎΠ΅ ΡΡΡΠ°Π½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ ΠΏΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π» Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΠΈΠ² Π½Π°ΠΌ ΠΆΠΈΠ·Π½Ρ, Π²Π΅Π΄Ρ Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ Π½Π°Π·ΡΠ²Π°Π»ΠΈ Β«renderingΒ» Β«Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉΒ», ΡΡΠΎ ΡΠ°ΠΊ ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΡΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ, Π²ΡΠ΅ Π±ΡΠ»ΠΎ Π±Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅ΠΉ.
ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΠΎΠ΄ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ΠΎΠΌ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π²Π²ΠΈΠ΄Ρ ΡΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅ΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Ρ Π²Π°Ρ Π½Π° ΡΠΎΠ±ΠΎΡΡ, ΠΏΠΎΠ΄ Π΄Π°Π½Π½ΡΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ Π½Π°Π²ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ 3D Π³ΡΠ°ΡΠΈΠΊΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΠ°ΠΏ Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ.
ΠΡΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ΠΎΠΌ?
ΠΡΠ΅ ΡΡΠ°ΠΏΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ 3D ΠΌΠΎΠ΄Π΅Π»ΠΈ
Π‘Π°ΠΌΠ°Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡ ΡΡΠ΅Π±ΡΡΡΠ°Ρ ΠΎΡ Π²Π°Ρ Π·Π½Π°Π½ΠΈΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΡΡΠΎ Β«3D Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΒ». Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΡΠ΅: ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π±Π°Π½Π΅ΡΠ° Π΄ΠΎ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΈΠ³Ρ.
Π, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, 3D Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ΠΎΠΌ, Π½ΠΎ ΠΈ Π²ΡΠ΅ΠΌΠΈ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΡΠ°ΠΏΠ°ΠΌΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ 3D Π³ΡΠ°ΡΠΈΠΊΠΈ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ΅ΠΊΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅, Π°Π½ΠΈΠΌΠ°ΡΠΈΡ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ β Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΠ΄Π½Π°ΠΊΠΎ, 3D Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΈ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠΎΡΠΌΡΠ»Π°ΠΌΠΈ, ΠΎΠΏΠΈΡΡΠ²Π°Ρ ΠΈΡ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ΅ ΡΡΠΎ Π·Π° Π½Π΅Π³ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ (3D Max, Maya, Cinema 4D, Zbrush, Blender ΠΈ Ρ.Π΄.) ΠΈ ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² (ODE, Newton, PhysX, Bullet ΠΈ Ρ.ΠΏ.).
ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΡΠ΅Π΄ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ 3D Π³ΡΠ°ΡΠΈΠΊΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Β«ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈΒ», Π½ΠΎ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π»ΡΡ, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΈΠ³ΡΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ Β«TorchlightΒ» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ OGRE.
ΠΡ, Π° Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ΅Π½ Π½Π°ΡΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π΄Π΅Π»Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½ΠΎ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«ΡΠ΅Π½Π΄Π΅Ρ ΡΠ΅ΡΠΌΠ°Β». Π ΡΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅ ΡΡΠΎ Π½Π΅ ΠΈΠ· Π΄Π΅ΡΠ΅Π²ΡΡ , Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° Π½ΠΈΠ·ΠΊΠΈΠ΅ ΡΠ΅Π½Ρ ΡΠ΅Π½Π΄Π΅Ρ ΡΠ΅ΡΠΌΡ ΡΠ΅Π½Π° ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π²Π½ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ β 3,9 ΡΠ΅Π½ΡΠΎΠ² / ΠΠΡ-ΡΠ°Ρ.
ΠΠ° ΡΡΠΎΠΌ ΡΠΊΡΠΊΡΡΡ ΠΏΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Ρ ΠΏΠΎΠ΄ΠΎΡΡΠ» ΠΊ ΠΊΠΎΠ½ΡΡ, ΠΈ Π΅ΡΠ»ΠΈ Π²Π°Ρ ΡΡΠΎ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ β Π·Π°Π½ΠΈΠΌΠ°ΠΉΡΠ΅ΡΡ, Π²Π΅Π΄Ρ Π·Π°ΡΠΏΠ»Π°ΡΡ Ρ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ 3D Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ° Π½Π΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠ΅, Π° ΠΈΠ³ΡΠΎΠ²Π°Ρ ΠΈΠ½Π΄ΡΡΡΡΠΈΡ ΡΡΠΎ ΡΠ° ΠΎΡΡΠ°ΡΠ»Ρ, ΡΡΠΎ Π²ΡΡΠ΄ Π»ΠΈ ΠΊΠΎΠ³Π΄Π°-ΡΠΎ ΡΡΠ°Π½Π΅Ρ Π½Π΅Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΠΎΠΉ.
Π Π΅ΠΉΡΠΈΠ½Π³: 8.9 ΠΈΠ· 10 (13 Π³ΠΎΠ»ΠΎΡΠ°)