Opticks Overview ================== Opticks is structured as a collection of modular projects organized by their dependencies. This structure allows Opticks to be useful is different circumstances, for example on machines without an NVIDIA GPU capable of running CUDA and OptiX the OpenGL visualization functionality can still be used. Project Dependencies ---------------------- ===================== =============== =============== ============================================================================== directory precursor pkg name required find packages ===================== =============== =============== ============================================================================== sysrap sysrap- SysRap PLog boostrap brap- BoostRap OpticksBoost PLog SysRap opticksnpy npy- NPY OpticksBoost PLog SysRap BoostRap GLM optickscore okc- OpticksCore OpticksBoost PLog SysRap BoostRap GLM NPY ggeo ggeo- GGeo OpticksBoost PLog SysRap BoostRap GLM NPY OpticksCore (abbreviation:BASE) assimprap assimprap- AssimpRap BASE GGeo Assimp openmeshrap openmeshrap- OpenMeshRap BASE GGeo OpenMesh opticksgeo okg- OpticksGeometry BASE GGeo Assimp AssimpRap OpenMesh OpenMeshRap oglrap oglrap- OGLRap BASE GGeo GLEW GLFW ImGui cudarap cudarap- CUDARap PLog SysRap CUDA (ssl) thrustrap thrustrap- ThrustRap OpticksBoost PLog SysRap BoostRap GLM NPY CUDA CUDARap optixrap oxrap- OptiXRap BASE GGeo Assimp AssimpRap CUDARap ThrustRap okop okop- OKOP BASE GGeo OptiX OptiXRap CUDA CUDARap ThrustRap OpticksGeometry opticksgl opticksgl- OpticksGL BASE GGeo OptiX OptiXRap CUDA CUDARap ThrustRap OpticksOp Assimp AssimpRap GLEW GLFW OGLRap ok ok- OK BASE GGeo Assimp AssimpRap OpenMesh OpenMeshRap OpticksGeometry GLEW GLFW ImGui OGLRap cfg4 cfg4- cfg4 BASE GGeo Geant4 EnvXercesC [G4DAE] okg4 okg4- okg4 BASE GGeo Assimp AssimpRap OpenMesh OpenMeshRap OpticksGeometry GLEW GLFW ImGui OGLRap Geant4 EnvXercesC ===================== =============== =============== ============================================================================== Roles of the Opticks projects --------------------------------- sysrap logging, string handling, envvar handling boostrap filesystem utils, regular expression matching, commandline parsing opticksnpy array handling, persistency optickscore definitions, loosely the model of the app ggeo geometry representation appropriate for uploading to the GPU assimprap parsing G4DAE geometry file into the GGeo representation openmeshrap geometry fixing opticksgeo bring together ggeo, assimprap and openmeshrap to load and fix geometry oglrap OpenGL rendering, including GLSL shader sources cudarap loading curand persisted state thrustrap fast GPU photon indexing using interop techniques optixrap conversion of GGeo geometry into OptiX GPU geometry, OptiX programs for propagation okop operations, high level OptiX control opticksgl combination of oglrap- OpenGL and OptiX raytracing ok high level OKMgr and OKPropagator, pulling together all the above cfg4 contained geant4, comparison of Geant4 and Opticks simulations okg4 full integration of Opticks and Geant4 including: * Geant4 non-optical simulation (and optical too whilst testing) * Geant4 GDML detector geometry loading * Opticks DAE geometry loading etc... * optixrap: OptiX optical propagation * oglrap: OpenGL visualization * thrustrap: Thrust GPU indexing