Intel ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° oidn 2.0 (Open Image Denoise), ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡ ΠΎΡ ΡΠΈΠ»ΡΡΠΈ Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΡΡΠΌ ΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠ΅Π½Π΄ΠΈΡΠ°Π½Π΅ Ρ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π»ΡΡΠΈ. Open Image Denoise ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΊΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡ, oneAPI Rendering Toolkit, Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π° Π½Π°ΡΡΠ½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ (SDVis (ΡΠΎΡΡΡΠ΅ΡΠ½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ), Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π»ΡΡΠΈ Embree, ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΡΠΎΡΠΎΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ GLuRay, ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°ΡΠ° OSPRay ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π»ΡΡΠΈ ΠΈ ΡΠΎΡΡΡΠ΅ΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠ°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ OpenSWR ΠΠΎΠ΄ΡΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C++ ΠΈ Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° Apache 2.0.
Π¦Π΅Π»ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ Π²ΠΈΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ΠΈ, Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΈ Π»Π΅ΡΠ½ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΡΡΠΌΠ°, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π»ΡΡΠΈ. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΡΠΈΠ»ΡΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΡΡΠΊΡΠ°ΡΠ΅Π½ ΡΠΈΠΊΡΠ» Π½Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π»ΡΡΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΊΡΠ°ΠΉΠ½ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ, ΡΡΠ°Π²Π½ΠΈΠΌΠΎ Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΏΠΎ-ΡΠΊΡΠΏ ΠΈ ΠΎΡΠ½Π΅ΠΌΠ°Ρ Π²ΡΠ΅ΠΌΠ΅ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π΄Π΅ΡΠ°ΠΉΠ»Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅.
Open Image Denoise Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° ΡΠ»ΡΡΠ°Π΅Π½ ΡΡΠΌ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π»ΡΡΠΈ Π½Π° Monte Carlo RT (MCRT). ΠΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ Π²ΠΈΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π² ΡΠ°ΠΊΠΈΠ²Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Π»ΡΡΠΈ, Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ Π² ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΠ»ΡΡΠ°Π΅Π½ ΡΡΠΌ.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Open Image Denoise Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡΠ΅ Π±ΡΠΎΡ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠΈ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠΈΠΊΡΠ΅Π» Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΡΡΠ΄ΡΠΊΠ°. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΡΠΌΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ, Π½ΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° Π³ΠΎ Π΄ΠΎΠ²Π΅Π΄Π΅ΡΠ΅ Π΄ΠΎ ΠΏΡΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π±ΡΡΠ·ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠΌΠ°. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΎΡΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄ΠΎΡΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π»ΡΡΠΈ Ρ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΡΡΠΌΠ° Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΎΡ Π»Π°ΠΏΡΠΎΠΏΠΈ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠΈ Π΄ΠΎ Π²ΡΠ·Π»ΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠΈ. ΠΠ½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ 64-Π±ΠΈΡΠΎΠ²ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Intel Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° SSE4, AVX2, AVX-512 ΠΈ XMX (Xe Matrix Extensions), ΡΠΈΠΏΠΎΠ²Π΅ Apple Silicon ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Intel Xe (ΡΠ΅ΡΠΈΠΈ Arc, Flex ΠΈ Max), NVIDIA (Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Volta, Turing, Ampere, Ada Lovelace ΠΈ Hopper Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ) ΠΈ AMD (Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° RDNA2 (Navi 21) ΠΈ RDNA3 (Navi 3x) Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ). ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° SSE4.1 Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½Π° ΠΊΠ°ΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½Π΅.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Open Image Denoise 2.0:
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠΌΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° GPU. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° ΡΠ°Π·ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΡΠΌ ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° GPU Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ SYCL, CUDA ΠΈ HIP, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Ρ Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Intel Xe, AMD RDNA2, AMD RDNA3, NVIDIA Volta, NVIDIA Turing, NVIDIA Ampere, NVIDIA Ada Lovelace ΠΈ NVIDIA Hopper Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² API Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π±ΡΡΠ΅ΡΠΈ, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅ ΡΠΈΠΏ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅, Π΄Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ Ρ ΠΎΡΡΠ° ΠΈ Π΄Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°ΡΠ΅ Π²ΡΠ½ΡΠ½ΠΈ Π±ΡΡΠ΅ΡΠΈ ΠΎΡ Π³ΡΠ°ΡΠΈΡΠ½ΠΈ API ΠΊΠ°ΡΠΎ Vulkan ΠΈ Direct3D 12.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ (ΡΡΠ½ΠΊΡΠΈΠΈ oidnExecuteFilterAsync ΠΈ oidnSyncDevice).
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ API Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π΄ΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π½Π°Π»ΠΈΡΠ½ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΡΠ½ΠΊΡΠΈΡ oidnNewDeviceByID Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠ°ΡΠΎ UUID ΠΈΠ»ΠΈ PCI Π°Π΄ΡΠ΅Ρ.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡ ΡΡΡ SYCL, CUDA ΠΈ HIP.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ (systemMemorySupported, managedMemorySupported, externalMemoryTypes).
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π½Π° ΡΠΈΠ»ΡΡΠΈΡΠ΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru