OptiX
| ๊ฐ๋ฐ์ | ์๋น๋์ |
|---|---|
| ์์ ํ ๋ฒ์ | 9.0
/ 2025๋
2์ |
| ํ๋ก๊ทธ๋๋ฐ ์ธ์ด | C / C++ |
| ์ด์ ์ฒด์ | ๋ฆฌ๋ ์ค, OS X, ์๋์ฐ 7 ์ด์ |
| ์ข ๋ฅ | ๊ด์ ์ถ์ |
| ๋ผ์ด์ ์ค | ์ฌ์ ์ํํธ์จ์ด, ์์ ์ฉ ๋ฌด๋ฃ |
| ์น์ฌ์ดํธ | Nvidia OptiX ๊ฐ๋ฐ์ ์ฌ์ดํธ |
OptiX๋ 2009๋ ๊ฒฝ ์ฒ์ ๊ฐ๋ฐ๋ ๊ด์ ์ถ์ API์ด๋ค.[1] ๊ณ์ฐ์ CUDA์ ํจ๊ป ๋์ ๋ ์ ์์ค ๋๋ ๊ณ ์์ค API๋ฅผ ํตํด GPU๋ก ์คํ๋ก๋๋๋ค. CUDA๋ ์๋น๋์์ ๊ทธ๋ํฝ ์ ํ์์๋ง ์ฌ์ฉํ ์ ์๋ค. ์๋น๋์ OptiX๋ ์๋น๋์ ๊ฒ์์์ค์ ์ผ๋ถ์ด๋ค. OptiX๋ ๊ณ ์์ค ๋๋ "์๊ณ ๋ฆฌ์ฆ ์ค์ฌ" API๋ก, ๊ด์ ์ถ์ ์์ฒด๋ง์ด ์๋๋ผ ๊ด์ ์ถ์ ์ด ํฌํจ๋ ์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ๋๋ก ์ค๊ณ๋์๋ค. ์ด๋ OptiX ์์ง์ด ์ ํ๋ฆฌ์ผ์ด์ ์ธก ๋ณ๊ฒฝ ์์ด ๋ ํฐ ์๊ณ ๋ฆฌ์ฆ์ ๋งค์ฐ ์ ์ฐํ๊ฒ ์คํํ ์ ์๋๋ก ํ๊ธฐ ์ํจ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋น๋์ค ๊ฒ์์ ๋ ๋๋ง์ ๊ด์ ์ถ์ ๋์ ๋์คํฐํ๋ฅผ ์ฌ์ฉํ๋ค.
์๋น๋์์ ๋ฐ๋ฅด๋ฉด, OptiX๋ "์ ์ฐจ์ ์ ์ ๋ฐ ํ์ด๋ธ๋ฆฌ๋ ๋ ๋๋ง ๋ฐฉ์"์ ์ถฉ๋ถํ ์ ์ฐํ๋๋ก ์ค๊ณ๋์๋ค. ์ปดํจํฐ ๊ทธ๋ํฝ์ค ๋ ๋๋ง ์ธ์๋ OptiX๋ ๊ดํ ๋ฐ ์ํฅ ์ค๊ณ, ๋ฐฉ์ฌ์ ๋ฐ ์ ์๊ธฐํ ์ฐ๊ตฌ,[2] ์ธ๊ณต์ง๋ฅ ์ฟผ๋ฆฌ ๋ฐ ์ถฉ๋ ๋ถ์์๋ ๋์์ด ๋๋ค.[3]
OptiX๋ฅผ ์ฌ์ฉํ ๊ด์ ์ถ์
[ํธ์ง]
OptiX๋ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ์ง์นจ(CUDA ์ปค๋ ํ์)์ ์ฌ์ฉํ์ฌ ํน์ ์ํฉ์์ ๊ด์ ์ด ์์ ํ ์ถ์ ํ๋ก์ธ์ค๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๊ธฐ ์ํด ๋ฌด์์ ํด์ผ ํ๋์ง ์๋ํ๋ค.[4]
๊ด์ (๋๋ ๋ค๋ฅธ ์ข ๋ฅ์ ๊ด์ )์ ๋ค๋ฅธ ํ๋ฉด์ด ์๋ ํน์ ํ๋ฉด์ ๋ถ๋ชํ ๋ ๋ค๋ฅธ ๋์์ ํ ์ ์์ผ๋ฉฐ, OptiX๋ ์ฌ์ฉ์ ์ ๊ณต ํ๋ก๊ทธ๋จ์ผ๋ก ์ด๋ฌํ ํํธ ์กฐ๊ฑด์ ์ฌ์ฉ์ ์ง์ ํ ์ ์๋๋ก ํ๋ค. ์ด ํ๋ก๊ทธ๋จ์ CUDA C ๋๋ ์ง์ PTX ์ฝ๋๋ก ์์ฑ๋๋ฉฐ OptiX ์์ง์์ ์ฌ์ฉํ ๋ ํจ๊ป ์ฐ๊ฒฐ๋๋ค.
OptiX๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์์คํ ์ CUDA ์ง์ GPU๊ฐ ์์ด์ผ ํ๋ฉฐ CUDA ํดํท์ด ์ค์น๋์ด ์์ด์ผ ํ๋ค.
๊ด์ ์ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ OptiX ์์ง์ ์ฌ์ฉํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ๋จ๊ณ๋ฅผ ํฌํจํ๋ค.
- ๊ด์ ์์ฑ ํ๋ก๊ทธ๋จ(์: ๊ด์ ์ ํํํ๊ฒ, ์๊ทผ๋ฒ ๋ฐฉ์์ผ๋ก ๋๋ ๊ธฐ์ธ๊ธฐ ํ๋์ฒ๋ผ ๋ฐ์ฌ๋ ์ ์๋ค), ๊ด์ ๋๋ฝ(๊ด์ ์ด ์ด๋ค ๊ฐ์ฒด์๋ ๊ต์ฐจํ์ง ์์ ๋), ์ ํ์ ์์ธ ํ๋ก๊ทธ๋จ(์ด๋ค ์ด์ ๋ก ๊ด์ ์ด ๋ฐ์ฌ๋ ์ ์์ ๋), ๊ฒฝ๊ณ ์์ ํ๋ก๊ทธ๋จ(์ฃผ์ด์ง ๊ฐ์ฒด์ ๋ํ ๊ฒฝ๊ณ ์์ ๊ต์ฐจ ํ ์คํธ๋ฅผ ์ ๊ณตํ๋ ํ๋ก๊ทธ๋จ) ๋ฐ ๊ต์ฐจ ํ๋ก๊ทธ๋จ์ ๋ํ ํ๋ก๊ทธ๋จ ์ ์.
์ด๋ฌํ ํ๋ก๊ทธ๋จ์ ๋ํ ๋ช ๊ฐ์ง ์๋ ํ๋ก๊ทธ๋จ์ SDK์ ํจ๊ป ์ ๊ณต๋๋ค.
// Sample code using OptiX APIs //
/* Ray generation program */
rtProgramCreateFromPTXFile( *context, path_to_ptx, "pinhole_camera", &ray_gen_program );
rtContextSetRayGenerationProgram( *context, 0, ray_gen_program );
/* Miss program */
rtProgramCreateFromPTXFile( *context, path_to_ptx, "miss", &miss_program );
rtContextSetMissProgram( *context, 0, miss_program );
/* Bounding box and intersection program */
rtProgramCreateFromPTXFile( context, path_to_ptx, "box_bounds", &box_bounding_box_program );
rtGeometrySetBoundingBoxProgram( *box, box_bounding_box_program );
rtProgramCreateFromPTXFile( context, path_to_ptx, "box_intersect", &box_intersection_program );
rtGeometrySetIntersectionProgram( *box, box_intersection_program );
๊ฒฝ๊ณ ์์ ํ๋ก๊ทธ๋จ์ kd-ํธ๋ฆฌ ๋๋ ๊ฒฝ๊ณ ๋ณผ๋ฅจ ๊ณ์ธต๊ณผ ๊ฐ์ ๊ฐ์ ๊ตฌ์กฐ ๋ด์์ ๊ด์ ์ถ์ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฒฝ๊ณ ๋ณผ๋ฅจ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ์ฌ๋ฃ ํํธ ๋ฐ ๊ฐ์ฅ ๊ฐ๊น์ด ํํธ ํ๋ก๊ทธ๋จ ์์ฑ: ์ด ๋ ํ๋ก๊ทธ๋จ์ ๊ด์ ์ด ์ฒซ ๋ฒ์งธ ๊ต์ฐจ(๊ฐ์ฅ ๊ฐ๊น์ด ํํธ) ๋๋ ์ผ๋ฐ์ ์ธ ๊ต์ฐจ(๋ชจ๋ ํํธ)๋ฅผ ๋ง๋ ๋์ ๊ด์ ๋์์ ๊ฒฐ์ ํ๋ค.
// Sample code using OptiX APIs //
rtProgramCreateFromPTXFile( context, path_to_ptx, "closest_hit_radiance", &closest_hit_program );
rtProgramCreateFromPTXFile( context, path_to_ptx, "any_hit_shadow", &any_hit_program );
/* Associate closest hit and any hit program with a material */
rtMaterialCreate( context, material );
rtMaterialSetClosestHitProgram( *material, 0, closest_hit_program );
rtMaterialSetAnyHitProgram( *material, 1, any_hit_program );
- ์ ๊ณต๋ ํ๋ก๊ทธ๋จ ๋ด์์ ์ฌ์ฉ๋ ์ ์๋ ๋ฒํผ, ๋ณ์ ์ ์. ๋ฒํผ๋ ํธ์คํธ ์ฝ๋(์ฆ, ์ผ๋ฐ CPU ์ฝ๋)๊ฐ ์ฅ์น ์ฝ๋(์ฆ, GPU์์ ์คํ๋๋ ์ฝ๋)์ ํต์ ํ๊ณ ๊ทธ ๋ฐ๋๋ก๋ ํต์ ํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค. ๋ณ์๋ OptiX๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ๋ฒํผ๋ฅผ ํต์ ํ๊ณ ์ฌ์ฉํ๋ ๋ด๋ถ ๋ฐฉ์์ด๋ค.
- ๊ธฐํํ์ ๊ฐ์ฒด, ๊ทธ๋ฃน, ์ ๋ ํฐ ๋ฐ ๊ธฐํ ๋ ธ๋์ OptiX ๊ณ์ธต์ ์ ์ํ์ฌ ๋ ๋๋ง๋ ์ ์ฒด ์ฅ๋ฉด์ ํธ๋ฆฌ ๊ทธ๋ํ๋ฅผ ์์ฑํ๋ค.

๋ณต์กํ ์ฅ๋ฉด์ ๋ ๋๋งํ๊ฑฐ๋ ์ด๋ค ๊ด์ ์ ๋ํด ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ถ์ ํ๊ธฐ ์ํด OptiX๋ ์๋น๋์ CUDA ํ๋ซํผ์ ํ์ฉํ์ฌ GPGPU ์ปดํจํ ์ ํ์ฉํ๋ค. ๊ด์ ๋ฐ์ฌ ๋ฐ ๋์ ์ค์ ํ๋ก์ธ์ค๋ ๊ณ ๋๋ก ์ฌ์ฉ์ ์ ์๊ฐ ๊ฐ๋ฅํ๋ฏ๋ก OptiX๋ ๊ด์ ์ถ์ ์ธ์๋ ๋ค์ํ ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋ ์ ์๋ค.
OptiX Prime
[ํธ์ง]OptiX 3.5.0๋ถํฐ OptiX Prime์ด๋ผ๋ ๋ ๋ฒ์งธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฒ๋ค์ ์ถ๊ฐ๋์๋๋ฐ, ์ด๋ ๊ด์ ์ถ์ ์ ์ํ ๋น ๋ฅด๊ณ ์ ์์ค์ API๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค. ์ฆ, ๊ฐ์ ๊ตฌ์กฐ ๊ตฌ์ถ, ๊ฐ์ ๊ตฌ์กฐ ํ์ ๋ฐ ๊ด์ -์ผ๊ฐํ ๊ต์ฐจ๋ฅผ ํฌํจํ๋ค. Prime์ ๋ํ ์์คํ ์์ ํธํ๋๋ GPU๋ฅผ ์ฐพ์ ์ ์์ ๋ CPU ํด๋ฐฑ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. OptiX์ ๋ฌ๋ฆฌ Prime์ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅํ API๊ฐ ์๋๋ฏ๋ก ์ฌ์ฉ์ ์ ์ ๋น์ผ๊ฐํ ํ๋ฆฌ๋ฏธํฐ๋ธ ๋ฐ ์ ฐ์ด๋ฉ์ ๋ํ ์ง์์ด ๋ถ์กฑํ๋ค. ํ๋ก๊ทธ๋๋ฐ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ OptiX Prime์ ๊ด์ ์ถ์ ์ด ํฌํจ๋ ์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ์ง ์๋๋ค. ๋ฐ๋ผ์ Prime์ ์๋ก์ด GPU๋ฅผ ์ํด ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ ์ปดํ์ผํ๊ฑฐ๋, ์ฑ๋ฅ์ ์ํด ๊ณ์ฐ์ ์ฌ๊ตฌ์ฑํ๊ฑฐ๋, Quadro VCA์ ๊ฐ์ ๋คํธ์ํฌ ์ดํ๋ผ์ด์ธ์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
OptiX๋ฅผ ์ฌ์ฉํ๋ ์ํํธ์จ์ด
[ํธ์ง]- ๋ธ๋ ๋๋ ๋ฒ์ 2.81(2.92์์๋ 7.1)๋ถํฐ OptiX๋ฅผ ์ง์ํ๋ค.[5]
- ๋ธ๋ ๋ ์ ๋์จ D-NOISE๋ AI ๊ฐ์ ๋๋ ธ์ด์ง์ ์ํด OptiX ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.[6]
- SIGGRAPH 2011์์ ์ด๋๋น๋ ๋ชจ์ ๊ทธ๋ํฝ์ ์ํ GPU ๊ด์ ์ถ์ ๊ธฐ์ ๋ฐ๋ชจ์์ OptiX๋ฅผ ์ ๋ณด์๋ค.[7]
- SIGGRAPH 2013์์ OptiX๋ ํฝ์ฌ์ ์ค์๊ฐ GPU ๊ธฐ๋ฐ ์กฐ๋ช ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋๊ตฌ์ ์๊ฐ๋์๋ค.
- OptiX๋ PhysX ๋ฐ ๊ธฐํ CUDA ๊ธฐ๋ฐ ๊ทธ๋ํฝ ์์ง ๋ฐ ํ๋ ์์ํฌ์ ํจ๊ป ๊ฒ์์์ค ๊ฐ๋ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํตํฉ๋์๋ค.[8]
- ์ด๋๋น ์ ํํฐ ์ดํํธ CC[9]
- Daz Studio๋ Iray ํตํฉ ์ดํ OptiX Prime ๊ฐ์์ ์ง์ํ์ง๋ง, ๋ฒ์ 4.12.1.8์์๋ ์ง์์ด ์ ๊ฑฐ๋์๋ค.[10]
- Luxrender 2.5: ์ต๋ 600% ๊ฐ์[11]
๊ฐ์ด ๋ณด๊ธฐ
[ํธ์ง]๊ฐ์ฃผ
[ํธ์ง]- โ โScheduling in OptiX, the Nvidia ray tracing engineโ (PDF). 2009๋ 8์ 15์ผ.
- โ Felbecker, Robert; Raschkowski, Leszek; Keusgen, Wilhelm; Peter, Michael (2012). ใElectromagnetic wave propagation in the millimeter wave band using the NVIDIA OptiX GPU ray tracing engineใ. ใ2012 6th European Conference on Antennas and Propagation (EUCAP)ใ. IEEE Xplore. 488โ492์ชฝ. doi:10.1109/EuCAP.2012.6206198. ISBNย 978-1-4577-0920-3. S2CIDย 45563615.
- โ Steven G. Parker; Heiko Friedrich; David Luebke; Keith Morley; James Bigler; Jared Hoberock; David McAllister; Austin Robison; Andreas Dietrich; Greg Humphreys; Morgan McGuire; Martin Stich (2013). ใMagazine Communications of the ACM - GPU ray tracingใ. ใCommunications of the ACMใ 56 (ACM). 93โ101์ชฝ. doi:10.1145/2447976.2447997. S2CIDย 17174671. 2013๋ 8์ 14์ผ์ ํ์ธํจ.
- โ Steven G. Parker; James Bigler; Andreas Dietrich; Heiko Friedrich; Jared Hoberock; David Luebke; David McAllister; Morgan McGuire; Keith Morely; Austin Robison; Martin Stich (2010). ใOptiX: a general purpose ray tracing engineใ. ใACM Transactions on Graphicsใ 29 (ACM). 66:1โ66:13์ชฝ. doi:10.1145/1778765.1778803. 2013๋ 8์ 14์ผ์ ํ์ธํจ.
- โ โBlender 2.81 Benchmarks On 19 NVIDIA Graphics Cards - RTX OptiX Rendering Performance Is Incredibleโ. phoronix.com. 2019. 2019๋ 11์ 26์ผ์ ํ์ธํจ.
- โ โD-NOISE: Rapid AI Denoising for Blenderโ. ใRemington Creativeใ. 2019๋ 7์ 20์ผ. 2019๋ 12์ 14์ผ์ ํ์ธํจ.
- โ โAdobe showcasing OptiX in a technology demo for ray tracing motion graphics with GPUsโ. NVIDIA. 2013. 2011๋ 8์ 17์ผ์ ์๋ณธ ๋ฌธ์์์ ๋ณด์กด๋ ๋ฌธ์. 2013๋ 8์ 14์ผ์ ํ์ธํจ.
- โ โNvidia announces Gameworks Program at Montreal 2013; supports SteamOSโ. NVIDIA. 2013. 2013๋ 11์ 1์ผ์ ์๋ณธ ๋ฌธ์์์ ๋ณด์กด๋ ๋ฌธ์. 2013๋ 10์ 29์ผ์ ํ์ธํจ.
- โ โGPU changes (for CUDA and OpenGL) in After Effects CC (12.1) | After Effects region of interestโ. 2015๋ 2์ 22์ผ์ ํ์ธํจ.
- โ โDaz Studio Changelogโ. ใDAZ 3Dใ. 2019๋ 12์ 14์ผ์ ํ์ธํจ.
- โ โNew Features in v2.5 โ LuxCoreRenderโ.