Full Code of Chaf-Libraries/Ilum for AI

main 1d26a51ac02f cached
546 files
5.4 MB
1.5M tokens
3779 symbols
1 requests
Download .txt
Showing preview only (5,805K chars total). Download the full file or copy to clipboard to get everything.
Repository: Chaf-Libraries/Ilum
Branch: main
Commit: 1d26a51ac02f
Files: 546
Total size: 5.4 MB

Directory structure:
gitextract_7jr9t7gk/

├── .clang-format
├── .clang-tidy
├── .github/
│   └── workflows/
│       ├── windows_dev.yml
│       └── windows_main.yml
├── .gitignore
├── .gitmodules
├── Asset/
│   ├── BuildIn/
│   │   ├── ImGui.spv.asset
│   │   ├── MaterialBall.asset
│   │   ├── animation.icon.asset
│   │   ├── equirectangular_to_cubemap.shader.asset
│   │   ├── mesh.preview.asset
│   │   ├── pipeline.icon.asset
│   │   ├── prefab.icon.asset
│   │   └── scene.icon.asset
│   ├── Meta/
│   │   └── README.md
│   ├── MustacheTemplate/
│   │   └── Reflection.mustache
│   ├── NRD_Data/
│   │   ├── NRD.rg
│   │   └── Sample/
│   │       ├── Texture2D_89.dds
│   │       ├── blur_buffer.csv
│   │       ├── gIn_Diff.dds
│   │       ├── gIn_Diff_History.dds
│   │       ├── gIn_Normal_Roughness.dds
│   │       ├── gIn_ObjectMotion.dds
│   │       ├── gIn_Prev_AccumSpeeds_MaterialID.dds
│   │       ├── gIn_Prev_Normal_Roughness.dds
│   │       ├── gIn_Prev_ViewZ.dds
│   │       ├── gIn_ViewZ.dds
│   │       ├── history_fix_buffer.csv
│   │       ├── post_blur_buffer.csv
│   │       └── temporal_accumulate_buffer.csv
│   └── SPD/
│       └── metals/
│           ├── Ag.eta.spd
│           ├── Ag.k.spd
│           ├── Al.eta.spd
│           ├── Al.k.spd
│           ├── AlAs.eta.spd
│           ├── AlAs.k.spd
│           ├── AlSb.eta.spd
│           ├── AlSb.k.spd
│           ├── Au.eta.spd
│           ├── Au.k.spd
│           ├── Be.eta.spd
│           ├── Be.k.spd
│           ├── Cr.eta.spd
│           ├── Cr.k.spd
│           ├── CsI.eta.spd
│           ├── CsI.k.spd
│           ├── Cu.eta.spd
│           ├── Cu.k.spd
│           ├── Cu2O.eta.spd
│           ├── Cu2O.k.spd
│           ├── CuO.eta.spd
│           ├── CuO.k.spd
│           ├── Hg.eta.spd
│           ├── Hg.k.spd
│           ├── HgTe.eta.spd
│           ├── HgTe.k.spd
│           ├── Ir.eta.spd
│           ├── Ir.k.spd
│           ├── K.eta.spd
│           ├── K.k.spd
│           ├── KBr.eta.spd
│           ├── KBr.k.spd
│           ├── KCl.eta.spd
│           ├── KCl.k.spd
│           ├── Li.eta.spd
│           ├── Li.k.spd
│           ├── MgO.eta.spd
│           ├── MgO.k.spd
│           ├── Mo.eta.spd
│           ├── Mo.k.spd
│           ├── NaCl.eta.spd
│           ├── NaCl.k.spd
│           ├── Nb.eta.spd
│           ├── Nb.k.spd
│           ├── Rh.eta.spd
│           ├── Rh.k.spd
│           ├── Se-e.eta.spd
│           ├── Se-e.k.spd
│           ├── Se.eta.spd
│           ├── Se.k.spd
│           ├── SiC.eta.spd
│           ├── SiC.k.spd
│           ├── SiO.eta.spd
│           ├── SiO.k.spd
│           ├── SnTe.eta.spd
│           ├── SnTe.k.spd
│           ├── Ta.eta.spd
│           ├── Ta.k.spd
│           ├── Te-e.eta.spd
│           ├── Te-e.k.spd
│           ├── Te.eta.spd
│           ├── Te.k.spd
│           ├── ThF4.eta.spd
│           ├── ThF4.k.spd
│           ├── TiC.eta.spd
│           ├── TiC.k.spd
│           ├── TiN.eta.spd
│           ├── TiN.k.spd
│           ├── TiO2-e.eta.spd
│           ├── TiO2-e.k.spd
│           ├── TiO2.eta.spd
│           ├── TiO2.k.spd
│           ├── VC.eta.spd
│           ├── VC.k.spd
│           ├── VN.eta.spd
│           ├── VN.k.spd
│           ├── W.eta.spd
│           ├── W.k.spd
│           ├── a-C.eta.spd
│           ├── a-C.k.spd
│           ├── a-SiH.eta.spd
│           ├── a-SiH.k.spd
│           ├── d-C.eta.spd
│           └── d-C.k.spd
├── Doc/
│   ├── Material.drawio
│   ├── RHI.drawio
│   ├── RenderGraph.drawio
│   ├── Resource.drawio
│   ├── Scene.drawio
│   └── Shader.drawio
├── LICENSE.txt
├── README.md
├── Source/
│   ├── Editor/
│   │   ├── Editor.cpp
│   │   ├── Editor.hpp
│   │   ├── ImGui/
│   │   │   ├── ImGuiContext.cpp
│   │   │   └── ImGuiContext.hpp
│   │   ├── Precompile.hpp
│   │   └── Widget.hpp
│   ├── Engine/
│   │   ├── Engine.cpp
│   │   ├── Engine.hpp
│   │   ├── Precompile.hpp
│   │   └── main.cpp
│   ├── External/
│   │   ├── dxc/
│   │   │   └── inc/
│   │   │       ├── d3d12shader.h
│   │   │       ├── dxcapi.h
│   │   │       ├── dxcerrors.h
│   │   │       └── dxcisense.h
│   │   ├── imgui_tools/
│   │   │   ├── IconsFontAwesome/
│   │   │   │   └── IconsFontAwesome5.h
│   │   │   ├── imgui_impl_glfw.cpp
│   │   │   ├── imgui_impl_glfw.h
│   │   │   ├── imguizmo/
│   │   │   │   ├── GraphEditor.cpp
│   │   │   │   ├── GraphEditor.h
│   │   │   │   ├── ImCurveEdit.cpp
│   │   │   │   ├── ImCurveEdit.h
│   │   │   │   ├── ImGradient.cpp
│   │   │   │   ├── ImGradient.h
│   │   │   │   ├── ImGuizmo.cpp
│   │   │   │   ├── ImGuizmo.h
│   │   │   │   ├── ImSequencer.cpp
│   │   │   │   ├── ImSequencer.h
│   │   │   │   └── ImZoomSlider.h
│   │   │   ├── imnodes/
│   │   │   │   ├── imnodes.cpp
│   │   │   │   ├── imnodes.h
│   │   │   │   └── imnodes_internal.h
│   │   │   ├── implot/
│   │   │   │   ├── implot.cpp
│   │   │   │   ├── implot.h
│   │   │   │   ├── implot_demo.cpp
│   │   │   │   ├── implot_internal.h
│   │   │   │   └── implot_items.cpp
│   │   │   └── xmake.lua
│   │   ├── mustache/
│   │   │   └── mustache.hpp
│   │   ├── slang/
│   │   │   ├── docs/
│   │   │   │   ├── 64bit-type-support.md
│   │   │   │   ├── README.md
│   │   │   │   ├── api-users-guide.md
│   │   │   │   ├── building.md
│   │   │   │   ├── command-line-slangc.md
│   │   │   │   ├── cpu-target.md
│   │   │   │   ├── cuda-target.md
│   │   │   │   ├── doc-system.md
│   │   │   │   ├── faq.md
│   │   │   │   ├── language-guide.md
│   │   │   │   ├── layout.md
│   │   │   │   ├── linking.md
│   │   │   │   ├── nvapi-support.md
│   │   │   │   ├── repro.md
│   │   │   │   ├── shader-playground.md
│   │   │   │   ├── stdlib-doc.md
│   │   │   │   ├── target-compatibility.md
│   │   │   │   └── wave-intrinsics.md
│   │   │   ├── prelude/
│   │   │   │   ├── slang-cpp-host-prelude.h
│   │   │   │   ├── slang-cpp-prelude.h
│   │   │   │   ├── slang-cpp-scalar-intrinsics.h
│   │   │   │   ├── slang-cpp-types.h
│   │   │   │   ├── slang-cuda-prelude.h
│   │   │   │   ├── slang-hlsl-prelude.h
│   │   │   │   └── slang-llvm.h
│   │   │   ├── slang-com-helper.h
│   │   │   ├── slang-com-ptr.h
│   │   │   ├── slang-gfx.h
│   │   │   ├── slang-tag-version.h
│   │   │   └── slang.h
│   │   └── xmake.lua
│   ├── Plugin/
│   │   ├── Editor/
│   │   │   ├── AnimationEditor.cpp
│   │   │   ├── Console.cpp
│   │   │   ├── Hierarchy.cpp
│   │   │   ├── Inspector.cpp
│   │   │   ├── MainMenu.cpp
│   │   │   ├── MaterialGraphEditor.cpp
│   │   │   ├── MeshEditor.cpp
│   │   │   ├── RenderGraphEditor.cpp
│   │   │   ├── ResourceBrowser.cpp
│   │   │   ├── SceneView.cpp
│   │   │   ├── ShaderToy.cpp
│   │   │   └── xmake.lua
│   │   ├── Geometry/
│   │   │   ├── Parameterization/
│   │   │   │   ├── MinimumSurface.cpp
│   │   │   │   └── Tutte.cpp
│   │   │   ├── Subdivision/
│   │   │   │   └── Loop.cpp
│   │   │   └── xmake.lua
│   │   ├── Importer/
│   │   │   ├── Assimp.cpp
│   │   │   ├── DDS.cpp
│   │   │   ├── STB.cpp
│   │   │   └── xmake.lua
│   │   ├── MaterialNode/
│   │   │   ├── BSDF/
│   │   │   │   ├── ConductorMaterial.cpp
│   │   │   │   ├── DielectricMaterial.cpp
│   │   │   │   ├── DiffuseMaterial.cpp
│   │   │   │   ├── DisneyMaterial.cpp
│   │   │   │   ├── MaskedMaterial.cpp
│   │   │   │   ├── MixMaterial.cpp
│   │   │   │   ├── PrincipledMaterial.cpp
│   │   │   │   ├── ThinDielectricMaterial.cpp
│   │   │   │   └── Utils/
│   │   │   │       └── SPDLoader.hpp
│   │   │   ├── Converter/
│   │   │   │   ├── Calculate.cpp
│   │   │   │   ├── SRGBToLinear.cpp
│   │   │   │   ├── VectorCalculate.cpp
│   │   │   │   ├── VectorMerge.cpp
│   │   │   │   └── VectorSplit.cpp
│   │   │   ├── IMaterialNode.hpp
│   │   │   ├── Input/
│   │   │   │   ├── RGB.cpp
│   │   │   │   └── SurfaceInteraction.cpp
│   │   │   ├── Output/
│   │   │   │   └── MaterialOutput.cpp
│   │   │   ├── Texture/
│   │   │   │   └── ImageTexture.cpp
│   │   │   └── xmake.lua
│   │   ├── RHI/
│   │   │   ├── CUDA/
│   │   │   │   ├── Buffer.cpp
│   │   │   │   ├── Buffer.hpp
│   │   │   │   ├── CUDA.cpp
│   │   │   │   ├── Command.cpp
│   │   │   │   ├── Command.hpp
│   │   │   │   ├── Descriptor.cpp
│   │   │   │   ├── Descriptor.hpp
│   │   │   │   ├── Device.cpp
│   │   │   │   ├── Device.hpp
│   │   │   │   ├── Frame.cpp
│   │   │   │   ├── Frame.hpp
│   │   │   │   ├── Fwd.hpp
│   │   │   │   ├── PipelineState.cpp
│   │   │   │   ├── PipelineState.hpp
│   │   │   │   ├── Profiler.cpp
│   │   │   │   ├── Profiler.hpp
│   │   │   │   ├── Queue.cpp
│   │   │   │   ├── Queue.hpp
│   │   │   │   ├── Sampler.cpp
│   │   │   │   ├── Sampler.hpp
│   │   │   │   ├── Shader.cpp
│   │   │   │   ├── Shader.hpp
│   │   │   │   ├── Synchronization.cpp
│   │   │   │   ├── Synchronization.hpp
│   │   │   │   ├── Texture.cpp
│   │   │   │   └── Texture.hpp
│   │   │   ├── Vulkan/
│   │   │   │   ├── AccelerationStructure.cpp
│   │   │   │   ├── AccelerationStructure.hpp
│   │   │   │   ├── Buffer.cpp
│   │   │   │   ├── Buffer.hpp
│   │   │   │   ├── Command.cpp
│   │   │   │   ├── Command.hpp
│   │   │   │   ├── Definitions.cpp
│   │   │   │   ├── Definitions.hpp
│   │   │   │   ├── Descriptor.cpp
│   │   │   │   ├── Descriptor.hpp
│   │   │   │   ├── Device.cpp
│   │   │   │   ├── Device.hpp
│   │   │   │   ├── Frame.cpp
│   │   │   │   ├── Frame.hpp
│   │   │   │   ├── Fwd.cpp
│   │   │   │   ├── Fwd.hpp
│   │   │   │   ├── PipelineState.cpp
│   │   │   │   ├── PipelineState.hpp
│   │   │   │   ├── Profiler.cpp
│   │   │   │   ├── Profiler.hpp
│   │   │   │   ├── Queue.cpp
│   │   │   │   ├── Queue.hpp
│   │   │   │   ├── RenderTarget.cpp
│   │   │   │   ├── RenderTarget.hpp
│   │   │   │   ├── Sampler.cpp
│   │   │   │   ├── Sampler.hpp
│   │   │   │   ├── Shader.cpp
│   │   │   │   ├── Shader.hpp
│   │   │   │   ├── Swapchain.cpp
│   │   │   │   ├── Swapchain.hpp
│   │   │   │   ├── Synchronization.cpp
│   │   │   │   ├── Synchronization.hpp
│   │   │   │   ├── Texture.cpp
│   │   │   │   ├── Texture.hpp
│   │   │   │   ├── Vulkan.cpp
│   │   │   │   └── vk_mem_alloc.h
│   │   │   └── xmake.lua
│   │   ├── RenderPass/
│   │   │   ├── Bloom.cpp
│   │   │   ├── CompositePass.cpp
│   │   │   ├── CopyImageRGBA16.cpp
│   │   │   ├── Debug.cpp
│   │   │   ├── Deferred.cpp
│   │   │   ├── FXAA.cpp
│   │   │   ├── Forward.cpp
│   │   │   ├── ForwardPlus.cpp
│   │   │   ├── IBL.cpp
│   │   │   ├── IPass.hpp
│   │   │   ├── PassData.hpp
│   │   │   ├── PathTracing.cpp
│   │   │   ├── Present.cpp
│   │   │   ├── RayTracedAO.cpp
│   │   │   ├── RayTracingReflection.cpp
│   │   │   ├── RayTracingShadow.cpp
│   │   │   ├── SSAO.cpp
│   │   │   ├── ShadowMapPass.cpp
│   │   │   ├── SkyboxPass.cpp
│   │   │   ├── Tonemapping.cpp
│   │   │   ├── Triangle.cpp
│   │   │   ├── VisibilityBufferVisualization.cpp
│   │   │   ├── VisibilityGeometryPass.cpp
│   │   │   ├── VisibilityLightingPass.cpp
│   │   │   └── xmake.lua
│   │   └── xmake.lua
│   ├── Runtime/
│   │   ├── Core/
│   │   │   ├── Private/
│   │   │   │   ├── JobSystem.cpp
│   │   │   │   ├── Log.cpp
│   │   │   │   ├── Path.cpp
│   │   │   │   ├── Plugin.cpp
│   │   │   │   ├── Time.cpp
│   │   │   │   ├── Variant.cpp
│   │   │   │   └── Window.cpp
│   │   │   ├── Public/
│   │   │   │   └── Core/
│   │   │   │       ├── API.hpp
│   │   │   │       ├── Container.hpp
│   │   │   │       ├── Core.hpp
│   │   │   │       ├── Delegates.hpp
│   │   │   │       ├── Hash.hpp
│   │   │   │       ├── Input.hpp
│   │   │   │       ├── JobSystem.hpp
│   │   │   │       ├── Log.hpp
│   │   │   │       ├── PRECOMPILE.HPP
│   │   │   │       ├── Path.hpp
│   │   │   │       ├── Plugin.hpp
│   │   │   │       ├── Time.hpp
│   │   │   │       ├── Variant.hpp
│   │   │   │       └── Window.hpp
│   │   │   └── xmake.lua
│   │   ├── Geometry/
│   │   │   ├── Private/
│   │   │   │   ├── AABB.cpp
│   │   │   │   ├── Mesh/
│   │   │   │   │   ├── EMesh.cpp
│   │   │   │   │   ├── FMesh.cpp
│   │   │   │   │   ├── HEMesh.cpp
│   │   │   │   │   └── Mesh.cpp
│   │   │   │   └── MeshProcess.cpp
│   │   │   ├── Public/
│   │   │   │   └── Geometry/
│   │   │   │       ├── AABB.hpp
│   │   │   │       ├── Mesh/
│   │   │   │       │   ├── EMesh.hpp
│   │   │   │       │   ├── FMesh.hpp
│   │   │   │       │   ├── HEMesh.hpp
│   │   │   │       │   └── Mesh.hpp
│   │   │   │       ├── MeshProcess.hpp
│   │   │   │       ├── Meshlet.hpp
│   │   │   │       └── Precompile.hpp
│   │   │   └── xmake.lua
│   │   ├── RHI/
│   │   │   ├── Private/
│   │   │   │   ├── RHIAccelerationStructure.cpp
│   │   │   │   ├── RHIBuffer.cpp
│   │   │   │   ├── RHICommand.cpp
│   │   │   │   ├── RHIContext.cpp
│   │   │   │   ├── RHIDescriptor.cpp
│   │   │   │   ├── RHIDevice.cpp
│   │   │   │   ├── RHIFrame.cpp
│   │   │   │   ├── RHIPipelineState.cpp
│   │   │   │   ├── RHIProfiler.cpp
│   │   │   │   ├── RHIQueue.cpp
│   │   │   │   ├── RHIRenderTarget.cpp
│   │   │   │   ├── RHISampler.cpp
│   │   │   │   ├── RHIShader.cpp
│   │   │   │   ├── RHISwapchain.cpp
│   │   │   │   ├── RHISynchronization.cpp
│   │   │   │   └── RHITexture.cpp
│   │   │   └── Public/
│   │   │       └── RHI/
│   │   │           ├── Fwd.hpp
│   │   │           ├── RHIAccelerationStructure.hpp
│   │   │           ├── RHIBuffer.hpp
│   │   │           ├── RHICommand.hpp
│   │   │           ├── RHIContext.hpp
│   │   │           ├── RHIDefinitions.hpp
│   │   │           ├── RHIDescriptor.hpp
│   │   │           ├── RHIDevice.hpp
│   │   │           ├── RHIFrame.hpp
│   │   │           ├── RHIPipelineState.hpp
│   │   │           ├── RHIProfiler.hpp
│   │   │           ├── RHIQueue.hpp
│   │   │           ├── RHIRenderTarget.hpp
│   │   │           ├── RHISampler.hpp
│   │   │           ├── RHIShader.hpp
│   │   │           ├── RHISwapchain.hpp
│   │   │           ├── RHISynchronization.hpp
│   │   │           └── RHITexture.hpp
│   │   ├── Render/
│   │   │   ├── Material/
│   │   │   │   ├── Private/
│   │   │   │   │   └── Material/
│   │   │   │   │       ├── MaterialCompiler.cpp
│   │   │   │   │       ├── MaterialData.cpp
│   │   │   │   │       ├── MaterialGraph.cpp
│   │   │   │   │       ├── MaterialNode.cpp
│   │   │   │   │       └── Spectrum.cpp
│   │   │   │   └── Public/
│   │   │   │       └── Material/
│   │   │   │           ├── MaterialCompiler.hpp
│   │   │   │           ├── MaterialData.hpp
│   │   │   │           ├── MaterialGraph.hpp
│   │   │   │           ├── MaterialNode.hpp
│   │   │   │           └── Spectrum.hpp
│   │   │   ├── RenderGraph/
│   │   │   │   ├── Private/
│   │   │   │   │   ├── RenderGraph.cpp
│   │   │   │   │   ├── RenderGraphBlackboard.cpp
│   │   │   │   │   ├── RenderGraphBuilder.cpp
│   │   │   │   │   └── RenderPass.cpp
│   │   │   │   └── Public/
│   │   │   │       └── RenderGraph/
│   │   │   │           ├── Impl/
│   │   │   │           │   └── RenderGraphBuilder.inl
│   │   │   │           ├── Precompile.hpp
│   │   │   │           ├── RenderGraph.hpp
│   │   │   │           ├── RenderGraphBlackboard.hpp
│   │   │   │           ├── RenderGraphBuilder.hpp
│   │   │   │           └── RenderPass.hpp
│   │   │   ├── Renderer/
│   │   │   │   ├── Private/
│   │   │   │   │   └── Renderer.cpp
│   │   │   │   └── Public/
│   │   │   │       └── Renderer/
│   │   │   │           ├── RenderData.hpp
│   │   │   │           └── Renderer.hpp
│   │   │   ├── ShaderCompiler/
│   │   │   │   ├── Private/
│   │   │   │   │   ├── ShaderBuilder.cpp
│   │   │   │   │   ├── ShaderCompiler.cpp
│   │   │   │   │   └── SpirvReflection.cpp
│   │   │   │   └── Public/
│   │   │   │       └── ShaderCompiler/
│   │   │   │           ├── Precompile.hpp
│   │   │   │           ├── ShaderBuilder.hpp
│   │   │   │           ├── ShaderCompiler.hpp
│   │   │   │           └── SpirvReflection.hpp
│   │   │   └── xmake.lua
│   │   ├── Resource/
│   │   │   ├── Private/
│   │   │   │   └── Resource/
│   │   │   │       ├── Importer.cpp
│   │   │   │       ├── Resource/
│   │   │   │       │   ├── Animation.cpp
│   │   │   │       │   ├── Material.cpp
│   │   │   │       │   ├── Mesh.cpp
│   │   │   │       │   ├── Prefab.cpp
│   │   │   │       │   ├── RenderPipeline.cpp
│   │   │   │       │   ├── Scene.cpp
│   │   │   │       │   ├── SkinnedMesh.cpp
│   │   │   │       │   ├── Texture2D.cpp
│   │   │   │       │   └── TextureCube.cpp
│   │   │   │       ├── Resource.cpp
│   │   │   │       └── ResourceManager.cpp
│   │   │   └── Public/
│   │   │       └── Resource/
│   │   │           ├── Importer.hpp
│   │   │           ├── Resource/
│   │   │           │   ├── Animation.hpp
│   │   │           │   ├── Material.hpp
│   │   │           │   ├── Mesh.hpp
│   │   │           │   ├── Prefab.hpp
│   │   │           │   ├── RenderPipeline.hpp
│   │   │           │   ├── Scene.hpp
│   │   │           │   ├── SkinnedMesh.hpp
│   │   │           │   ├── Texture2D.hpp
│   │   │           │   └── TextureCube.hpp
│   │   │           ├── Resource.hpp
│   │   │           └── ResourceManager.hpp
│   │   ├── Scene/
│   │   │   ├── Private/
│   │   │   │   └── Scene/
│   │   │   │       ├── Component.cpp
│   │   │   │       ├── Components/
│   │   │   │       │   ├── AllComponents.cpp
│   │   │   │       │   ├── Camera/
│   │   │   │       │   │   ├── Camera.cpp
│   │   │   │       │   │   ├── OrthographicCamera.cpp
│   │   │   │       │   │   └── PerspectiveCamera.cpp
│   │   │   │       │   ├── Light/
│   │   │   │       │   │   ├── DirectionalLight.cpp
│   │   │   │       │   │   ├── EnvironmentLight.cpp
│   │   │   │       │   │   ├── Light.cpp
│   │   │   │       │   │   ├── PointLight.cpp
│   │   │   │       │   │   ├── RectLight.cpp
│   │   │   │       │   │   └── SpotLight.cpp
│   │   │   │       │   ├── Renderable/
│   │   │   │       │   │   ├── MeshRenderer.cpp
│   │   │   │       │   │   ├── Renderable.cpp
│   │   │   │       │   │   └── SkinnedMeshRenderer.cpp
│   │   │   │       │   └── Transform.cpp
│   │   │   │       ├── Node.cpp
│   │   │   │       └── Scene.cpp
│   │   │   └── Public/
│   │   │       └── Scene/
│   │   │           ├── Component.hpp
│   │   │           ├── Components/
│   │   │           │   ├── AllComponents.hpp
│   │   │           │   ├── Camera/
│   │   │           │   │   ├── Camera.hpp
│   │   │           │   │   ├── OrthographicCamera.hpp
│   │   │           │   │   └── PerspectiveCamera.hpp
│   │   │           │   ├── Light/
│   │   │           │   │   ├── DirectionalLight.hpp
│   │   │           │   │   ├── EnvironmentLight.hpp
│   │   │           │   │   ├── Light.hpp
│   │   │           │   │   ├── PointLight.hpp
│   │   │           │   │   ├── RectLight.hpp
│   │   │           │   │   └── SpotLight.hpp
│   │   │           │   ├── Renderable/
│   │   │           │   │   ├── MeshRenderer.hpp
│   │   │           │   │   ├── Renderable.hpp
│   │   │           │   │   └── SkinnedMeshRenderer.hpp
│   │   │           │   └── Transform.hpp
│   │   │           ├── Node.hpp
│   │   │           └── Scene.hpp
│   │   └── xmake.lua
│   ├── Shaders/
│   │   ├── AmbientOcclusion/
│   │   │   ├── RayTracedAO.hlsl
│   │   │   └── SSAO.hlsl
│   │   ├── Attribute.hlsli
│   │   ├── Common.hlsli
│   │   ├── Complex.hlsli
│   │   ├── Editor/
│   │   │   ├── AnimationEditor/
│   │   │   │   └── DrawSkeleton.hlsl
│   │   │   ├── AnimationEditor.hlsl
│   │   │   ├── MaterialEditor.hlsl
│   │   │   ├── MeshEditor.hlsl
│   │   │   └── Preview/
│   │   │       ├── Material.hlsl
│   │   │       └── Mesh.hlsl
│   │   ├── GlobalIllumination/
│   │   │   └── DDGI.hlsl
│   │   ├── ImGui.hlsl
│   │   ├── Interaction.hlsli
│   │   ├── Light.hlsli
│   │   ├── Material/
│   │   │   ├── BSDF/
│   │   │   │   ├── BSDF.hlsli
│   │   │   │   ├── ConductorBSDF.hlsli
│   │   │   │   ├── DielectricBSDF.hlsli
│   │   │   │   ├── DiffuseBSDF.hlsli
│   │   │   │   ├── DisneyBSDF.hlsli
│   │   │   │   ├── LayeredBSDF.hlsli
│   │   │   │   └── ThinDielectricBSDF.hlsli
│   │   │   ├── Fresnel.hlsli
│   │   │   ├── Material/
│   │   │   │   ├── ConductorMaterial.hlsli
│   │   │   │   ├── DielectricMaterial.hlsli
│   │   │   │   ├── DiffuseMaterial.hlsli
│   │   │   │   ├── DisneyMaterial.hlsli
│   │   │   │   ├── MaskedMaterial.hlsli
│   │   │   │   ├── MixMaterial.hlsli
│   │   │   │   └── ThinDielectricMaterial.hlsli
│   │   │   ├── Material.hlsli
│   │   │   ├── Scattering.hlsli
│   │   │   └── Template.material.hlsli
│   │   ├── Material.hlsli
│   │   ├── MaterialResource.hlsli
│   │   ├── Math.hlsli
│   │   ├── PostProcess/
│   │   │   ├── Bloom.hlsl
│   │   │   ├── FXAA.hlsl
│   │   │   └── Tonemapping.hlsl
│   │   ├── PreProcess/
│   │   │   ├── EquirectangularToCubemap.hlsl
│   │   │   └── GGXBRDFLUT.hlsl
│   │   ├── Random.hlsli
│   │   ├── RayTracing/
│   │   │   ├── BidirectionalPathTracing.hlsl
│   │   │   └── PathTracing.hlsl
│   │   ├── Reflection/
│   │   │   └── RayTracedReflection.hlsl
│   │   ├── RenderPath/
│   │   │   ├── VisibilityBufferVisualization.hlsl
│   │   │   ├── VisibilityGeometryPass.hlsl
│   │   │   └── VisibilityLightingPass.hlsl
│   │   ├── Shading/
│   │   │   ├── Composite.hlsl
│   │   │   ├── IBL.hlsl
│   │   │   └── Skybox.hlsl
│   │   ├── Shadow/
│   │   │   ├── CascadeShadowMap.hlsl
│   │   │   ├── OmniShadowMap.hlsl
│   │   │   ├── RayTracedShadow.hlsl
│   │   │   └── ShadowMap.hlsl
│   │   ├── SphericalHarmonic.hlsli
│   │   ├── Tonemapper.hlsli
│   │   └── UpdateBoneMatrics.hlsl
│   └── xmake.lua
├── imgui.ini
├── xmake/
│   ├── module.lua
│   ├── plugin.lua
│   ├── rule.lua
│   └── shader.lua
└── xmake.lua

================================================
FILE CONTENTS
================================================

================================================
FILE: .clang-format
================================================
---
Language:        Cpp
# BasedOnStyle:  LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: true
AlignEscapedNewlines: Left
AlignOperands:   true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
  AfterClass:      true
  AfterControlStatement: true
  AfterEnum:       true
  AfterFunction:   true
  AfterNamespace:  true
  AfterObjCDeclaration: true
  AfterStruct:     true
  AfterUnion:      true
  AfterExternBlock: true
  BeforeCatch:     true
  BeforeElse:      true
  IndentBraces:    false
  SplitEmptyFunction: false
  SplitEmptyRecord: false
  SplitEmptyNamespace: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: AfterColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit:     0
CommentPragmas:  '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat:   false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH
IncludeBlocks:   Preserve
IncludeIsMainRegex: '(Test)?$'
IndentCaseLabels: true
IndentPPDirectives: AfterHash
IndentWidth:     4
IndentWrappedFunctionNames: true
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd:   ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments:  true
SortIncludes:    true
SortUsingDeclarations: true
SpaceAfterCStyleCast: true
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 8
SpacesInAngles:  false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard:        Cpp11
TabWidth:        4
UseTab:          ForIndentation
...


================================================
FILE: .clang-tidy
================================================
Checks: '-*,
    misc-throw-by-value-catch-by-reference,
    misc-misplaced-const,
    misc-unconventional-assign-operator,
    misc-redundant-expression,
    misc-static-assert,
    misc-unconventional-assign-operator,
    misc-uniqueptr-reset-release,
    misc-unused-alias-decls,
    misc-unused-parameters,
    misc-unused-using-decls,

    modernize-avoid-bind,
    modernize-loop-convert,
    modernize-make-shared,
    modernize-make-unique,
    modernize-raw-string-literal,
    modernize-redundant-void-arg,
    modernize-replace-auto-ptr,
    modernize-replace-random-shuffle,
    modernize-use-bool-literals,
    modernize-use-nullptr,
    modernize-use-using,
    modernize-use-equals-default,
    modernize-use-equals-delete,

    performance-faster-string-find,
    performance-for-range-copy,
    performance-implicit-conversion-in-loop,
    performance-inefficient-algorithm,
    performance-inefficient-vector-operation,
    performance-move-constructor-init,
    performance-no-automatic-move,
    performance-trivially-destructible,
    performance-unnecessary-copy-initialization,

    readability-avoid-const-params-in-decls,
    readability-const-return-type,
    readability-container-size-empty,
    readability-convert-member-functions-to-static,
    readability-delete-null-pointer,
    readability-deleted-default,
    readability-make-member-function-const,
    readability-misplaced-array-index,
    readability-non-const-parameter,
    readability-qualified-auto,
    readability-redundant-access-specifiers,
    readability-redundant-control-flow,
    readability-redundant-function-ptr-dereference,
    readability-redundant-smartptr-get,
    readability-redundant-string-cstr,
    readability-redundant-string-init,
    readability-static-definition-in-anonymous-namespace,
    readability-string-compare,
    readability-uniqueptr-delete-release,
    readability-redundant-member-init,
    readability-simplify-subscript-expr,
    readability-simplify-boolean-expr,
    readability-inconsistent-declaration-parameter-name,
    readability-identifier-naming,

    bugprone-undelegated-constructor,
    bugprone-argument-comment,
    bugprone-bad-signal-to-kill-thread,
    bugprone-bool-pointer-implicit-conversion,
    bugprone-copy-constructor-init,
    bugprone-dangling-handle,
    bugprone-forward-declaration-namespace,
    bugprone-fold-init-type,
    bugprone-inaccurate-erase,
    bugprone-incorrect-roundings,
    bugprone-infinite-loop,
    bugprone-integer-division,
    bugprone-macro-parentheses,
    bugprone-macro-repeated-side-effects,
    bugprone-misplaced-operator-in-strlen-in-alloc,
    bugprone-misplaced-pointer-artithmetic-in-alloc,
    bugprone-misplaced-widening-cast,
    bugprone-move-forwarding-reference,
    bugprone-multiple-statement-macro,
    bugprone-parent-virtual-call,
    bugprone-posix-return,
    bugprone-reserved-identifier,
    bugprone-signed-char-misuse,
    bugprone-sizeof-container,
    bugprone-sizeof-expression,
    bugprone-string-constructor,
    bugprone-string-integer-assignment,
    bugprone-string-literal-with-embedded-nul,
    bugprone-suspicious-enum-usage,
    bugprone-suspicious-include,
    bugprone-suspicious-memset-usage,
    bugprone-suspicious-missing-comma,
    bugprone-suspicious-string-compare,
    bugprone-swapped-arguments,
    bugprone-terminating-continue,
    bugprone-throw-keyword-missing,
    bugprone-too-small-loop-variable,
    bugprone-undefined-memory-manipulation,
    bugprone-unhandled-self-assignment,
    bugprone-unused-raii,
    bugprone-unused-return-value,
    bugprone-use-after-move,
    bugprone-virtual-near-miss,

    cert-dcl21-cpp,
    cert-dcl50-cpp,
    cert-env33-c,
    cert-err34-c,
    cert-err52-cpp,
    cert-flp30-c,
    cert-mem57-cpp,
    cert-msc50-cpp,
    cert-oop58-cpp,

    google-build-explicit-make-pair,
    google-build-namespaces,
    google-default-arguments,
    google-explicit-constructor,
    google-readability-casting,
    google-readability-avoid-underscore-in-googletest-name,
    google-runtime-int,
    google-runtime-operator,

    hicpp-exception-baseclass,

    clang-analyzer-core.CallAndMessage,
    clang-analyzer-core.DivideZero,
    clang-analyzer-core.NonNullParamChecker,
    clang-analyzer-core.NullDereference,
    clang-analyzer-core.StackAddressEscape,
    clang-analyzer-core.UndefinedBinaryOperatorResult,
    clang-analyzer-core.VLASize,
    clang-analyzer-core.uninitialized.ArraySubscript,
    clang-analyzer-core.uninitialized.Assign,
    clang-analyzer-core.uninitialized.Branch,
    clang-analyzer-core.uninitialized.CapturedBlockVariable,
    clang-analyzer-core.uninitialized.UndefReturn,
    clang-analyzer-cplusplus.InnerPointer,
    clang-analyzer-cplusplus.NewDelete,
    clang-analyzer-cplusplus.NewDeleteLeaks,
    clang-analyzer-cplusplus.PlacementNewChecker,
    clang-analyzer-cplusplus.SelfAssignment,
    clang-analyzer-deadcode.DeadStores,
    clang-analyzer-optin.cplusplus.VirtualCall,
    clang-analyzer-security.insecureAPI.UncheckedReturn,
    clang-analyzer-security.insecureAPI.bcmp,
    clang-analyzer-security.insecureAPI.bcopy,
    clang-analyzer-security.insecureAPI.bzero,
    clang-analyzer-security.insecureAPI.getpw,
    clang-analyzer-security.insecureAPI.gets,
    clang-analyzer-security.insecureAPI.mkstemp,
    clang-analyzer-security.insecureAPI.mktemp,
    clang-analyzer-security.insecureAPI.rand,
    clang-analyzer-security.insecureAPI.strcpy,
    clang-analyzer-unix.Malloc,
    clang-analyzer-unix.MallocSizeof,
    clang-analyzer-unix.MismatchedDeallocator,
    clang-analyzer-unix.Vfork,
    clang-analyzer-unix.cstring.BadSizeArg,
    clang-analyzer-unix.cstring.NullArg,

    boost-use-to-string,
'
WarningsAsErrors: '*'

CheckOptions:
  - key: readability-identifier-naming.ClassCase
    value: CamelCase
  - key: readability-identifier-naming.EnumCase
    value: CamelCase
  - key: readability-identifier-naming.LocalVariableCase
    value: lower_case
  - key: readability-identifier-naming.StaticConstantCase
    value: aNy_CasE
  - key: readability-identifier-naming.MemberCase
    value: lower_case
  - key: readability-identifier-naming.ClassMemberPrefix
    value: m_
  - key: readability-identifier-naming.PrivateMemberPrefix
    value: ''
  - key: readability-identifier-naming.ProtectedMemberPrefix
    value: ''
  - key: readability-identifier-naming.PublicMemberCase
    value: lower_case
  - key: readability-identifier-naming.MethodCase
    value: camelBack
  - key: readability-identifier-naming.PrivateMethodPrefix
    value: ''
  - key: readability-identifier-naming.ProtectedMethodPrefix
    value: ''
  - key: readability-identifier-naming.ParameterPackCase
    value: lower_case
  - key: readability-identifier-naming.StructCase
    value: CamelCase
  - key: readability-identifier-naming.TemplateTemplateParameterCase
    value: CamelCase
  - key: readability-identifier-naming.TemplateUsingCase
    value: lower_case
  - key: readability-identifier-naming.TypeTemplateParameterCase
    value: CamelCase
  - key: readability-identifier-naming.TypedefCase
    value: CamelCase
  - key: readability-identifier-naming.UnionCase
    value: CamelCase
  - key: readability-identifier-naming.UsingCase
    value: CamelCase

================================================
FILE: .github/workflows/windows_dev.yml
================================================
name: Windows_dev

on:
  pull_request:
    types: [dev]
  push:
    branches: [dev]

jobs:
  build:
    runs-on: "windows-latest"
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: "recursive"
      
      - uses: Jimver/cuda-toolkit@v0.2.8
        id: cuda-toolkit
        with:
          cuda: '11.7.0'
          sub-packages: '["nvcc", "visual_studio_integration", "cudart"]'

      - uses: xmake-io/github-action-setup-xmake@v1
        with:
          xmake-version: latest
          actions-cache-folder: ".xmake-cache"

      - name: Build
        run: xmake -y

================================================
FILE: .github/workflows/windows_main.yml
================================================
name: Windows_main

on:
  pull_request:
    types: [main]
  push:
    branches: [main]

jobs:
  build:
    runs-on: "windows-latest"
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: "recursive"
      
      - uses: Jimver/cuda-toolkit@v0.2.8
        id: cuda-toolkit
        with:
          cuda: '11.7.0'
          sub-packages: '["nvcc", "visual_studio_integration", "cudart"]'

      - uses: xmake-io/github-action-setup-xmake@v1
        with:
          xmake-version: latest
          actions-cache-folder: ".xmake-cache"

      - name: Build
        run: xmake -y

================================================
FILE: .gitignore
================================================
# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod
*.smod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app
*.spv

# Folders
/build/*
/bin/*
/lib/*
/shared/*

**/Archive/*

*.meta

.vscode
.xmake/
build/
vsxmake**

================================================
FILE: .gitmodules
================================================
[submodule "Source/Dependencies"]
	path = Source/Dependencies
	url = https://github.com/Chaf-Libraries/Dependencies


================================================
FILE: Asset/Meta/README.md
================================================


================================================
FILE: Asset/MustacheTemplate/Reflection.mustache
================================================
{{#Header}}
{{&Include}}
{{/Header}}

namespace Ilum_{{Hash}}
{
RTTR_REGISTRATION
{
    {{#Enum}}
    rttr::registration::enumeration<{{EnumQualifiedName}}>("{{EnumName}}")
    (
        {{#EnumValue}}
        rttr::value("{{EnumValueName}}", {{EnumValueQualifiedName}}){{^IsLast}},{{/IsLast}}
        {{/EnumValue}}  
    );
    {{/Enum}}
    {{#Class}}
    rttr::registration::class_<{{ClassQualifiedName}}>("{{ClassName}}"){{#Meta}}({{#MetaData}}rttr::metadata("{{&Key}}", {{&Value}}){{^IsLast}}, {{/IsLast}}{{/MetaData}}){{/Meta}}
    {{#Field}}
        .property("{{FieldName}}", &{{FieldQualifiedName}}, rttr::registration::{{#Public}}public_access{{/Public}}{{#Private}}private_access{{/Private}}{{#Protected}}protected_access{{/Protected}}){{#Meta}}({{#MetaData}}rttr::metadata("{{&Key}}", {{&Value}}){{^IsLast}}, {{/IsLast}}{{/MetaData}}){{/Meta}}
    {{/Field}}
    {{#Constructor}}
        {{^Static}}.constructor<{{#Params}}{{&Param}}{{^IsLast}}, {{/IsLast}}{{/Params}}>(){{/Static}}{{#Static}}.constructor(&{{MethodQualifiedName}}){{/Static}}(rttr::policy::ctor::as_object)
    {{/Constructor}}
    {{#NoConstructor}}
        .constructor<>()(rttr::policy::ctor::as_object)
    {{/NoConstructor}}
    {{#Method}}
        .method("{{&MethodName}}", {{^Overload}}&{{&MethodQualifiedName}}{{/Overload}}{{#Overload}}{{^Const}}rttr::select_overload<{{&ReturnType}}({{#Params}}{{&Param}}{{^IsLast}}, {{/IsLast}}{{/Params}})>{{/Const}}{{#Const}}rttr::select_const<{{&ClassQualifiedName}}, {{&ReturnType}}, {{#Params}}{{&Param}}{{^IsLast}}, {{/IsLast}}{{/Params}}>{{/Const}}(&{{&MethodQualifiedName}}){{/Overload}}, rttr::registration::{{#Public}}public_access{{/Public}}{{#Private}}private_access{{/Private}}{{#Protected}}protected_access{{/Protected}}){{#Meta}}({{#MetaData}}rttr::metadata("{{&Key}}", {{&Value}}){{^IsLast}}, {{/IsLast}}{{/MetaData}}){{/Meta}}
    {{/Method}}
    ;
    {{/Class}}
}
}

================================================
FILE: Asset/NRD_Data/Sample/blur_buffer.csv
================================================
gViewToClip,"[1.0000, 0.0000, 0.0000, 0.0000]
[0.0000, 1.7778, 0.0000, 0.0000]
[-0.0000, -0.0000, 1.0000, 1.0000]
[0.0000, 0.0000, -0.0010, 0.0000]"
gViewToWorld,"[-0.9997, -0.0236, -0.0000, 0.0000]
[0.0031, -0.1315, 0.9913, 0.0000]
[0.0234, -0.9910, -0.1315, 0.0000]
[0.0000, 0.0000, 0.0000, 1.0000]"
gFrustum,"[-1.0000, 0.5625, 2.0000, -1.1250]"
gHitDistParams,"[3.0000, 0.1000, 20.0000, -25.0000]"
gViewVectorWorld,"[-0.0234, 0.9910, 0.1315, 0.0000]"
gViewVectorWorldPrev,"[-0.0234, 0.9910, 0.1315, 0.0000]"
gInvScreenSize,"[0.0008, 0.0014]"
gScreenSize,"[1280.0000, 720.0000]"
gInvRectSize,"[0.0008, 0.0014]"
gRectSize,"[1280.0000, 720.0000]"
gRectSizePrev,"[1280.0000, 720.0000]"
gResolutionScale,"[1.0000, 1.0000]"
gRectOffset,"[0.0000, 0.0000]"
gSensitivityToDarkness,"[0.0100, 0.1000]"
gRectOrigin,"[0, 0]"
gReference,0.0000
gOrthoMode,0.0000
gUnproject,0.0016
gDebug,0.0000
gDenoisingRange,60.6960
gPlaneDistSensitivity,0.0050
gFramerateScale,0.5000
gBlurRadius,30.0000
gMaxAccumulatedFrameNum,1.0000
gMaxFastAccumulatedFrameNum,0.0000
gAntiFirefly,0.0000
gMinConvergedStateBaseRadiusScale,0.2500
gLobeAngleFraction,0.1000
gRoughnessFraction,0.0500
gResponsiveAccumulationRoughnessThreshold,0.0000
gDiffPrepassBlurRadius,30.0000
gSpecPrepassBlurRadius,50.0000
gIsWorldSpaceMotionEnabled,1
gFrameIndex,42372
gResetHistory,0
gDiffMaterialMask,1
gSpecMaterialMask,0
gRotator,"[0.2651, -0.9642, 0.9642, 0.2651]"
gSpecLobeTrimmingParams,"[0.9500, 0.0400, 0.1100]"
gBlurRadiusScale,5.0000


================================================
FILE: Asset/NRD_Data/Sample/history_fix_buffer.csv
================================================
gViewToClip,"[1.0000, 0.0000, 0.0000, 0.0000]
[0.0000, 1.7778, 0.0000, 0.0000]
[-0.0000, -0.0000, 1.0000, 1.0000]
[0.0000, 0.0000, -0.0010, 0.0000]",-
gViewToWorld,"[-0.9997, -0.0236, -0.0000, 0.0000]
[0.0031, -0.1315, 0.9913, 0.0000]
[0.0234, -0.9910, -0.1315, 0.0000]
[0.0000, 0.0000, 0.0000, 1.0000]",-
gFrustum,"[-1.0000, 0.5625, 2.0000, -1.1250]",-
gHitDistParams,"[3.0000, 0.1000, 20.0000, -25.0000]",-
gViewVectorWorld,"[-0.0234, 0.9910, 0.1315, 0.0000]",-
gViewVectorWorldPrev,"[-0.0234, 0.9910, 0.1315, 0.0000]",-
gInvScreenSize,"[0.0008, 0.0014]",-
gScreenSize,"[1280.0000, 720.0000]",-
gInvRectSize,"[0.0008, 0.0014]",-
gRectSize,"[1280.0000, 720.0000]",-
gRectSizePrev,"[1280.0000, 720.0000]",-
gResolutionScale,"[1.0000, 1.0000]",-
gRectOffset,"[0.0000, 0.0000]",-
gSensitivityToDarkness,"[0.0100, 0.1000]",-
gRectOrigin,"[0, 0]",-
gReference,0.0000,-
gOrthoMode,0.0000,-
gUnproject,0.0016,-
gDebug,0.0000,-
gDenoisingRange,60.6960,-
gPlaneDistSensitivity,0.0050,-
gFramerateScale,0.5000,-
gBlurRadius,30.0000,-
gMaxAccumulatedFrameNum,1.0000,-
gMaxFastAccumulatedFrameNum,0.0000,-
gAntiFirefly,0.0000,-
gMinConvergedStateBaseRadiusScale,0.2500,-
gLobeAngleFraction,0.1000,-
gRoughnessFraction,0.0500,-
gResponsiveAccumulationRoughnessThreshold,0.0000,-
gDiffPrepassBlurRadius,30.0000,-
gSpecPrepassBlurRadius,50.0000,-
gIsWorldSpaceMotionEnabled,1,-
gFrameIndex,42372,-
gResetHistory,0,-
gDiffMaterialMask,1,-
gSpecMaterialMask,0,-
gHistoryFixStrength,1.0000,-


================================================
FILE: Asset/NRD_Data/Sample/post_blur_buffer.csv
================================================
gViewToClip,gViewToWorld,gFrustum,gHitDistParams,gViewVectorWorld,gViewVectorWorldPrev,gInvScreenSize,gScreenSize,gInvRectSize,gRectSize,gRectSizePrev,gResolutionScale,gRectOffset,gSensitivityToDarkness,gRectOrigin,gReference,gOrthoMode,gUnproject,gDebug,gDenoisingRange,gPlaneDistSensitivity,gFramerateScale,gBlurRadius,gMaxAccumulatedFrameNum,gMaxFastAccumulatedFrameNum,gAntiFirefly,gMinConvergedStateBaseRadiusScale,gLobeAngleFraction,gRoughnessFraction,gResponsiveAccumulationRoughnessThreshold,gDiffPrepassBlurRadius,gSpecPrepassBlurRadius,gIsWorldSpaceMotionEnabled,gFrameIndex,gResetHistory,gDiffMaterialMask,gSpecMaterialMask,gRotator,gSpecLobeTrimmingParams,gBlurRadiusScale
"[1.0000, 0.0000, 0.0000, 0.0000]
[0.0000, 1.7778, 0.0000, 0.0000]
[-0.0000, -0.0000, 1.0000, 1.0000]
[0.0000, 0.0000, -0.0010, 0.0000]","[-0.9997, -0.0236, -0.0000, 0.0000]
[0.0031, -0.1315, 0.9913, 0.0000]
[0.0234, -0.9910, -0.1315, 0.0000]
[0.0000, 0.0000, 0.0000, 1.0000]","[-1.0000, 0.5625, 2.0000, -1.1250]","[3.0000, 0.1000, 20.0000, -25.0000]","[-0.0234, 0.9910, 0.1315, 0.0000]","[-0.0234, 0.9910, 0.1315, 0.0000]","[0.0008, 0.0014]","[1280.0000, 720.0000]","[0.0008, 0.0014]","[1280.0000, 720.0000]","[1280.0000, 720.0000]","[1.0000, 1.0000]","[0.0000, 0.0000]","[0.0100, 0.1000]","[0, 0]",0.0000,0.0000,0.0016,0.0000,60.6960,0.0050,0.5000,30.0000,1.0000,0.0000,0.0000,0.2500,0.1000,0.0500,0.0000,30.0000,50.0000,1,42372,0,1,0,"[-0.9642, -0.2651, 0.2651, -0.9642]","[0.9500, 0.0400, 0.1100]",5.0000


================================================
FILE: Asset/NRD_Data/Sample/temporal_accumulate_buffer.csv
================================================
gViewToClip,"[1.0000, 0.0000, 0.0000, 0.0000]
[0.0000, 1.7778, 0.0000, 0.0000]
[-0.0000, -0.0000, 1.0000, 1.0000]
[0.0000, 0.0000, -0.0010, 0.0000]",-
gViewToWorld,"[-0.9997, -0.0236, -0.0000, 0.0000]
[0.0031, -0.1315, 0.9913, 0.0000]
[0.0234, -0.9910, -0.1315, 0.0000]
[0.0000, 0.0000, 0.0000, 1.0000]",-
gFrustum,"[-1.0000, 0.5625, 2.0000, -1.1250]",-
gHitDistParams,"[3.0000, 0.1000, 20.0000, -25.0000]",-
gViewVectorWorld,"[-0.0234, 0.9910, 0.1315, 0.0000]",-
gViewVectorWorldPrev,"[-0.0234, 0.9910, 0.1315, 0.0000]",-
gInvScreenSize,"[0.0008, 0.0014]",-
gScreenSize,"[1280.0000, 720.0000]",-
gInvRectSize,"[0.0008, 0.0014]",-
gRectSize,"[1280.0000, 720.0000]",-
gRectSizePrev,"[1280.0000, 720.0000]",-
gResolutionScale,"[1.0000, 1.0000]",-
gRectOffset,"[0.0000, 0.0000]",-
gSensitivityToDarkness,"[0.0100, 0.1000]",-
gRectOrigin,"[0, 0]",-
gReference,0.0000,-
gOrthoMode,0.0000,-
gUnproject,0.0016,-
gDebug,0.0000,-
gDenoisingRange,60.6960,-
gPlaneDistSensitivity,0.0050,-
gFramerateScale,0.5000,-
gBlurRadius,30.0000,-
gMaxAccumulatedFrameNum,1.0000,-
gMaxFastAccumulatedFrameNum,0.0000,-
gAntiFirefly,0.0000,-
gMinConvergedStateBaseRadiusScale,0.2500,-
gLobeAngleFraction,0.1000,-
gRoughnessFraction,0.0500,-
gResponsiveAccumulationRoughnessThreshold,0.0000,-
gDiffPrepassBlurRadius,30.0000,-
gSpecPrepassBlurRadius,50.0000,-
gIsWorldSpaceMotionEnabled,1,-
gFrameIndex,42372,-
gResetHistory,0,-
gDiffMaterialMask,1,-
gSpecMaterialMask,0,-
gWorldToViewPrev,"[-0.9997, 0.0031, 0.0234, 0.0000]
[-0.0236, -0.1315, -0.9910, 0.0000]
[-0.0000, 0.9913, -0.1315, 0.0000]
[0.0000, -0.0000, -0.0000, 1.0000]",-
gWorldToClipPrev,"[-0.9997, 0.0055, 0.0234, 0.0234]
[-0.0236, -0.2337, -0.9910, -0.9910]
[0.0000, 1.7623, -0.1315, -0.1315]
[0.0000, 0.0000, -0.0010, 0.0000]",-
gWorldToClip,"[-0.9997, 0.0055, 0.0234, 0.0234]
[-0.0236, -0.2337, -0.9910, -0.9910]
[0.0000, 1.7623, -0.1315, -0.1315]
[0.0000, 0.0000, -0.0010, 0.0000]",-
gWorldPrevToWorld,"[1.0000, 0.0000, 0.0000, 0.0000]
[0.0000, 1.0000, 0.0000, 0.0000]
[0.0000, 0.0000, 1.0000, 0.0000]
[0.0000, 0.0000, 0.0000, 1.0000]",-
gFrustumPrev,"[-1.0000, 0.5625, 2.0000, -1.1250]",-
gCameraDelta,"[0.0000, 0.0000, 0.0000, 0.0000]",-
gRotator,"[-0.5868, 0.8098, -0.8098, -0.5868]",-
gMotionVectorScale,"[1.0000, 1.0000]",-
gCheckerboardResolveAccumSpeed,0.6447,-
gDisocclusionThreshold,0.0071,-
gDiffCheckerboard,2,-
gSpecCheckerboard,2,-
gIsPrepassEnabled,0,-


================================================
FILE: Asset/SPD/metals/Ag.eta.spd
================================================
298.757050 1.519000
302.400421 1.496000
306.133759 1.432500
309.960449 1.323000
313.884003 1.142062
317.908142 0.932000
322.036835 0.719062
326.274139 0.526000
330.624481 0.388125
335.092377 0.294000
339.682678 0.253313
344.400482 0.238000
349.251221 0.221438
354.240509 0.209000
359.374420 0.194813
364.659332 0.186000
370.102020 0.192063
375.709625 0.200000
381.489777 0.198063
387.450562 0.192000
393.600555 0.182000
399.948975 0.173000
406.505493 0.172625
413.280579 0.173000
420.285339 0.166688
427.531647 0.160000
435.032196 0.158500
442.800629 0.157000
450.851562 0.151063
459.200653 0.144000
467.864838 0.137313
476.862213 0.132000
486.212463 0.130250
495.936707 0.130000
506.057861 0.129938
516.600769 0.130000
527.592224 0.130063
539.061646 0.129000
551.040771 0.124375
563.564453 0.120000
576.670593 0.119313
590.400818 0.121000
604.800842 0.125500
619.920898 0.131000
635.816284 0.136125
652.548279 0.140000
670.184753 0.140063
688.800964 0.140000
708.481018 0.144313
729.318665 0.148000
751.419250 0.145875
774.901123 0.143000
799.897949 0.142563
826.561157 0.145000
855.063293 0.151938
885.601257 0.163000


================================================
FILE: Asset/SPD/metals/Ag.k.spd
================================================
298.757050 1.080000
302.400421 0.882000
306.133759 0.761063
309.960449 0.647000
313.884003 0.550875
317.908142 0.504000
322.036835 0.554375
326.274139 0.663000
330.624481 0.818563
335.092377 0.986000
339.682678 1.120687
344.400482 1.240000
349.251221 1.345250
354.240509 1.440000
359.374420 1.533750
364.659332 1.610000
370.102020 1.641875
375.709625 1.670000
381.489777 1.735000
387.450562 1.810000
393.600555 1.878750
399.948975 1.950000
406.505493 2.029375
413.280579 2.110000
420.285339 2.186250
427.531647 2.260000
435.032196 2.329375
442.800629 2.400000
450.851562 2.478750
459.200653 2.560000
467.864838 2.640000
476.862213 2.720000
486.212463 2.798125
495.936707 2.880000
506.057861 2.973750
516.600769 3.070000
527.592224 3.159375
539.061646 3.250000
551.040771 3.348125
563.564453 3.450000
576.670593 3.553750
590.400818 3.660000
604.800842 3.766250
619.920898 3.880000
635.816284 4.010625
652.548279 4.150000
670.184753 4.293125
688.800964 4.440000
708.481018 4.586250
729.318665 4.740000
751.419250 4.908125
774.901123 5.090000
799.897949 5.288750
826.561157 5.500000
855.063293 5.720624
885.601257 5.950000


================================================
FILE: Asset/SPD/metals/Al.eta.spd
================================================
298.757050 0.273375
302.400421 0.280000
306.133759 0.286813
309.960449 0.294000
313.884003 0.301875
317.908142 0.310000
322.036835 0.317875
326.274139 0.326000
330.624481 0.334750
335.092377 0.344000
339.682678 0.353813
344.400482 0.364000
349.251221 0.374375
354.240509 0.385000
359.374420 0.395750
364.659332 0.407000
370.102020 0.419125
375.709625 0.432000
381.489777 0.445688
387.450562 0.460000
393.600555 0.474688
399.948975 0.490000
406.505493 0.506188
413.280579 0.523000
420.285339 0.540063
427.531647 0.558000
435.032196 0.577313
442.800629 0.598000
450.851562 0.620313
459.200653 0.644000
467.864838 0.668625
476.862213 0.695000
486.212463 0.723750
495.936707 0.755000
506.057861 0.789000
516.600769 0.826000
527.592224 0.867000
539.061646 0.912000
551.040771 0.963000
563.564453 1.020000
576.670593 1.080000
590.400818 1.150000
604.800842 1.220000
619.920898 1.300000
635.816284 1.390000
652.548279 1.490000
670.184753 1.600000
688.800964 1.740000
708.481018 1.910000
729.318665 2.140000
751.419250 2.410000
774.901123 2.630000
799.897949 2.800000
826.561157 2.740000
855.063293 2.580000
885.601257 2.240000


================================================
FILE: Asset/SPD/metals/Al.k.spd
================================================
298.757050 3.593750
302.400421 3.640000
306.133759 3.689375
309.960449 3.740000
313.884003 3.789375
317.908142 3.840000
322.036835 3.894375
326.274139 3.950000
330.624481 4.005000
335.092377 4.060000
339.682678 4.113750
344.400482 4.170000
349.251221 4.233750
354.240509 4.300000
359.374420 4.365000
364.659332 4.430000
370.102020 4.493750
375.709625 4.560000
381.489777 4.633750
387.450562 4.710000
393.600555 4.784375
399.948975 4.860000
406.505493 4.938125
413.280579 5.020000
420.285339 5.108750
427.531647 5.200000
435.032196 5.290000
442.800629 5.380000
450.851562 5.480000
459.200653 5.580000
467.864838 5.690000
476.862213 5.800000
486.212463 5.915000
495.936707 6.030000
506.057861 6.150000
516.600769 6.280000
527.592224 6.420000
539.061646 6.550000
551.040771 6.700000
563.564453 6.850000
576.670593 7.000000
590.400818 7.150000
604.800842 7.310000
619.920898 7.480000
635.816284 7.650000
652.548279 7.820000
670.184753 8.010000
688.800964 8.210000
708.481018 8.390000
729.318665 8.570000
751.419250 8.620000
774.901123 8.600000
799.897949 8.450000
826.561157 8.310000
855.063293 8.210000
885.601257 8.210000


================================================
FILE: Asset/SPD/metals/AlAs.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for cubic AlAs
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 4.470000
309.950012 4.920000
317.897003 5.350000
326.263000 5.390000
335.081024 4.990000
344.389008 4.720000
354.229004 4.480000
364.647003 4.300000
375.696991 4.130000
387.437988 3.930000
393.587006 0.000000
397.372009 0.000000
399.935028 0.000000
403.187012 0.000000
406.492004 0.000000
409.850983 0.000000
413.266998 0.000000
416.739990 0.000000
420.270996 0.000000
423.863007 0.000000
427.516998 0.000000
431.235016 0.000000
435.018036 0.000000
442.785980 3.703000
459.185028 3.570000
476.846008 3.472000
495.920013 3.394000
516.583008 3.329000
539.044006 3.273000
563.545044 3.225000
590.381042 3.183000
619.900024 3.145000
652.526001 3.112000
688.778015 3.082000
729.294006 3.056000
774.875000 3.032000
826.533020 3.010000
885.570984 2.990000


================================================
FILE: Asset/SPD/metals/AlAs.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for cubic AlAs
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 2.680000
309.950012 2.490000
317.897003 2.150000
326.263000 1.300000
335.081024 0.752000
344.389008 0.519000
354.229004 0.334000
364.647003 0.233000
375.696991 0.139000
387.437988 0.115000
393.587006 0.119000
397.372009 0.115000
399.935028 0.113000
403.187012 0.110000
406.492004 0.106000
409.850983 0.099800
413.266998 0.063800
416.739990 0.031500
420.270996 0.018900
423.863007 0.011800
427.516998 0.010500
431.235016 0.010300
435.018036 0.009930
442.785980 0.001610
459.185028 0.001560
476.846008 0.001530
495.920013 0.001250
516.583008 0.000682
539.044006 0.000275
563.545044 0.000040
590.381042 0.000002
619.900024 0.000000
652.526001 0.000000
688.778015 0.000000
729.294006 0.000000
774.875000 0.000000
826.533020 0.000000
885.570984 0.000000


================================================
FILE: Asset/SPD/metals/AlSb.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for cubic AlSb
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 3.150000
309.950012 3.500000
317.897003 3.710000
326.263000 3.810000
335.081024 3.930000
344.389008 3.960000
354.229004 3.950000
364.647003 3.970000
375.696991 4.140000
387.437988 4.510000
399.935028 4.570000
413.266998 4.520000
427.516998 4.660000
442.785980 5.270000
459.185028 5.080000
476.846008 4.810000
495.920013 4.610000
516.583008 4.440000
539.044006 4.310000
563.545044 4.200000
590.381042 4.010000


================================================
FILE: Asset/SPD/metals/AlSb.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for cubic AlSb
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 4.000000
309.950012 3.710000
317.897003 3.400000
326.263000 3.160000
335.081024 2.970000
344.389008 2.810000
354.229004 2.690000
364.647003 2.640000
375.696991 2.690000
387.437988 2.470000
399.935028 2.120000
413.266998 1.970000
427.516998 2.060000
442.785980 1.580000
459.185028 0.920000
476.846008 0.630000
495.920013 0.460000
516.583008 0.330000
539.044006 0.240000
563.545044 0.010000
590.381042 0.006000


================================================
FILE: Asset/SPD/metals/Au.eta.spd
================================================
298.757050 1.795000
302.400421 1.812000
306.133759 1.822625
309.960449 1.830000
313.884003 1.837125
317.908142 1.840000
322.036835 1.834250
326.274139 1.824000
330.624481 1.812000
335.092377 1.798000
339.682678 1.782000
344.400482 1.766000
349.251221 1.752500
354.240509 1.740000
359.374420 1.727625
364.659332 1.716000
370.102020 1.705875
375.709625 1.696000
381.489777 1.684750
387.450562 1.674000
393.600555 1.666000
399.948975 1.658000
406.505493 1.647250
413.280579 1.636000
420.285339 1.628000
427.531647 1.616000
435.032196 1.596250
442.800629 1.562000
450.851562 1.502125
459.200653 1.426000
467.864838 1.345875
476.862213 1.242000
486.212463 1.086750
495.936707 0.916000
506.057861 0.754500
516.600769 0.608000
527.592224 0.491750
539.061646 0.402000
551.040771 0.345500
563.564453 0.306000
576.670593 0.267625
590.400818 0.236000
604.800842 0.212375
619.920898 0.194000
635.816284 0.177750
652.548279 0.166000
670.184753 0.161000
688.800964 0.160000
708.481018 0.160875
729.318665 0.164000
751.419250 0.169500
774.901123 0.176000
799.897949 0.181375
826.561157 0.188000
855.063293 0.198125
885.601257 0.210000


================================================
FILE: Asset/SPD/metals/Au.k.spd
================================================
298.757050 1.920375
302.400421 1.920000
306.133759 1.918875
309.960449 1.916000
313.884003 1.911375
317.908142 1.904000
322.036835 1.891375
326.274139 1.878000
330.624481 1.868250
335.092377 1.860000
339.682678 1.851750
344.400482 1.846000
349.251221 1.845250
354.240509 1.848000
359.374420 1.852375
364.659332 1.862000
370.102020 1.883000
375.709625 1.906000
381.489777 1.922500
387.450562 1.936000
393.600555 1.947750
399.948975 1.956000
406.505493 1.959375
413.280579 1.958000
420.285339 1.951375
427.531647 1.940000
435.032196 1.924500
442.800629 1.904000
450.851562 1.875875
459.200653 1.846000
467.864838 1.814625
476.862213 1.796000
486.212463 1.797375
495.936707 1.840000
506.057861 1.956500
516.600769 2.120000
527.592224 2.326250
539.061646 2.540000
551.040771 2.730625
563.564453 2.880000
576.670593 2.940625
590.400818 2.970000
604.800842 3.015000
619.920898 3.060000
635.816284 3.070000
652.548279 3.150000
670.184753 3.445812
688.800964 3.800000
708.481018 4.087687
729.318665 4.357000
751.419250 4.610188
774.901123 4.860000
799.897949 5.125813
826.561157 5.390000
855.063293 5.631250
885.601257 5.880000


================================================
FILE: Asset/SPD/metals/Be.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for polycrystalline Be
# ;  
# ;  Concatenation of:
# ;  
# ;  Be_llnl_cxro + Be_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
310.000000 2.470000
326.300018 2.550000
344.399994 2.640000
364.600006 2.730000
387.399994 2.840000
413.300018 2.950000
442.800018 3.070000
476.800018 3.190000
516.600037 3.300000
563.500000 3.390000
619.900024 3.460000
688.799988 3.470000
774.900024 3.440000
885.600037 3.350000


================================================
FILE: Asset/SPD/metals/Be.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for polycrystalline Be
# ;  
# ;  Concatenation of:
# ;  
# ;  Be_llnl_cxro + Be_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
310.000000 3.080000
326.300018 3.080000
344.399994 3.080000
364.600006 3.100000
387.399994 3.120000
413.300018 3.140000
442.800018 3.160000
476.800018 3.160000
516.600037 3.180000
563.500000 3.170000
619.900024 3.180000
688.799988 3.230000
774.900024 3.350000
885.600037 3.550000


================================================
FILE: Asset/SPD/metals/Cr.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Cr
# ;  
# ;  Concatenation of:
# ;  
# ;  Cr_llnl_cxro + Cr_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
300.194000 0.980000
307.643005 1.020000
316.276001 1.060000
323.708008 1.120000
333.279999 1.180000
341.542999 1.260000
351.217987 1.330000
362.514984 1.390000
372.312012 1.430000
385.031006 1.440000
396.102020 1.480000
409.175018 1.540000
424.589020 1.650000
438.092010 1.800000
455.808990 1.990000
471.406982 2.220000
490.040009 2.490000
512.314026 2.750000
532.102966 2.980000
558.468018 3.180000
582.066040 3.340000
610.739014 3.480000
700.452026 3.840000
815.658020 4.230000
826.533020 4.270000
849.178040 4.310000
860.971985 4.330000
885.570984 4.380000


================================================
FILE: Asset/SPD/metals/Cr.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Cr
# ;  
# ;  Concatenation of:
# ;  
# ;  Cr_llnl_cxro + Cr_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
300.194000 2.670000
307.643005 2.760000
316.276001 2.850000
323.708008 2.950000
333.279999 3.040000
341.542999 3.120000
351.217987 3.180000
362.514984 3.240000
372.312012 3.310000
385.031006 3.400000
396.102020 3.540000
409.175018 3.710000
424.589020 3.890000
438.092010 4.060000
455.808990 4.220000
471.406982 4.360000
490.040009 4.440000
512.314026 4.460000
532.102966 4.450000
558.468018 4.410000
582.066040 4.380000
610.739014 4.360000
700.452026 4.370000
815.658020 4.340000
826.533020 4.330000
849.178040 4.320000
860.971985 4.320000
885.570984 4.310000


================================================
FILE: Asset/SPD/metals/CsI.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for CsI
# ;  
# ;  Concatenation of:
# ;  
# ;  CsI_llnl_cxro + CsI_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
304.993988 1.967310
309.950012 1.956510
314.989990 1.946580
319.947998 1.937410
324.980011 1.928930
329.997009 1.921060
334.990997 1.913730
339.951019 1.906900
344.963989 1.900510
350.028015 1.894530
354.937988 1.888910
359.988007 1.883630
364.968994 1.878660
369.979004 1.873970
375.014984 1.869540
379.957001 1.865350
385.031006 1.861380
389.997009 1.857620
394.967010 1.854040
399.935028 1.850640
409.987030 1.844330
419.985992 1.838590
430.037994 1.833360
439.957001 1.828570
450.018036 1.824170
460.037018 1.820120
469.977020 1.816370
479.985016 1.812910
490.040009 1.809700
499.919006 1.806720
509.996002 1.803930
520.049988 1.801340
530.056030 1.798910
539.983032 1.796640
550.044006 1.794510
559.981995 1.792500
570.023010 1.790620
579.888000 1.788840
590.100037 1.787170
600.097046 1.785590
619.900024 1.782680
640.062012 1.780060
659.819031 1.777700
680.088013 1.775570
700.056030 1.773630
719.976990 1.771860
740.179016 1.770250
760.147034 1.768770
779.747986 1.767410
799.871033 1.766150
819.974060 1.765000
839.973083 1.763920
859.778015 1.762930
879.915039 1.762010
899.709961 1.761150


================================================
FILE: Asset/SPD/metals/CsI.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for CsI
# ;  
# ;  Concatenation of:
# ;  
# ;  CsI_llnl_cxro + CsI_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
304.993988 0.000000
309.950012 0.000000
314.989990 0.000000
319.947998 0.000000
324.980011 0.000000
329.997009 0.000000
334.990997 0.000000
339.951019 0.000000
344.963989 0.000000
350.028015 0.000000
354.937988 0.000000
359.988007 0.000000
364.968994 0.000000
369.979004 0.000000
375.014984 0.000000
379.957001 0.000000
385.031006 0.000000
389.997009 0.000000
394.967010 0.000000
399.935028 0.000000
409.987030 0.000000
419.985992 0.000000
430.037994 0.000000
439.957001 0.000000
450.018036 0.000000
460.037018 0.000000
469.977020 0.000000
479.985016 0.000000
490.040009 0.000000
499.919006 0.000000
509.996002 0.000000
520.049988 0.000000
530.056030 0.000000
539.983032 0.000000
550.044006 0.000000
559.981995 0.000000
570.023010 0.000000
579.888000 0.000000
590.100037 0.000000
600.097046 0.000000
619.900024 0.000000
640.062012 0.000000
659.819031 0.000000
680.088013 0.000000
700.056030 0.000000
719.976990 0.000000
740.179016 0.000000
760.147034 0.000000
779.747986 0.000000
799.871033 0.000000
819.974060 0.000000
839.973083 0.000000
859.778015 0.000000
879.915039 0.000000
899.709961 0.000000


================================================
FILE: Asset/SPD/metals/Cu.eta.spd
================================================
298.757050 1.400313
302.400421 1.380000
306.133759 1.358438
309.960449 1.340000
313.884003 1.329063
317.908142 1.325000
322.036835 1.332500
326.274139 1.340000
330.624481 1.334375
335.092377 1.325000
339.682678 1.317812
344.400482 1.310000
349.251221 1.300313
354.240509 1.290000
359.374420 1.281563
364.659332 1.270000
370.102020 1.249062
375.709625 1.225000
381.489777 1.200000
387.450562 1.180000
393.600555 1.174375
399.948975 1.175000
406.505493 1.177500
413.280579 1.180000
420.285339 1.178125
427.531647 1.175000
435.032196 1.172812
442.800629 1.170000
450.851562 1.165312
459.200653 1.160000
467.864838 1.155312
476.862213 1.150000
486.212463 1.142812
495.936707 1.135000
506.057861 1.131562
516.600769 1.120000
527.592224 1.092437
539.061646 1.040000
551.040771 0.950375
563.564453 0.826000
576.670593 0.645875
590.400818 0.468000
604.800842 0.351250
619.920898 0.272000
635.816284 0.230813
652.548279 0.214000
670.184753 0.209250
688.800964 0.213000
708.481018 0.216250
729.318665 0.223000
751.419250 0.236500
774.901123 0.250000
799.897949 0.254188
826.561157 0.260000
855.063293 0.280000
885.601257 0.300000


================================================
FILE: Asset/SPD/metals/Cu.k.spd
================================================
298.757050 1.662125
302.400421 1.687000
306.133759 1.703313
309.960449 1.720000
313.884003 1.744563
317.908142 1.770000
322.036835 1.791625
326.274139 1.810000
330.624481 1.822125
335.092377 1.834000
339.682678 1.851750
344.400482 1.872000
349.251221 1.894250
354.240509 1.916000
359.374420 1.931688
364.659332 1.950000
370.102020 1.972438
375.709625 2.015000
381.489777 2.121562
387.450562 2.210000
393.600555 2.177188
399.948975 2.130000
406.505493 2.160063
413.280579 2.210000
420.285339 2.249938
427.531647 2.289000
435.032196 2.326000
442.800629 2.362000
450.851562 2.397625
459.200653 2.433000
467.864838 2.469187
476.862213 2.504000
486.212463 2.535875
495.936707 2.564000
506.057861 2.589625
516.600769 2.605000
527.592224 2.595562
539.061646 2.583000
551.040771 2.576500
563.564453 2.599000
576.670593 2.678062
590.400818 2.809000
604.800842 3.010750
619.920898 3.240000
635.816284 3.458187
652.548279 3.670000
670.184753 3.863125
688.800964 4.050000
708.481018 4.239563
729.318665 4.430000
751.419250 4.619563
774.901123 4.817000
799.897949 5.034125
826.561157 5.260000
855.063293 5.485625
885.601257 5.717000


================================================
FILE: Asset/SPD/metals/Cu2O.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Cu2O
# ;  
# ;  Concatenation of:
# ;
# ;  Cu2O_llnl_cxro + Cu2O_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
350.028015 2.400000
399.935028 2.800000
449.854980 3.060000
499.919006 3.120000
549.799988 3.100000
599.806030 3.020000
649.789978 2.900000
700.056030 2.830000
750.029968 2.770000
799.871033 2.700000
849.759949 2.660000
899.709961 2.630000


================================================
FILE: Asset/SPD/metals/Cu2O.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Cu2O
# ;  
# ;  Concatenation of:
# ;
# ;  Cu2O_llnl_cxro + Cu2O_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
350.028015 1.440000
399.935028 0.990000
449.854980 0.600000
499.919006 0.350000
549.799988 0.190000
599.806030 0.130000
649.789978 0.100000
700.056030 0.083000
750.029968 0.070000
799.871033 0.060000
849.759949 0.053000
899.709961 0.048000


================================================
FILE: Asset/SPD/metals/CuO.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for CuO
# ;  
# ;  Concatenation of:
# ;  
# ;  CuO_llnl_cxro + CuO_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
350.028015 2.240000
399.935028 2.340000
449.854980 2.450000
499.919006 2.540000
549.799988 2.580000
599.806030 2.650000
649.789978 2.720000
700.056030 2.880000
750.029968 2.970000
799.871033 2.940000
849.759949 2.810000
899.709961 2.740000


================================================
FILE: Asset/SPD/metals/CuO.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for CuO
# ;  
# ;  Concatenation of:
# ;  
# ;  CuO_llnl_cxro + CuO_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
350.028015 1.030000
399.935028 0.870000
449.854980 0.770000
499.919006 0.680000
549.799988 0.590000
599.806030 0.500000
649.789978 0.400000
700.056030 0.310000
750.029968 0.220000
799.871033 0.110000
849.759949 0.040000
899.709961 0.030000


================================================
FILE: Asset/SPD/metals/Hg.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Hg
# ;  
# ;  Concatenation of:
# ;
# ;  Hg_llnl_cxro + Hg_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 0.542000
326.263000 0.589000
344.389008 0.644000
364.647003 0.713000
387.437988 0.798000
413.266998 0.898000
442.785980 1.027000
476.846008 1.186000
516.583008 1.384000
563.545044 1.620000
619.900024 1.910000
688.778015 2.284000
774.875000 2.746000
885.570984 3.324000


================================================
FILE: Asset/SPD/metals/Hg.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Hg
# ;  
# ;  Concatenation of:
# ;
# ;  Hg_llnl_cxro + Hg_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.502000
326.263000 2.665000
344.389008 2.860000
364.647003 3.074000
387.437988 3.294000
413.266998 3.538000
442.785980 3.802000
476.846008 4.090000
516.583008 4.407000
563.545044 4.751000
619.900024 5.150000
688.778015 5.582000
774.875000 6.054000
885.570984 6.558000


================================================
FILE: Asset/SPD/metals/HgTe.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for HgTe
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
300.921997 2.481000
302.243011 2.480000
303.575012 2.479000
304.919006 2.478000
306.274994 2.476000
307.643005 2.475000
309.023010 2.474000
310.415985 2.473000
311.821014 2.471000
313.238983 2.470000
314.670013 2.470000
316.113983 2.469000
317.571991 2.468000
319.042999 2.468000
320.610016 2.467000
322.110016 2.467000
323.623016 2.467000
325.151001 2.467000
326.692993 2.467000
328.250000 2.466000
329.821991 2.467000
331.409027 2.467000
333.011017 2.467000
334.628998 2.467000
336.263000 2.468000
337.912018 2.469000
339.578003 2.470000
341.261017 2.470000
343.055023 2.472000
344.772003 2.473000
346.506012 2.474000
348.258026 2.476000
350.028015 2.478000
351.816010 2.480000
353.622009 2.481000
355.446991 2.484000
357.290985 2.487000
359.154022 2.489000
361.037018 2.492000
362.938995 2.495000
364.862030 2.499000
366.805023 2.502000
368.878021 2.506000
370.864990 2.510000
372.872009 2.515000
374.902008 2.520000
376.953003 2.525000
379.028015 2.530000
381.125000 2.536000
383.246002 2.542000
385.389984 2.548000
387.559021 2.555000
389.752014 2.563000
391.970001 2.570000
394.212982 2.578000
396.482025 2.587000
398.906006 2.596000
401.230011 2.606000
403.581024 2.616000
405.959015 2.627000
408.365997 2.639000
410.802002 2.651000
413.266998 2.664000
415.760986 2.678000
418.285980 2.694000
420.842010 2.710000
423.429016 2.727000
426.048004 2.746000
428.700012 2.768000
431.535004 2.790000
434.256012 2.816000
437.010986 2.844000
439.800995 2.874000
442.627991 2.908000
445.489990 2.945000
448.391022 2.983000
451.329010 3.020000
454.306000 3.056000
457.322021 3.088000
460.378998 3.115000
463.477020 3.138000
466.616028 3.159000
469.799042 3.175000
473.206024 3.190000
476.479980 3.203000
479.799042 3.214000
483.164032 3.223000
486.577972 3.231000
490.040009 3.239000
493.550995 3.245000
497.113007 3.252000
500.727020 3.259000
504.394012 3.265000
508.114990 3.272000
511.891022 3.279000
515.724060 3.287000
519.614014 3.294000
523.785034 3.303000
527.799011 3.313000
531.875000 3.324000
536.014038 3.335000
540.218018 3.349000
544.487976 3.364000
548.827026 3.382000
553.235046 3.402000
557.715027 3.425000
562.268005 3.454000
566.895020 3.488000
571.600037 3.532000
576.382996 3.586000
581.247009 3.650000
586.471008 3.719000
591.507996 3.785000
596.631042 3.838000
601.845032 3.876000
607.150024 3.901000
612.549011 3.917000
618.046021 3.925000
623.642029 3.929000
629.340027 3.929000
635.143005 3.924000
641.054993 3.919000
647.077026 3.911000
653.214050 3.903000
659.468018 3.892000
666.200989 3.882000
672.708008 3.870000
679.341980 3.860000
686.110046 3.848000
693.013000 3.837000
700.056030 3.826000
707.245056 3.815000
714.581970 3.805000
722.072998 3.795000
729.723022 3.786000
737.537048 3.776000
745.520020 3.767000
753.677979 3.756000
762.016052 3.747000
771.020020 3.738000
779.747986 3.729000
788.677002 3.719000
797.812012 3.711000
807.161011 3.702000
816.733032 3.691000
826.533020 3.685000


================================================
FILE: Asset/SPD/metals/HgTe.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for HgTe
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
300.921997 1.782000
302.243011 1.771000
303.575012 1.761000
304.919006 1.752000
306.274994 1.744000
307.643005 1.736000
309.023010 1.729000
310.415985 1.722000
311.821014 1.716000
313.238983 1.711000
314.670013 1.706000
316.113983 1.701000
317.571991 1.697000
319.042999 1.693000
320.610016 1.690000
322.110016 1.687000
323.623016 1.684000
325.151001 1.681000
326.692993 1.679000
328.250000 1.677000
329.821991 1.675000
331.409027 1.674000
333.011017 1.673000
334.628998 1.672000
336.263000 1.672000
337.912018 1.671000
339.578003 1.671000
341.261017 1.671000
343.055023 1.672000
344.772003 1.673000
346.506012 1.674000
348.258026 1.675000
350.028015 1.677000
351.816010 1.679000
353.622009 1.681000
355.446991 1.683000
357.290985 1.686000
359.154022 1.689000
361.037018 1.692000
362.938995 1.696000
364.862030 1.699000
366.805023 1.703000
368.878021 1.707000
370.864990 1.712000
372.872009 1.716000
374.902008 1.722000
376.953003 1.727000
379.028015 1.732000
381.125000 1.738000
383.246002 1.743000
385.389984 1.750000
387.559021 1.756000
389.752014 1.763000
391.970001 1.770000
394.212982 1.777000
396.482025 1.784000
398.906006 1.792000
401.230011 1.800000
403.581024 1.808000
405.959015 1.816000
408.365997 1.825000
410.802002 1.834000
413.266998 1.844000
415.760986 1.853000
418.285980 1.863000
420.842010 1.873000
423.429016 1.883000
426.048004 1.893000
428.700012 1.904000
431.535004 1.914000
434.256012 1.924000
437.010986 1.933000
439.800995 1.940000
442.627991 1.945000
445.489990 1.946000
448.391022 1.942000
451.329010 1.932000
454.306000 1.917000
457.322021 1.898000
460.378998 1.877000
463.477020 1.856000
466.616028 1.833000
469.799042 1.812000
473.206024 1.791000
476.479980 1.771000
479.799042 1.753000
483.164032 1.736000
486.577972 1.721000
490.040009 1.707000
493.550995 1.695000
497.113007 1.683000
500.727020 1.674000
504.394012 1.665000
508.114990 1.658000
511.891022 1.653000
515.724060 1.647000
519.614014 1.644000
523.785034 1.641000
527.799011 1.641000
531.875000 1.640000
536.014038 1.642000
540.218018 1.645000
544.487976 1.649000
548.827026 1.653000
553.235046 1.660000
557.715027 1.668000
562.268005 1.677000
566.895020 1.687000
571.600037 1.696000
576.382996 1.700000
581.247009 1.694000
586.471008 1.670000
591.507996 1.626000
596.631042 1.569000
601.845032 1.507000
607.150024 1.443000
612.549011 1.382000
618.046021 1.325000
623.642029 1.272000
629.340027 1.222000
635.143005 1.176000
641.054993 1.134000
647.077026 1.094000
653.214050 1.058000
659.468018 1.024000
666.200989 0.992300
672.708008 0.964200
679.341980 0.935800
686.110046 0.910700
693.013000 0.886300
700.056030 0.863300
707.245056 0.841900
714.581970 0.822600
722.072998 0.802400
729.723022 0.782800
737.537048 0.764400
745.520020 0.747400
753.677979 0.735100
762.016052 0.722500
771.020020 0.709700
779.747986 0.695700
788.677002 0.686400
797.812012 0.671600
807.161011 0.660000
816.733032 0.655200
826.533020 0.638200


================================================
FILE: Asset/SPD/metals/Ir.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Ir
# ;  
# ;  Concatenation of:
# ;
# ;  Ir_llnl_cxro + Ir_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 1.620000
309.950012 1.640000
317.897003 1.640000
326.263000 1.610000
335.081024 1.570000
344.389008 1.520000
354.229004 1.500000
364.647003 1.530000
375.696991 1.570000
387.437988 1.620000
399.935028 1.680000
413.266998 1.730000
427.516998 1.770000
442.785980 1.810000
459.185028 1.850000
476.846008 1.910000
495.920013 1.980000
516.583008 2.070000
539.044006 2.180000
563.545044 2.290000
590.381042 2.400000
619.900024 2.500000
652.526001 2.570000
688.778015 2.640000
729.294006 2.690000
774.875000 2.680000
826.533020 2.650000
885.570984 2.720000


================================================
FILE: Asset/SPD/metals/Ir.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Ir
# ;  
# ;  Concatenation of:
# ;
# ;  Ir_llnl_cxro + Ir_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 2.700000
309.950012 2.680000
317.897003 2.670000
326.263000 2.690000
335.081024 2.720000
344.389008 2.810000
354.229004 2.930000
364.647003 3.050000
375.696991 3.150000
387.437988 3.260000
399.935028 3.350000
413.266998 3.430000
427.516998 3.510000
442.785980 3.610000
459.185028 3.730000
476.846008 3.860000
495.920013 4.000000
516.583008 4.140000
539.044006 4.260000
563.545044 4.380000
590.381042 4.480000
619.900024 4.570000
652.526001 4.680000
688.778015 4.810000
729.294006 4.920000
774.875000 5.080000
826.533020 5.390000
885.570984 5.740000


================================================
FILE: Asset/SPD/metals/K.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for polycrystalline K
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
304.993988 0.380000
309.950012 0.340000
312.291992 0.287000
334.178009 0.089000
364.647003 0.052000
405.162994 0.041000
420.270996 0.041000
439.645020 0.043000
469.621002 0.043000
506.041016 0.046000
546.166992 0.049000
598.937012 0.053000
662.995056 0.050000
751.393982 0.044000
860.971985 0.040000


================================================
FILE: Asset/SPD/metals/K.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for polycrystalline K
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
304.993988 0.070000
309.950012 0.080000
312.291992 0.091000
334.178009 0.288000
364.647003 0.549000
405.162994 0.799000
420.270996 0.898000
439.645020 1.020000
469.621002 1.140000
506.041016 1.280000
546.166992 1.430000
598.937012 1.620000
662.995056 1.840000
751.393982 2.190000
860.971985 2.560000


================================================
FILE: Asset/SPD/metals/KBr.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for cubic KBr
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
310.027008 1.638860
320.031006 1.630710
329.997009 1.623570
339.951019 1.617270
350.028015 1.611670
359.988007 1.606680
369.979004 1.602200
379.957001 1.598160
389.997009 1.594500
399.935028 1.591170
419.985992 1.585370
439.957001 1.580480
460.037018 1.576320
479.985016 1.572740
499.919006 1.569640
520.049988 1.566940
539.983032 1.564560
559.981995 1.562470
579.888000 1.560600
600.097046 1.558940
619.900024 1.557440
640.062012 1.556100
659.819031 1.554880
680.088013 1.553780
700.056030 1.552780
719.976990 1.551860
740.179016 1.551020
760.147034 1.550250
779.747986 1.549540
799.871033 1.548880
819.974060 1.548280
839.973083 1.547720
859.778015 1.547200
879.915039 1.546710
899.709961 1.546260


================================================
FILE: Asset/SPD/metals/KBr.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for cubic KBr
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
310.027008 0.000000
320.031006 0.000000
329.997009 0.000000
339.951019 0.000000
350.028015 0.000000
359.988007 0.000000
369.979004 0.000000
379.957001 0.000000
389.997009 0.000000
399.935028 0.000000
419.985992 0.000000
439.957001 0.000000
460.037018 0.000000
479.985016 0.000000
499.919006 0.000000
520.049988 0.000000
539.983032 0.000000
559.981995 0.000000
579.888000 0.000000
600.097046 0.000000
619.900024 0.000000
640.062012 0.000000
659.819031 0.000000
680.088013 0.000000
700.056030 0.000000
719.976990 0.000000
740.179016 0.000000
760.147034 0.000000
779.747986 0.000000
799.871033 0.000000
819.974060 0.000000
839.973083 0.000000
859.778015 0.000000
879.915039 0.000000
899.709961 0.000000


================================================
FILE: Asset/SPD/metals/KCl.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for KCl
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1985.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
310.027008 1.540050
320.031006 1.535180
329.997009 1.530870
339.951019 1.527030
350.028015 1.523580
359.988007 1.520490
369.979004 1.517690
379.957001 1.515150
389.997009 1.512830
399.935028 1.510720
419.985992 1.507010
439.957001 1.503860
460.037018 1.501150
479.985016 1.498820
499.919006 1.496790
520.049988 1.495010
539.983032 1.493440
559.981995 1.492050
579.888000 1.490810
600.097046 1.489690
619.900024 1.488690
640.062012 1.487790
659.819031 1.486970
680.088013 1.486230
700.056030 1.485550
719.976990 1.484930
740.179016 1.484360
760.147034 1.483840
779.747986 1.483360
799.871033 1.482910
819.974060 1.482500
839.973083 1.482120
859.778015 1.481760
879.915039 1.481430
899.709961 1.481110


================================================
FILE: Asset/SPD/metals/KCl.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for KCl
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1985.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
310.027008 0.000000
320.031006 0.000000
329.997009 0.000000
339.951019 0.000000
350.028015 0.000000
359.988007 0.000000
369.979004 0.000000
379.957001 0.000000
389.997009 0.000000
399.935028 0.000000
419.985992 0.000000
439.957001 0.000000
460.037018 0.000000
479.985016 0.000000
499.919006 0.000000
520.049988 0.000000
539.983032 0.000000
559.981995 0.000000
579.888000 0.000000
600.097046 0.000000
619.900024 0.000000
640.062012 0.000000
659.819031 0.000000
680.088013 0.000000
700.056030 0.000000
719.976990 0.000000
740.179016 0.000000
760.147034 0.000000
779.747986 0.000000
799.871033 0.000000
819.974060 0.000000
839.973083 0.000000
859.778015 0.000000
879.915039 0.000000
899.709961 0.000000


================================================
FILE: Asset/SPD/metals/Li.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Li
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
306.123016 0.346000
330.613007 0.345000
359.362030 0.334000
393.587006 0.304000
435.018036 0.247000
486.196014 0.217000
551.022034 0.206000
635.795044 0.221000
751.393982 0.265000


================================================
FILE: Asset/SPD/metals/Li.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Li
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
306.123016 1.210000
330.613007 1.320000
359.362030 1.450000
393.587006 1.600000
435.018036 1.820000
486.196014 2.110000
551.022034 2.480000
635.795044 2.940000
751.393982 3.550000


================================================
FILE: Asset/SPD/metals/MgO.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for MgO
# ;  
# ;  Concatenation of:
# ;
# ;  MgO_llnl_cxro + MgO_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 1.798000
330.613007 1.785000
351.118988 1.776800
355.549011 1.775500
360.932007 1.773200
361.141998 1.773180
364.968994 1.771860
382.065002 1.766800
386.712006 1.765500
393.337982 1.763800
404.634003 1.761040
430.935028 1.755700
435.781982 1.754710
457.829010 1.751200
477.949036 1.748300
486.004974 1.747110
487.918030 1.746900
499.919006 1.745400
502.350006 1.745300
508.531982 1.744460
514.440002 1.743900
546.166992 1.740770
589.258972 1.737370
632.874023 1.734600
643.718018 1.734000
656.325989 1.733350
667.635986 1.732770
690.695984 1.731910
706.439026 1.731010
767.677979 1.728720


================================================
FILE: Asset/SPD/metals/MgO.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for MgO
# ;  
# ;  Concatenation of:
# ;
# ;  MgO_llnl_cxro + MgO_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 0.000000
330.613007 0.000000
351.118988 0.000000
355.549011 0.000001
360.932007 0.000001
361.141998 0.000001
364.968994 0.000000
382.065002 0.000000
386.712006 0.000000
393.337982 0.000000
404.634003 0.000000
430.935028 0.000000
435.781982 0.000000
457.829010 0.000000
477.949036 0.000000
486.004974 0.000000
487.918030 0.000000
499.919006 0.000000
502.350006 0.000000
508.531982 0.000000
514.440002 0.000000
546.166992 0.000000
589.258972 0.000000
632.874023 0.000000
643.718018 0.000000
656.325989 0.000000
667.635986 0.000000
690.695984 0.000000
706.439026 0.000000
767.677979 0.000000


================================================
FILE: Asset/SPD/metals/Mo.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for 
# ;  
# ;  Concatenation of:
# ;
# ;  Mo_llnl_cxro + Mo_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 2.910000
309.950012 3.010000
317.897003 3.040000
326.263000 3.040000
335.081024 3.040000
344.389008 3.050000
354.229004 3.060000
364.647003 3.060000
375.696991 3.060000
387.437988 3.050000
399.935028 3.030000
413.266998 3.040000
427.516998 3.050000
442.785980 3.080000
459.185028 3.130000
476.846008 3.220000
495.920013 3.360000
516.583008 3.590000
539.044006 3.790000
563.545044 3.760000
590.381042 3.680000
619.900024 3.680000
652.526001 3.740000
688.778015 3.810000
729.294006 3.840000
774.875000 3.770000
826.533020 3.530000
885.570984 3.150000


================================================
FILE: Asset/SPD/metals/Mo.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for 
# ;  
# ;  Concatenation of:
# ;
# ;  Mo_llnl_cxro + Mo_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 3.670000
309.950012 3.510000
317.897003 3.400000
326.263000 3.310000
335.081024 3.270000
344.389008 3.240000
354.229004 3.210000
364.647003 3.190000
375.696991 3.180000
387.437988 3.180000
399.935028 3.220000
413.266998 3.270000
427.516998 3.330000
442.785980 3.420000
459.185028 3.510000
476.846008 3.610000
495.920013 3.730000
516.583008 3.780000
539.044006 3.610000
563.545044 3.410000
590.381042 3.450000
619.900024 3.520000
652.526001 3.580000
688.778015 3.580000
729.294006 3.510000
774.875000 3.410000
826.533020 3.300000
885.570984 3.400000


================================================
FILE: Asset/SPD/metals/NaCl.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for NaCl
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1985.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
319.947998 1.595060
339.951019 1.585900
359.988007 1.578520
379.957001 1.572480
399.935028 1.567460
419.985992 1.563240
439.957001 1.559650
460.037018 1.556570
479.985016 1.553900
499.919006 1.551570
520.049988 1.549530
539.983032 1.547730
559.981995 1.546130
579.888000 1.544710
600.097046 1.543430
619.900024 1.542280
640.062012 1.541240
659.819031 1.540300
680.088013 1.539440
700.056030 1.538650
719.976990 1.537940
740.179016 1.537280
760.147034 1.536670
779.747986 1.536110
799.871033 1.535600
819.974060 1.535120
839.973083 1.534670
859.778015 1.534260
879.915039 1.533870
899.709961 1.533510


================================================
FILE: Asset/SPD/metals/NaCl.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for NaCl
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1985.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
319.947998 0.000000
339.951019 0.000000
359.988007 0.000000
379.957001 0.000000
399.935028 0.000000
419.985992 0.000000
439.957001 0.000000
460.037018 0.000000
479.985016 0.000000
499.919006 0.000000
520.049988 0.000000
539.983032 0.000000
559.981995 0.000000
579.888000 0.000000
600.097046 0.000000
619.900024 0.000000
640.062012 0.000000
659.819031 0.000000
680.088013 0.000000
700.056030 0.000000
719.976990 0.000000
740.179016 0.000000
760.147034 0.000000
779.747986 0.000000
799.871033 0.000000
819.974060 0.000000
839.973083 0.000000
859.778015 0.000000
879.915039 0.000000
899.709961 0.000000


================================================
FILE: Asset/SPD/metals/Nb.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Nb
# ;  
# ;  Concatenation of:
# ;
# ;  Nb_llnl_cxro + Nb_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.640000
317.897003 2.620000
326.263000 2.590000
335.081024 2.560000
344.389008 2.520000
354.229004 2.480000
364.647003 2.460000
375.696991 2.440000
387.437988 2.450000
399.935028 2.480000
413.266998 2.510000
435.018036 2.580000
450.835999 2.660000
467.849030 2.740000
486.196014 2.830000
506.041016 2.890000
527.575012 2.920000
551.022034 2.930000
576.651001 2.920000
604.781006 2.890000
635.795044 2.820000
670.162048 2.690000
708.456970 2.540000
751.393982 2.360000
799.871033 2.150000
855.033997 1.950000


================================================
FILE: Asset/SPD/metals/Nb.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Nb
# ;  
# ;  Concatenation of:
# ;
# ;  Nb_llnl_cxro + Nb_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.330000
317.897003 2.290000
326.263000 2.280000
335.081024 2.270000
344.389008 2.290000
354.229004 2.330000
364.647003 2.380000
375.696991 2.450000
387.437988 2.530000
399.935028 2.600000
413.266998 2.680000
435.018036 2.800000
450.835999 2.860000
467.849030 2.900000
486.196014 2.920000
506.041016 2.900000
527.575012 2.880000
551.022034 2.870000
576.651001 2.870000
604.781006 2.870000
635.795044 2.860000
670.162048 2.890000
708.456970 2.990000
751.393982 3.130000
799.871033 3.370000
855.033997 3.680000


================================================
FILE: Asset/SPD/metals/Rh.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Rh
# ;  
# ;  Concatenation of:
# ;
# ;  Rh_llnl_cxro + Rh_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 0.840000
309.950012 0.860000
317.897003 0.880000
326.263000 0.910000
335.081024 0.950000
344.389008 0.990000
354.229004 1.040000
364.647003 1.110000
375.696991 1.200000
387.437988 1.300000
399.935028 1.410000
413.266998 1.530000
427.516998 1.630000
459.185028 1.800000
476.846008 1.850000
495.920013 1.880000
516.583008 1.900000
539.044006 1.940000
563.545044 2.000000
590.381042 2.050000
619.900024 2.120000
652.526001 2.200000
688.778015 2.300000
729.294006 2.420000
774.875000 2.600000
826.533020 2.780000
885.570984 3.010000


================================================
FILE: Asset/SPD/metals/Rh.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Rh
# ;  
# ;  Concatenation of:
# ;
# ;  Rh_llnl_cxro + Rh_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 3.030000
309.950012 3.120000
317.897003 3.230000
326.263000 3.340000
335.081024 3.450000
344.389008 3.580000
354.229004 3.710000
364.647003 3.840000
375.696991 3.970000
387.437988 4.090000
399.935028 4.200000
413.266998 4.290000
427.516998 4.360000
459.185028 4.490000
476.846008 4.550000
495.920013 4.650000
516.583008 4.780000
539.044006 4.940000
563.545044 5.110000
590.381042 5.300000
619.900024 5.510000
652.526001 5.760000
688.778015 6.020000
729.294006 6.330000
774.875000 6.640000
826.533020 6.970000
885.570984 7.310000


================================================
FILE: Asset/SPD/metals/Se-e.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Se, extraordinary ray
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
344.389008 3.390000
364.647003 3.690000
387.437988 3.920000
413.266998 4.440000
442.785980 4.590000
476.846008 4.400000
516.583008 4.280000
563.545044 4.490000
619.900024 4.790000
688.778015 4.460000


================================================
FILE: Asset/SPD/metals/Se-e.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Se, extraordinary ray
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
344.389008 3.010000
364.647003 2.760000
387.437988 2.590000
413.266998 2.290000
442.785980 1.700000
476.846008 1.320000
516.583008 1.210000
563.545044 1.190000
619.900024 0.760000
688.778015 0.022000


================================================
FILE: Asset/SPD/metals/Se.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Se, ordinary ray
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.670000
326.263000 2.840000
344.389008 3.060000
364.647003 3.220000
387.437988 3.350000
413.266998 3.300000
442.785980 3.120000
476.846008 3.000000
516.583008 2.930000
563.545044 3.070000
619.900024 3.380000
688.778015 3.320000


================================================
FILE: Asset/SPD/metals/Se.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Se, ordinary ray
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 1.990000
326.263000 1.660000
344.389008 1.470000
364.647003 1.240000
387.437988 1.010000
413.266998 0.700000
442.785980 0.580000
476.846008 0.530000
516.583008 0.610000
563.545044 0.730000
619.900024 0.650000
688.778015 0.110000


================================================
FILE: Asset/SPD/metals/SiC.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for crystalline SiC
# ;  
# ;  Concatenation of:
# ;
# ;  SiC_llnl_cxro + SiC_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.850000
317.897003 2.923000
326.263000 2.899000
335.081024 2.877000
344.389008 2.856000
354.229004 2.836000
364.647003 2.817000
375.696991 2.799000
387.437988 2.781000
399.935028 2.765000
413.266998 2.750000
435.781982 2.730500
466.968018 2.707400
495.920013 2.684000
497.912018 2.687000
515.080994 2.678900
546.166992 2.663100
567.934021 2.655700
577.995056 2.651100
588.979004 2.648800
589.539001 2.647500
615.897034 2.641100
619.900024 2.634000
656.325989 2.629600
691.080994 2.624300
826.533020 2.598000


================================================
FILE: Asset/SPD/metals/SiC.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for crystalline SiC
# ;  
# ;  Concatenation of:
# ;
# ;  SiC_llnl_cxro + SiC_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 0.174000
317.897003 0.007650
326.263000 0.005980
335.081024 0.004930
344.389008 0.003750
354.229004 0.002890
364.647003 0.002040
375.696991 0.001380
387.437988 0.000839
399.935028 0.000191
413.266998 0.000044
435.781982 0.000000
466.968018 0.000000
495.920013 0.000012
497.912018 0.000000
515.080994 0.000000
546.166992 0.000000
567.934021 0.000000
577.995056 0.000000
588.979004 0.000000
589.539001 0.000000
615.897034 0.000000
619.900024 0.000000
656.325989 0.000000
691.080994 0.000000
826.533020 0.000000


================================================
FILE: Asset/SPD/metals/SiO.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for SiO
# ;  
# ;  Concatenation of:
# ;
# ;  SiO_llnl_cxro + SiO_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.141000
326.263000 2.157000
344.389008 2.162000
364.647003 2.160000
387.437988 2.144000
413.266998 2.116000
442.785980 2.085000
476.846008 2.053000
516.583008 2.021000
563.545044 1.994000
619.900024 1.969000
688.778015 1.948000
774.875000 1.929000
885.570984 1.913000


================================================
FILE: Asset/SPD/metals/SiO.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for SiO
# ;  
# ;  Concatenation of:
# ;
# ;  SiO_llnl_cxro + SiO_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 0.400600
326.263000 0.345300
344.389008 0.287200
364.647003 0.228700
387.437988 0.170600
413.266998 0.121100
442.785980 0.083740
476.846008 0.055440
516.583008 0.035330
563.545044 0.021530
619.900024 0.011750
688.778015 0.005230
774.875000 0.001510
885.570984 0.000000


================================================
FILE: Asset/SPD/metals/SnTe.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for SnTe
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
311.586029 0.967000
332.118988 1.007000
361.037018 1.103000
390.242004 1.228000
414.372040 1.364000
453.308990 1.551000
498.312012 1.702000
533.476990 1.813000
548.099060 1.878000
550.533020 1.989000
552.987976 2.135000
558.216980 2.442000
566.119019 2.719000
582.339050 2.991000
605.963013 3.273000
621.454041 3.479000
648.091980 3.701000
681.208984 3.912000
748.671021 4.285000
804.020996 4.541000
867.478027 4.803000


================================================
FILE: Asset/SPD/metals/SnTe.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for SnTe
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
311.586029 0.000000
332.118988 0.000000
361.037018 0.000000
390.242004 0.000000
414.372040 0.000000
453.308990 0.000000
498.312012 0.000000
533.476990 0.000000
548.099060 0.000000
550.533020 0.000000
552.987976 0.000000
558.216980 0.000000
566.119019 0.000000
582.339050 0.000000
605.963013 0.000000
621.454041 0.000000
648.091980 0.000000
681.208984 0.000000
748.671021 0.000000
804.020996 0.000000
867.478027 0.000000


================================================
FILE: Asset/SPD/metals/Ta.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Ta
# ;  
# ;  Concatenation of:
# ;
# ;  Ta_llnl_cxro + Ta_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.360000
326.263000 2.400000
344.389008 2.490000
364.647003 2.610000
387.437988 2.730000
413.266998 2.810000
427.516998 2.840000
442.785980 2.850000
459.185028 2.840000
476.846008 2.800000
495.920013 2.750000
516.583008 2.680000
539.044006 2.560000
563.545044 2.360000
590.381042 2.100000
619.900024 1.830000
652.526001 1.570000
688.778015 1.350000
729.294006 1.240000
774.875000 1.150000
826.533020 1.090000
885.570984 1.040000


================================================
FILE: Asset/SPD/metals/Ta.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for Ta
# ;  
# ;  Concatenation of:
# ;
# ;  Ta_llnl_cxro + Ta_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.140000
326.263000 2.220000
344.389008 2.300000
364.647003 2.330000
387.437988 2.310000
413.266998 2.240000
427.516998 2.200000
442.785980 2.140000
459.185028 2.080000
476.846008 2.020000
495.920013 1.980000
516.583008 1.920000
539.044006 1.860000
563.545044 1.810000
590.381042 1.840000
619.900024 1.990000
652.526001 2.240000
688.778015 2.600000
729.294006 2.950000
774.875000 3.330000
826.533020 3.730000
885.570984 4.150000


================================================
FILE: Asset/SPD/metals/Te-e.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for trigonal Te, extraordinary ray
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 1.330000
330.613007 1.440000
354.229004 1.690000
381.477020 1.920000
403.975006 2.220000
413.266998 2.300000
416.599030 2.350000
430.037994 2.540000
442.785980 2.730000
444.373016 2.760000
459.696014 2.980000
476.114014 3.210000
476.846008 3.250000
489.266022 3.460000
498.512024 3.630000
507.906982 3.810000
516.583008 3.940000
517.877991 3.990000
528.024048 4.200000
538.809021 4.390000
549.799988 4.650000
561.249023 4.910000
563.545044 4.940000
573.450989 5.170000
599.226990 5.760000
612.851990 6.000000
619.900024 4.670000
627.429016 6.210000
642.382996 6.400000
658.416992 6.580000
674.904968 6.770000
688.778015 6.890000
692.625977 6.850000
710.895020 6.860000
730.583008 6.800000
750.939026 6.780000
772.943054 6.740000
774.875000 6.750000
796.275024 6.730000
820.516052 6.810000
846.858032 6.950000
874.330017 7.140000
885.570984 7.110000


================================================
FILE: Asset/SPD/metals/Te-e.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for trigonal Te, extraordinary ray
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.640000
330.613007 3.060000
354.229004 3.440000
381.477020 3.780000
403.975006 3.960000
413.266998 4.160000
416.599030 4.150000
430.037994 4.270000
442.785980 4.420000
444.373016 4.390000
459.696014 4.520000
476.114014 4.710000
476.846008 4.770000
489.266022 4.850000
498.512024 4.930000
507.906982 5.010000
516.583008 5.080000
517.877991 5.080000
528.024048 5.160000
538.809021 5.200000
549.799988 5.210000
561.249023 5.200000
563.545044 5.160000
573.450989 5.160000
599.226990 4.920000
612.851990 4.770000
619.900024 4.670000
627.429016 4.600000
642.382996 4.360000
658.416992 4.100000
674.904968 3.860000
688.778015 3.700000
692.625977 3.650000
710.895020 3.470000
730.583008 3.180000
750.939026 3.030000
772.943054 2.930000
774.875000 2.910000
796.275024 2.890000
820.516052 2.860000
846.858032 2.800000
874.330017 2.560000
885.570984 2.460000


================================================
FILE: Asset/SPD/metals/Te.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for trigonal Te,ordinary ray
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 1.320000
330.613007 1.500000
354.229004 1.720000
381.477020 2.020000
403.975006 2.370000
413.266998 2.510000
416.599030 2.560000
430.037994 2.770000
442.785980 3.030000
444.373016 3.010000
459.696014 3.270000
476.114014 3.550000
476.846008 3.570000
489.266022 3.760000
498.512024 3.910000
507.906982 4.070000
516.583008 4.240000
517.877991 4.250000
528.024048 4.430000
538.809021 4.620000
549.799988 4.810000
561.249023 5.010000
563.545044 5.100000
573.450989 5.260000
599.226990 5.670000
612.851990 5.820000
619.900024 5.940000
627.429016 5.970000
642.382996 6.070000
658.416992 6.110000
674.904968 6.120000
688.778015 6.100000
692.625977 6.090000
710.895020 6.040000
730.583008 5.950000
750.939026 5.870000
772.943054 5.860000
774.875000 5.880000
796.275024 5.840000
820.516052 5.780000
846.858032 5.680000
874.330017 5.590000
885.570984 5.560000


================================================
FILE: Asset/SPD/metals/Te.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for trigonal Te,ordinary ray
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.010000
330.613007 2.370000
354.229004 2.700000
381.477020 3.030000
403.975006 3.290000
413.266998 3.390000
416.599030 3.390000
430.037994 3.470000
442.785980 3.630000
444.373016 3.570000
459.696014 3.660000
476.114014 3.720000
476.846008 3.750000
489.266022 3.760000
498.512024 3.770000
507.906982 3.770000
516.583008 3.770000
517.877991 3.780000
528.024048 3.760000
538.809021 3.690000
549.799988 3.630000
561.249023 3.570000
563.545044 3.610000
573.450989 3.520000
599.226990 3.160000
612.851990 2.940000
619.900024 2.690000
627.429016 2.700000
642.382996 2.450000
658.416992 2.250000
674.904968 2.020000
688.778015 1.800000
692.625977 1.720000
710.895020 1.520000
730.583008 1.360000
750.939026 1.260000
772.943054 1.170000
774.875000 1.150000
796.275024 1.060000
820.516052 0.895000
846.858032 0.760000
874.330017 0.659000
885.570984 0.630000


================================================
FILE: Asset/SPD/metals/ThF4.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for polycrystalline ThF4
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 1.545000
319.947998 1.542000
329.997009 1.540000
340.044006 1.538000
349.929016 1.536000
359.988007 1.534000
369.979004 1.532000
379.957001 1.531000
389.997009 1.530000
399.935028 1.529000
409.987030 1.528000
419.985992 1.527000
430.037994 1.526000
435.781982 1.533000
439.957001 1.526000
450.018036 1.525000
460.037018 1.524000
469.977020 1.524000
479.985016 1.523000
490.040009 1.523000
499.919006 1.523000
509.996002 1.522000
520.049988 1.522000
539.983032 1.521000
545.927002 1.521000
559.981995 1.521000
579.888000 1.520000
600.097046 1.520000
619.900024 1.520000
640.062012 1.519000
659.819031 1.519000
700.056030 1.519000
739.737000 1.518000
779.747986 1.518000
799.871033 1.518000


================================================
FILE: Asset/SPD/metals/ThF4.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for polycrystalline ThF4
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids II', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1991.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 0.000000
319.947998 0.000000
329.997009 0.000000
340.044006 0.000000
349.929016 0.000000
359.988007 0.000000
369.979004 0.000000
379.957001 0.000000
389.997009 0.000000
399.935028 0.000000
409.987030 0.000000
419.985992 0.000000
430.037994 0.000000
435.781982 0.000000
439.957001 0.000000
450.018036 0.000000
460.037018 0.000000
469.977020 0.000000
479.985016 0.000000
490.040009 0.000000
499.919006 0.000000
509.996002 0.000000
520.049988 0.000000
539.983032 0.000000
545.927002 0.000000
559.981995 0.000000
579.888000 0.000000
600.097046 0.000000
619.900024 0.000000
640.062012 0.000000
659.819031 0.000000
700.056030 0.000000
739.737000 0.000000
779.747986 0.000000
799.871033 0.000000


================================================
FILE: Asset/SPD/metals/TiC.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for TiC
# ;  
# ;  Concatenation of:
# ;
# ;  TiC_llnl_cxro + TiC_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.300000
354.229004 2.570000
413.266998 2.780000
495.920013 2.950000
619.900024 3.050000
826.533020 3.510000


================================================
FILE: Asset/SPD/metals/TiC.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for TiC
# ;  
# ;  Concatenation of:
# ;
# ;  TiC_llnl_cxro + TiC_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.330000
354.229004 2.340000
413.266998 2.430000
495.920013 2.380000
619.900024 2.670000
826.533020 3.070000


================================================
FILE: Asset/SPD/metals/TiN.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for TiN
# ;  
# ;  Concatenation of:
# ;
# ;  TiN_llnl_cxro + TiN_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.270000
354.229004 2.140000
413.266998 1.740000
495.920013 1.200000
619.900024 1.320000
826.533020 1.820000


================================================
FILE: Asset/SPD/metals/TiN.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for TiN
# ;  
# ;  Concatenation of:
# ;
# ;  TiN_llnl_cxro + TiN_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 1.230000
354.229004 1.060000
413.266998 1.040000
495.920013 1.650000
619.900024 2.690000
826.533020 3.810000


================================================
FILE: Asset/SPD/metals/TiO2-e.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for tetragonal TiO2, extraordinary ray
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1985.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
307.033020 3.420000
317.979004 4.000000
327.037994 3.870000
344.007019 4.300000
358.013000 3.380000
388.044006 2.880000
399.935028 3.000000
402.010010 3.000000
419.985992 2.910000
439.957001 2.840000
460.037018 2.790000
479.985016 2.750000
499.919006 2.710000
520.049988 2.680000
539.983032 2.660000
559.981995 2.640000
579.888000 2.620000
600.097046 2.600000
619.900024 2.590000
640.062012 2.580000
659.819031 2.570000
680.088013 2.560000
700.056030 2.550000
719.976990 2.540000
740.179016 2.540000
760.147034 2.530000
779.747986 2.520000
799.871033 2.520000
819.974060 2.520000
839.973083 2.510000
859.778015 2.510000
879.915039 2.500000
899.709961 2.500000


================================================
FILE: Asset/SPD/metals/TiO2-e.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for tetragonal TiO2, extraordinary ray
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1985.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
307.033020 1.610000
317.979004 1.790000
327.037994 0.810000
344.007019 0.000000
358.013000 0.117000
388.044006 0.000000
399.935028 0.000000
402.010010 0.008000
419.985992 0.000000
439.957001 0.000000
460.037018 0.000000
479.985016 0.000000
499.919006 0.000000
520.049988 0.000000
539.983032 0.000000
559.981995 0.000000
579.888000 0.000000
600.097046 0.000000
619.900024 0.000000
640.062012 0.000000
659.819031 0.000000
680.088013 0.000000
700.056030 0.000000
719.976990 0.000000
740.179016 0.000000
760.147034 0.000000
779.747986 0.000000
799.871033 0.000000
819.974060 0.000000
839.973083 0.000000
859.778015 0.000000
879.915039 0.000000
899.709961 0.000000


================================================
FILE: Asset/SPD/metals/TiO2.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for tetragonal TiO2, ordinary ray
# ;  
# ;  Concatenation of:
# ;
# ;  TiO2_llnl_cxro + TiO2_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
305.972015 3.840000
317.979004 5.380000
334.990997 4.220000
344.007019 4.360000
359.988007 3.870000
388.044006 3.490000
399.935028 3.400000
412.031006 3.240000
419.985992 3.290000
439.957001 3.200000
460.037018 3.130000
479.985016 3.080000
499.919006 3.030000
520.049988 3.000000
539.044006 2.950000
539.983032 2.970000
559.981995 2.940000
579.888000 2.920000
600.097046 2.900000
619.900024 2.880000
640.062012 2.870000
659.819031 2.850000
680.088013 2.840000
700.056030 2.830000
719.976990 2.820000
740.179016 2.810000
760.147034 2.810000
779.747986 2.800000
799.871033 2.790000
819.974060 2.790000
839.973083 2.780000
859.778015 2.780000
879.915039 2.770000
899.709961 2.770000


================================================
FILE: Asset/SPD/metals/TiO2.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for tetragonal TiO2, ordinary ray
# ;  
# ;  Concatenation of:
# ;
# ;  TiO2_llnl_cxro + TiO2_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
305.972015 1.950000
317.979004 2.180000
334.990997 0.788000
344.007019 0.000000
359.988007 0.251000
388.044006 0.000000
399.935028 0.000000
412.031006 0.022000
419.985992 0.000000
439.957001 0.000000
460.037018 0.000000
479.985016 0.000000
499.919006 0.000000
520.049988 0.000000
539.044006 0.000000
539.983032 0.000000
559.981995 0.000000
579.888000 0.000000
600.097046 0.000000
619.900024 0.000000
640.062012 0.000000
659.819031 0.000000
680.088013 0.000000
700.056030 0.000000
719.976990 0.000000
740.179016 0.000000
760.147034 0.000000
779.747986 0.000000
799.871033 0.000000
819.974060 0.000000
839.973083 0.000000
859.778015 0.000000
879.915039 0.000000
899.709961 0.000000


================================================
FILE: Asset/SPD/metals/VC.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for VC
# ;  
# ;  Concatenation of:
# ;
# ;  VC_llnl_cxro + VC_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.470000
354.229004 2.590000
413.266998 2.770000
495.920013 2.840000
619.900024 3.010000
826.533020 3.370000


================================================
FILE: Asset/SPD/metals/VC.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for VC
# ;  
# ;  Concatenation of:
# ;
# ;  VC_llnl_cxro + VC_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.150000
354.229004 2.120000
413.266998 2.160000
495.920013 2.210000
619.900024 2.510000
826.533020 2.880000


================================================
FILE: Asset/SPD/metals/VN.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for VN
# ;  
# ;  Concatenation of:
# ;
# ;  VN_llnl_cxro + VN_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 2.200000
354.229004 2.180000
413.266998 2.130000
495.920013 2.170000
619.900024 2.350000
826.533020 2.730000


================================================
FILE: Asset/SPD/metals/VN.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for VN
# ;  
# ;  Concatenation of:
# ;
# ;  VN_llnl_cxro + VN_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 1.540000
354.229004 1.580000
413.266998 1.700000
495.920013 1.980000
619.900024 2.470000
826.533020 2.920000


================================================
FILE: Asset/SPD/metals/W.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for W
# ;  
# ;  Concatenation of:
# ;
# ;  W_llnl_cxro + W_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 2.970000
309.950012 2.950000
313.873016 2.950000
317.897003 2.960000
322.026001 2.980000
326.263000 2.990000
330.613007 3.020000
335.081024 3.050000
339.670990 3.090000
344.389008 3.130000
349.238983 3.180000
354.229004 3.240000
359.362030 3.320000
364.647003 3.390000
370.089996 3.430000
375.696991 3.450000
381.477020 3.450000
387.437988 3.430000
393.587006 3.410000
399.935028 3.390000
406.492004 3.370000
413.266998 3.350000
420.270996 3.330000
427.516998 3.320000
435.018036 3.310000
442.785980 3.300000
450.835999 3.310000
459.185028 3.310000
467.849030 3.320000
476.846008 3.340000
486.196014 3.350000
495.920013 3.380000
506.041016 3.420000
516.583008 3.450000
527.575012 3.480000
539.044006 3.500000
551.022034 3.500000
563.545044 3.490000
576.651001 3.510000
590.381042 3.540000
604.781006 3.570000
619.900024 3.600000
635.795044 3.650000
652.526001 3.700000
670.162048 3.760000
688.778015 3.820000
708.456970 3.850000
729.294006 3.840000
751.393982 3.780000
774.875000 3.670000
799.871033 3.560000
826.533020 3.480000
855.033997 3.380000
885.570984 3.290000


================================================
FILE: Asset/SPD/metals/W.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for W
# ;  
# ;  Concatenation of:
# ;
# ;  W_llnl_cxro + W_palik
# ;
# ;    Lambda (A)            n            k
# ;-----------------------------------------
302.389984 2.370000
309.950012 2.430000
313.873016 2.460000
317.897003 2.500000
322.026001 2.530000
326.263000 2.560000
330.613007 2.600000
335.081024 2.620000
339.670990 2.650000
344.389008 2.670000
349.238983 2.690000
354.229004 2.700000
359.362030 2.700000
364.647003 2.660000
370.089996 2.600000
375.696991 2.550000
381.477020 2.490000
387.437988 2.450000
393.587006 2.430000
399.935028 2.410000
406.492004 2.420000
413.266998 2.420000
420.270996 2.430000
427.516998 2.450000
435.018036 2.470000
442.785980 2.490000
450.835999 2.530000
459.185028 2.550000
467.849030 2.590000
476.846008 2.620000
486.196014 2.640000
495.920013 2.680000
506.041016 2.710000
516.583008 2.720000
527.575012 2.720000
539.044006 2.720000
551.022034 2.730000
563.545044 2.750000
576.651001 2.810000
590.381042 2.840000
604.781006 2.860000
619.900024 2.890000
635.795044 2.920000
652.526001 2.940000
670.162048 2.950000
688.778015 2.910000
708.456970 2.860000
729.294006 2.780000
751.393982 2.720000
774.875000 2.680000
799.871033 2.730000
826.533020 2.790000
855.033997 2.850000
885.570984 2.960000


================================================
FILE: Asset/SPD/metals/a-C.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for amorphous carbon
# ;  
# ;  Concatenation of:
# ;
# ;  a-C_llnl_cxro + a-C_windt88 + a-C_palik
# ;  
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 1.840000
326.263000 1.900000
344.389008 1.940000
364.647003 2.000000
387.437988 2.060000
413.266998 2.110000
442.785980 2.170000
476.846008 2.240000
516.583008 2.300000
563.545044 2.380000
619.900024 2.430000
688.778015 2.430000
774.875000 2.330000
885.570984 2.240000


================================================
FILE: Asset/SPD/metals/a-C.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for amorphous carbon
# ;  
# ;  Concatenation of:
# ;
# ;  a-C_llnl_cxro + a-C_windt88 + a-C_palik
# ;  
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 0.808000
326.263000 0.910000
344.389008 0.920000
364.647003 0.920000
387.437988 0.910000
413.266998 0.900000
442.785980 0.890000
476.846008 0.880000
516.583008 0.870000
563.545044 0.820000
619.900024 0.750000
688.778015 0.700000
774.875000 0.710000
885.570984 0.800000


================================================
FILE: Asset/SPD/metals/a-SiH.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for a-Si:H, amorphous glow-discharge Si onto
# ;  400 C substrates, ~4 at.% H
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1985.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 3.360000
354.229004 4.590000
413.266998 5.430000
495.920013 5.250000
619.900024 4.710000
826.533020 4.130000


================================================
FILE: Asset/SPD/metals/a-SiH.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for a-Si:H, amorphous glow-discharge Si onto
# ;  400 C substrates, ~4 at.% H
# ; 
# ;   taken from:
# ;
# ;   'Handbook of Optical Constants of Solids', Ed. by Edward D. Palik,
# ;   Academic Press, Inc., 1985.
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
309.950012 3.920000
354.229004 3.380000
413.266998 2.190000
495.920013 0.992000
619.900024 0.217000
826.533020 0.000000


================================================
FILE: Asset/SPD/metals/d-C.eta.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for diamond
# ;  
# ;  Concatenation of:
# ;
# ;  d-C_llnl_cxro + d-C_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
346.700012 2.495400
361.037018 2.485400
404.634003 2.462600
467.795990 2.440800
486.120026 2.435400
508.552002 2.430600
546.047058 2.423500
588.979004 2.417500
643.818054 2.411100
656.257019 2.410400


================================================
FILE: Asset/SPD/metals/d-C.k.spd
================================================
# data from www.luxpop.com database
# ;  Optical constants for diamond
# ;  
# ;  Concatenation of:
# ;
# ;  d-C_llnl_cxro + d-C_palik
# ;   
# ;    Lambda (A)            n            k
# ;-----------------------------------------
346.700012 0.000000
361.037018 0.000000
404.634003 0.000000
467.795990 0.000000
486.120026 0.000000
508.552002 0.000000
546.047058 0.000000
588.979004 0.000000
643.818054 0.000000
656.257019 0.000000


================================================
FILE: Doc/Material.drawio
================================================
<mxfile host="65bd71144e">
    <diagram id="Oj6RUKoLF9Hl1Nya2uuC" name="第 1 页">
        <mxGraphModel dx="1064" dy="674" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
            <root>
                <mxCell id="0"/>
                <mxCell id="1" parent="0"/>
                <mxCell id="48" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Diffuse&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="80" y="440" width="200" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="59" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="50" target="55">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="60" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="50" target="56">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="50" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Dielectric&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="80" y="520" width="200" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="51" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;ThinDielectric&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="80" y="600" width="200" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="61" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="53" target="57">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="62" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="53" target="58">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="53" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Conductor&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="80" y="680" width="200" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="54" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;ThinConductor&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="80" y="760" width="200" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="55" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Smooth Dielectric&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="400" y="480" width="240" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="56" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Rough Dielectric&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="400" y="560" width="240" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="57" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Smooth&amp;nbsp;&lt;/font&gt;&lt;span style=&quot;font-size: 24px;&quot;&gt;Conductor&lt;/span&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="400" y="640" width="240" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="58" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Rough&amp;nbsp;&lt;/font&gt;&lt;span style=&quot;font-size: 24px;&quot;&gt;Conductor&lt;/span&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="400" y="720" width="240" height="80" as="geometry"/>
                </mxCell>
            </root>
        </mxGraphModel>
    </diagram>
</mxfile>

================================================
FILE: Doc/RHI.drawio
================================================
<mxfile host="65bd71144e">
    <diagram id="qQwCbRc1wy9BN8YB_Oij" name="第 1 页">
        <mxGraphModel dx="1064" dy="674" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="none" math="0" shadow="0">
            <root>
                <mxCell id="0"/>
                <mxCell id="1" parent="0"/>
                <mxCell id="57" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;RHI&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="80" y="280" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="58" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Device&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="200" y="280" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="59" value="Vulkan" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;" vertex="1" parent="1">
                    <mxGeometry x="80" y="340" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="60" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;VkInstance&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;" vertex="1" parent="1">
                    <mxGeometry x="200" y="340" width="80" height="30" as="geometry"/>
                </mxCell>
                <mxCell id="61" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;VkDevice&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;" vertex="1" parent="1">
                    <mxGeometry x="280" y="340" width="80" height="30" as="geometry"/>
                </mxCell>
                <mxCell id="62" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;VkPhysicalDevice&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;" vertex="1" parent="1">
                    <mxGeometry x="200" y="370" width="160" height="30" as="geometry"/>
                </mxCell>
                <mxCell id="63" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Texture&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="360" y="280" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="64" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;VkImage&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;" vertex="1" parent="1">
                    <mxGeometry x="360" y="340" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="65" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Buffer&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="480" y="280" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="66" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;VkBuffer&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;" vertex="1" parent="1">
                    <mxGeometry x="480" y="340" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="67" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Queue&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="600" y="280" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="68" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Descriptor&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="720" y="280" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="69" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Shader&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="880" y="280" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="70" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Sampler&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="1000" y="280" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="71" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Swapchain&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="1160" y="280" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="72" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Command&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="1320" y="280" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="73" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Render Target&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="1480" y="280" width="170" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="74" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;Synchronization&lt;/span&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="1650" y="280" width="190" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="75" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;VkQueue&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;" vertex="1" parent="1">
                    <mxGeometry x="600" y="340" width="120" height="60" as="geometry"/>
                </mxCell>
            </root>
        </mxGraphModel>
    </diagram>
</mxfile>

================================================
FILE: Doc/RenderGraph.drawio
================================================


================================================
FILE: Doc/Resource.drawio
================================================
<mxfile host="65bd71144e">
    <diagram id="B0Vu0QsbAyju_w0uTxer" name="第 1 页">
        <mxGraphModel dx="2317" dy="944" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="none" math="0" shadow="0">
            <root>
                <mxCell id="0"/>
                <mxCell id="1" parent="0"/>
                <mxCell id="36" value="" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" parent="1" vertex="1">
                    <mxGeometry x="-460" y="120" width="140" height="340" as="geometry"/>
                </mxCell>
                <mxCell id="12" value="" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" parent="1" vertex="1">
                    <mxGeometry x="640" y="120" width="220" height="310" as="geometry"/>
                </mxCell>
                <mxCell id="21" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;dashed=1;" parent="1" source="2" target="5" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="2" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Mesh&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
                    <mxGeometry x="320" y="10" width="200" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="22" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;dashed=1;" parent="1" source="3" target="5" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="3" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Skinned Mesh&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
                    <mxGeometry x="320" y="90" width="200" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="15" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;dashed=1;" parent="1" source="4" target="2" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="16" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;dashed=1;" parent="1" source="4" target="3" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="17" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;dashed=1;" parent="1" source="4" target="6" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="25" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;dashed=1;" parent="1" source="4" target="9" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="4" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Prefab&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
                    <mxGeometry y="170" width="200" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="5" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Scene&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;" parent="1" vertex="1">
                    <mxGeometry x="650" y="200" width="200" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="23" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;dashed=1;" parent="1" source="6" target="5" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Animation&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
                    <mxGeometry x="320" y="170" width="200" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="7" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Texture2D&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
                    <mxGeometry y="290" width="200" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="8" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;TextureCube&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
                    <mxGeometry y="410" width="200" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="20" style="edgeStyle=none;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;dashed=1;" parent="1" source="9" target="7" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="24" style="edgeStyle=none;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontSize=24;dashed=1;" parent="1" source="9" target="5" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="9" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Material&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;" parent="1" vertex="1">
                    <mxGeometry x="650" y="320" width="200" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="26" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" parent="1" source="10" target="4" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="10" value="Model Importer" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
                    <mxGeometry x="-240" y="160" width="160" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="11" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;Render Pipeline&lt;/span&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;" parent="1" vertex="1">
                    <mxGeometry x="650" y="130" width="200" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="13" value="Engine Resource" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=24;" parent="1" vertex="1">
                    <mxGeometry x="650" y="390" width="200" height="30" as="geometry"/>
                </mxCell>
                <mxCell id="28" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" parent="1" source="27" target="7" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="29" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" parent="1" source="27" target="8" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="27" value="Texture&lt;br&gt;Importer" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
                    <mxGeometry x="-240" y="340" width="160" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="31" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" parent="1" source="30" target="10" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="30" value="Assimp" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" parent="1" vertex="1">
                    <mxGeometry x="-450" y="170" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="34" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" parent="1" source="32" target="27" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="32" value="STB" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" parent="1" vertex="1">
                    <mxGeometry x="-450" y="320" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="35" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" parent="1" source="33" target="27" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="33" value="DDS" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" parent="1" vertex="1">
                    <mxGeometry x="-450" y="390" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="37" value="Plugin" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=24;" parent="1" vertex="1">
                    <mxGeometry x="-420" y="130" width="60" height="30" as="geometry"/>
                </mxCell>
            </root>
        </mxGraphModel>
    </diagram>
</mxfile>

================================================
FILE: Doc/Scene.drawio
================================================
<mxfile host="65bd71144e">
    <diagram id="DN1jI_-sQySN9qRA725S" name="第 1 页">
        <mxGraphModel dx="1973" dy="944" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="none" math="0" shadow="0">
            <root>
                <mxCell id="0"/>
                <mxCell id="1" parent="0"/>
                <mxCell id="34" value="" style="rounded=0;whiteSpace=wrap;html=1;fontSize=24;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" vertex="1" parent="1">
                    <mxGeometry x="354" y="100" width="496" height="310" as="geometry"/>
                </mxCell>
                <mxCell id="21" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="2" target="3">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="22" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="2" target="4">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="2" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Scene&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" parent="1" vertex="1">
                    <mxGeometry x="40" y="90" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="24" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="3" target="6">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="25" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="3" target="5">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="3" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Entity #1&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" parent="1" vertex="1">
                    <mxGeometry x="-80" y="250" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="31" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.576;entryY=-0.011;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=24;curved=1;" edge="1" parent="1" source="4" target="26">
                    <mxGeometry relative="1" as="geometry">
                        <Array as="points">
                            <mxPoint x="220" y="40"/>
                            <mxPoint x="612" y="40"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="33" style="edgeStyle=orthogonalEdgeStyle;curved=1;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="4" target="32">
                    <mxGeometry relative="1" as="geometry">
                        <Array as="points">
                            <mxPoint x="220" y="480"/>
                            <mxPoint x="760" y="480"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="4" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Entity #2&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" parent="1" vertex="1">
                    <mxGeometry x="160" y="250" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="5" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;...&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" parent="1" vertex="1">
                    <mxGeometry x="40" y="410" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="6" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;Entity #N&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" parent="1" vertex="1">
                    <mxGeometry x="-200" y="410" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="17" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Light&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fa6800;strokeColor=#C73500;fontColor=#000000;" vertex="1" parent="1">
                    <mxGeometry x="360" y="120" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="18" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Camera&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;" vertex="1" parent="1">
                    <mxGeometry x="360" y="180" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="19" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Renderable&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" vertex="1" parent="1">
                    <mxGeometry x="360" y="240" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="20" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Transform&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e51400;fontColor=#ffffff;strokeColor=#B20000;" vertex="1" parent="1">
                    <mxGeometry x="360" y="300" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="26" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;#0 Cmpt #0&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fa6800;strokeColor=#C73500;fontColor=#000000;" vertex="1" parent="1">
                    <mxGeometry x="520" y="120" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="27" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;#1 Cmpt #0&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;" vertex="1" parent="1">
                    <mxGeometry x="520" y="180" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="28" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;#2 Cmpt #0&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" vertex="1" parent="1">
                    <mxGeometry x="520" y="240" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="29" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;#3 Cmpt #0&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e51400;fontColor=#ffffff;strokeColor=#B20000;" vertex="1" parent="1">
                    <mxGeometry x="520" y="300" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="30" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;#0 Cmpt #1&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fa6800;strokeColor=#C73500;fontColor=#000000;" vertex="1" parent="1">
                    <mxGeometry x="680" y="120" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="32" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;#3 Cmpt #1&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e51400;fontColor=#ffffff;strokeColor=#B20000;" vertex="1" parent="1">
                    <mxGeometry x="680" y="300" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="35" value="Component Map" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=24;" vertex="1" parent="1">
                    <mxGeometry x="503" y="370" width="198" height="30" as="geometry"/>
                </mxCell>
            </root>
        </mxGraphModel>
    </diagram>
</mxfile>

================================================
FILE: Doc/Shader.drawio
================================================
<mxfile host="65bd71144e" pages="1">
    <diagram id="FqTtuIh2T_jkB8yKotZ9" name="第 1 页">
        <mxGraphModel dx="1146" dy="726" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="none" math="0" shadow="0">
            <root>
                <mxCell id="0"/>
                <mxCell id="1" parent="0"/>
                <mxCell id="31" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" target="6" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <Array as="points">
                            <mxPoint x="180" y="90"/>
                            <mxPoint x="580" y="90"/>
                        </Array>
                        <mxPoint x="180" y="160.0000000000001" as="sourcePoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="52" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="46" target="49">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="62" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="46" target="51">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="46" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;HLSL&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" vertex="1" parent="1">
                    <mxGeometry x="40" y="260" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="53" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="47" target="50">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="47" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;GLSL&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" vertex="1" parent="1">
                    <mxGeometry x="40" y="480" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="58" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="49" target="57">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="67" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="49" target="65">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="49" value="dxc" style="rounded=1;whiteSpace=wrap;html=1;fontSize=24;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" vertex="1" parent="1">
                    <mxGeometry x="240" y="260" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="66" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="50" target="65">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="50" value="glslang" style="rounded=1;whiteSpace=wrap;html=1;fontSize=24;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" vertex="1" parent="1">
                    <mxGeometry x="240" y="480" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="64" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="51" target="63">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="51" value="slang" style="rounded=1;whiteSpace=wrap;html=1;fontSize=24;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" vertex="1" parent="1">
                    <mxGeometry x="240" y="160" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="57" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;DXIL&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" vertex="1" parent="1">
                    <mxGeometry x="440" y="260" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="63" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;PTX&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" vertex="1" parent="1">
                    <mxGeometry x="440" y="160" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="70" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="65" target="69">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="73" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="65" target="72">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="65" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;SPIR-V&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" vertex="1" parent="1">
                    <mxGeometry x="240" y="370" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="71" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="69" target="46">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="69" value="spirv-cross" style="rounded=1;whiteSpace=wrap;html=1;fontSize=24;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" vertex="1" parent="1">
                    <mxGeometry x="20" y="370" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="75" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=24;" edge="1" parent="1" source="72" target="74">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="72" value="spirv-reflect" style="rounded=1;whiteSpace=wrap;html=1;fontSize=24;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" vertex="1" parent="1">
                    <mxGeometry x="420" y="370" width="160" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="74" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;Meta Info&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" vertex="1" parent="1">
                    <mxGeometry x="440" y="480" width="120" height="60" as="geometry"/>
                </mxCell>
            </root>
        </mxGraphModel>
    </diagram>
</mxfile>

================================================
FILE: LICENSE.txt
================================================
MIT License

Copyright (c) 2021 Chaf-Graphics

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# Ilum(WIP)

[![Windows](https://github.com/Chaf-Libraries/Ilum/actions/workflows/windows_main.yml/badge.svg)](https://github.com/Chaf-Libraries/Ilum/actions/workflows/windows.yml) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/b0cb3a2729ee4be783dd5feb2cc67eb6)](https://www.codacy.com/gh/Chaf-Libraries/IlumEngine/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=Chaf-Libraries/IlumEngine&amp;utm_campaign=Badge_Grade)

Ilum Graphics Playground, name after *Planet Ilum* from [star wars](https://starwars.fandom.com/wiki/Ilum).

A framework for computer graphics learning and practice (It's not a game engine!)  
[bilibili: Project demo video](https://www.bilibili.com/video/BV1Zy4y1f7PX/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=80dfe42ae16a11fb93eda40958202849)

![image-20230212023548756](Doc/Img/image-20230212023548756.png)

## Install

**Platform**

* Windows 10
* Visual Studio 2022
* xmake >= v2.7.5
* [optional] CUDA >= 11.7

**Build**

Ilum uses [xmake](https://xmake.io/#/) for building. You can compile the whole project by simply run command:

```shell
xmake -y
```

or you can open the project in Visual Studio by generating `.sln` file:

```shell
xmake project -k vsxmake
```

## Feature

### Cross-Platform RHI

* Vulkan
  * Mesh Shading
  * Dynamic Rendering
  * Ray Tracing Pipeline
  * Draw/Dispatch Indirect
  * Bindless Resource

* CUDA
  * CUDA & Vulkan Interop


### Resource Manager

![](./Doc/Img/Resource.png)

### Scene Graph

![](./Doc/Img/Scene.png)

### Shader Compilation

![shader](Doc/Img/shader.png)

### Render Graph

* Static compilation
* Automatic resource state tracking and transition
* Texture memory aliasing
* Seamless interoperation between Graphics API and CUDA
* Easy to customize render pass

**Render Pass**

* Visibility Deferred Shading Pipeline

  * Visibility Geometry Pass
    * Mesh shading with meshlet frustum culling (if device support `mesh_shader`)
    * Usual rasterization without optimization

  * Visibility Buffer Visualization
    * Visualize visibility buffer: instance and primitive
  * Visibility Buffer Lighting Pass
    * Indirect dispatch to support multiple material graphs
    * Generate lighting result and GBuffer

* Shadow

  * Classic Shadow Map (Spot Light)
  * Omnidirectional Shadow Map (Point Light)
  * Cascade Shadow Map (Directional Light)

* Ambient Occlusion
  * SSAO

* IBL
  * Spherical Harmonic Encoding Diffuse
  * Pre-Filter For Specular

* Ray Tracing
  * Path Tracing
* Post Process
  * Tone Mapping
  * Bloom
  * FXAA

**TODO**

* Resource Pool
* Runtime compilation maybe
* Multi-threading

### Material Graph

**Feature**

* Static compilation and HLSL generation
* Easy to customize material node
* Support usual BSDF models

### Plugins

You can extend the renderer features by adding these plugins:

* RHI
* Render Pass
* Material Node
* Importer
* Editor

#### Customize Render Pass



#### Customize Material Node



## Gallery

### Render Graph Editor

![image-20230210193225994](./Doc/Img/image-20230210193225994.png)

### Material Graph Editor

![image-20230210194028080](./Doc/Img/image-20230210194028080.png)

### Path Tracing

![](./Doc/Img/material.png)

## Reference

* [https://www.pbr-book.org/](https://www.pbr-book.org/)
* [http://www.realtimerendering.com/](http://www.realtimerendering.com/)
* [https://learnopengl-cn.github.io/](https://learnopengl-cn.github.io/)
* [https://hazelengine.com/](https://hazelengine.com/)
* [https://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf](https://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf)
* [https://www.gdcvault.com/play/1024612/FrameGraph-Extensible-Rendering-Architecture-in](https://www.gdcvault.com/play/1024612/FrameGraph-Extensible-Rendering-Architecture-in)
* [https://github.com/SaschaWillems/Vulkan](https://github.com/SaschaWillems/Vulkan)
* [https://github.com/KhronosGroup/Vulkan-Samples](https://github.com/KhronosGroup/Vulkan-Samples)
* [https://github.com/wdas/brdf](https://github.com/wdas/brdf)
* [http://blog.selfshadow.com/publications/s2015-shading-course/burley/s2015_pbs_disney_bsdf_notes.pdf.](http://blog.selfshadow.com/publications/s2015-shading-course/burley/s2015_pbs_disney_bsdf_notes.pdf.)
* [https://www.froyok.fr/blog/2021-12-ue4-custom-bloom/](https://www.froyok.fr/blog/2021-12-ue4-custom-bloom/)

* [https://filmicworlds.com/blog/visibility-buffer-rendering-with-material-graphs](https://filmicworlds.com/blog/visibility-buffer-rendering-with-material-graphs)


================================================
FILE: Source/Editor/Editor.cpp
================================================
#include "Editor.hpp"
#include "ImGui/ImGuiContext.hpp"
#include "Widget.hpp"

#include <Core/Plugin.hpp>
#include <Scene/Components/Camera/Camera.hpp>
#include <Scene/Node.hpp>

#include <imgui.h>

#include <filesystem>
#include <regex>

namespace Ilum
{
struct Editor::Impl
{
	std::unique_ptr<GuiContext> imgui_context = nullptr;

	RHIContext *rhi_context = nullptr;
	Renderer   *renderer    = nullptr;

	std::vector<std::unique_ptr<Widget>> widgets;

	Node *select = nullptr;

	Cmpt::Camera *main_camera = nullptr;
};

Editor::Editor(Window *window, RHIContext *rhi_context, Renderer *renderer)
{
	m_impl = new Impl;

	m_impl->imgui_context = std::make_unique<GuiContext>(rhi_context, window);
	m_impl->renderer      = renderer;
	m_impl->rhi_context   = rhi_context;

	for (const auto &file : std::filesystem::directory_iterator("shared/Editor/"))
	{
		m_impl->widgets.emplace_back(std::unique_ptr<Widget>(std::move(PluginManager::GetInstance().Call<Widget *>(file.path().string(), "Create", this, ImGui::GetCurrentContext()))));
	}
}

Editor::~Editor()
{
	m_impl->imgui_context.reset();
	delete m_impl;
}

void Editor::PreTick()
{
	m_impl->imgui_context->BeginFrame();
}

void Editor::Tick()
{
	if (ImGui::BeginMainMenuBar())
	{
		if (ImGui::BeginMenu("Widget"))
		{
			for (auto &widget : m_impl->widgets)
			{
				ImGui::MenuItem(widget->GetName().c_str(), nullptr, &widget->GetActive());
			}
			ImGui::EndMenu();
		}

		ImGui::EndMainMenuBar();
	}

	for (auto &widget : m_impl->widgets)
	{
		if (widget->GetActive())
		{
			widget->Tick();
		}
	}
}

void Editor::PostTick()
{
	m_impl->imgui_context->EndFrame();
	m_impl->imgui_context->Render();
}

Renderer *Editor::GetRenderer() const
{
	return m_impl->renderer;
}

RHIContext *Editor::GetRHIContext() const
{
	return m_impl->rhi_context;
}

Window *Editor::GetWindow() const
{
	return m_impl->imgui_context->GetWindow();
}

void Editor::SelectNode(Node *node)
{
	m_impl->select = node;
}

void Editor::SetMainCamera(Cmpt::Camera *camera)
{
	m_impl->main_camera = camera;
}

Node *Editor::GetSelectedNode() const
{
	return m_impl->select;
}

Cmpt::Camera *Editor::GetMainCamera() const
{
	return m_impl->main_camera;
}
}        // namespace Ilum

================================================
FILE: Source/Editor/Editor.hpp
================================================
#pragma once

#include <Core/Core.hpp>

#include <memory>
#include <vector>

namespace Ilum
{
class Window;
class RHIContext;
class GuiContext;
class Widget;
class Renderer;
class Node;

namespace Cmpt
{
class Camera;
}

class EXPORT_API Editor
{
  public:
	Editor(Window *window, RHIContext *rhi_context, Renderer *renderer);

	~Editor();

	void PreTick();

	void Tick();

	void PostTick();

	Renderer *GetRenderer() const;

	RHIContext *GetRHIContext() const;

	Window *GetWindow() const;

	void SelectNode(Node *node = nullptr);

	void SetMainCamera(Cmpt::Camera *camera = nullptr);

	Node *GetSelectedNode() const;

	Cmpt::Camera *GetMainCamera() const;

  private:
	struct Impl;
	Impl* m_impl = nullptr;
};
}        // namespace Ilum

================================================
FILE: Source/Editor/ImGui/ImGuiContext.cpp
================================================
#include "ImGuiContext.hpp"

#include <Core/Path.hpp>
#include <ShaderCompiler/ShaderCompiler.hpp>

#include <imgui.h>
#include <imgui_impl_glfw.h>
#include <imnodes/imnodes.h>
#include <implot/implot.h>

#include <IconsFontAwesome/IconsFontAwesome5.h>

#include <GLFW/glfw3.h>
#define GLFW_EXPOSE_NATIVE_WIN32
#include <GLFW/glfw3native.h>

#undef CreateSemaphore

namespace Ilum
{
static RHIContext       *gContext       = nullptr;
static Window           *gWindow        = nullptr;
static RHIPipelineState *gPipelineState = nullptr;
static RHIDescriptor    *gDescriptor    = nullptr;
static RHISampler       *gSampler       = nullptr;
static RHIRenderTarget  *gRenderTarget  = nullptr;

struct ConstantBlock
{
	glm::vec2 scale;
	glm::vec2 translate;
};

struct ViewportResources
{
	ViewportResources(const std::string &name = "subwindow")
	{
		uniform_buffer = gContext->CreateBuffer(BufferDesc{
		    "imgui_uniform_buffer - " + name + std::to_string((uint64_t) this),
		    RHIBufferUsage::ConstantBuffer,
		    RHIMemoryUsage::CPU_TO_GPU,
		    sizeof(ConstantBlock),
		});

		for (uint32_t i = 0; i < 3; i++)
		{
			render_completes[i]  = gContext->CreateSemaphore();
			present_completes[i] = gContext->CreateSemaphore();
		}
	}

	std::unique_ptr<RHIBuffer> vertex_buffer  = nullptr;
	std::unique_ptr<RHIBuffer> index_buffer   = nullptr;
	std::unique_ptr<RHIBuffer> uniform_buffer = nullptr;

	std::array<std::unique_ptr<RHISemaphore>, 3> render_completes;
	std::array<std::unique_ptr<RHISemaphore>, 3> present_completes;

	std::vector<RHICommand *> cmd_buffers;

	uint32_t vertex_count = 0;
	uint32_t index_count  = 0;

	uint32_t frame_index = 0;
};

struct WindowData
{
	std::unique_ptr<ViewportResources> viewport_data;
	std::unique_ptr<RHISwapchain>      swapchain;
};

static std::unique_ptr<ViewportResources> gResource;

GuiContext::GuiContext(RHIContext *context, Window *window) :
    p_context(context), p_window(window)
{
	gContext = p_context;
	gWindow  = p_window;

	gResource = std::make_unique<ViewportResources>("mainwindows");

	ImGui::CreateContext();

	SetStyle();

	ImGui_ImplGlfw_InitForOther(window->GetHandle(), true);

	m_pipeline_state = context->CreatePipelineState();
	m_render_target  = context->CreateRenderTarget();
	m_sampler        = context->CreateSampler(SamplerDesc{
        RHIFilter::Linear,
        RHIFilter::Linear,
        RHIAddressMode::Clamp_To_Edge,
        RHIAddressMode::Clamp_To_Edge,
        RHIAddressMode::Clamp_To_Edge,
        RHIMipmapMode::Linear,
        RHISamplerBorderColor::Float_Opaque_White});

	// Setup pipeline state
	DepthStencilState depth_stencil_state  = {};
	depth_stencil_state.depth_test_enable  = false;
	depth_stencil_state.depth_write_enable = false;
	depth_stencil_state.compare            = RHICompareOp::Always;

	RasterizationState rasterization_state = {};
	rasterization_state.cull_mode          = RHICullMode::None;
	rasterization_state.polygon_mode       = RHIPolygonMode::Solid;
	rasterization_state.front_face         = RHIFrontFace::Clockwise;

	InputAssemblyState input_assembly_state = {};
	input_assembly_state.topology           = RHIPrimitiveTopology::Triangle;

	BlendState blend_state = {};
	blend_state.enable     = false;
	blend_state.attachment_states.push_back(BlendState::AttachmentState{
	    true,
	    RHIBlendFactor::Src_Alpha,
	    RHIBlendFactor::One_Minus_Src_Alpha,
	    RHIBlendOp::Add,
	    RHIBlendFactor::One,
	    RHIBlendFactor::One_Minus_Src_Alpha,
	    RHIBlendOp::Add,
	    1 | 2 | 4 | 8});

	VertexInputState vertex_input_state = {};
	vertex_input_state.input_attributes = {
	    VertexInputState::InputAttribute{RHIVertexSemantics::Position, 0, 0, RHIFormat::R32G32_FLOAT, offsetof(ImDrawVert, pos)},
	    VertexInputState::InputAttribute{RHIVertexSemantics::Texcoord, 1, 0, RHIFormat::R32G32_FLOAT, offsetof(ImDrawVert, uv)},
	    VertexInputState::InputAttribute{RHIVertexSemantics::Texcoord, 2, 0, RHIFormat::R8G8B8A8_UNORM, offsetof(ImDrawVert, col)},
	};

	vertex_input_state.input_bindings = {
	    VertexInputState::InputBinding{0, sizeof(ImDrawVert), RHIVertexInputRate::Vertex}};

	/*std::vector<uint8_t> raw_shader;
	Path::GetInstance().Read("./Source/Shaders/ImGui.hlsl", raw_shader);

	std::string shader_source;
	shader_source.resize(raw_shader.size());
	std::memcpy(shader_source.data(), raw_shader.data(), raw_shader.size());
	shader_source += "\n";

	ShaderDesc vertex_shader_desc  = {};
	vertex_shader_desc.entry_point = "VSmain";
	vertex_shader_desc.stage       = RHIShaderStage::Vertex;
	vertex_shader_desc.source      = ShaderSource::HLSL;
	vertex_shader_desc.target      = ShaderTarget::SPIRV;
	vertex_shader_desc.code        = shader_source;
	vertex_shader_desc.macros      = {"VULKAN_BACKEND"};

	ShaderDesc fragment_shader_desc  = {};
	fragment_shader_desc.entry_point = "PSmain";
	fragment_shader_desc.stage       = RHIShaderStage::Fragment;
	fragment_shader_desc.source      = ShaderSource::HLSL;
	fragment_shader_desc.target      = ShaderTarget::SPIRV;
	fragment_shader_desc.code        = shader_source;
	fragment_shader_desc.macros      = {"VULKAN_BACKEND"};

	ShaderMeta vertex_meta   = {};
	ShaderMeta fragment_meta = {};

	auto vertex_shader_spirv   = ShaderCompiler::GetInstance().Compile(vertex_shader_desc, vertex_meta);
	auto fragment_shader_spirv = ShaderCompiler::GetInstance().Compile(fragment_shader_desc, fragment_meta);

	m_vertex_shader   = p_context->CreateShader("VSmain", vertex_shader_spirv);
	m_fragment_shader = p_context->CreateShader("PSmain", fragment_shader_spirv);

	ShaderMeta shader_meta= vertex_meta;
	shader_meta += fragment_meta;*/

	ShaderMeta           shader_meta;
	std::vector<uint8_t> vertex_shader_spirv;
	std::vector<uint8_t> fragment_shader_spirv;
	DESERIALIZE("Asset/BuildIn/ImGui.spv.asset", vertex_shader_spirv, fragment_shader_spirv, shader_meta);

	m_vertex_shader   = p_context->CreateShader("VSmain", vertex_shader_spirv);
	m_fragment_shader = p_context->CreateShader("PSmain", fragment_shader_spirv);

	m_descriptor = p_context->CreateDescriptor(shader_meta);

	m_pipeline_state->SetDepthStencilState(depth_stencil_state);
	m_pipeline_state->SetRasterizationState(rasterization_state);
	m_pipeline_state->SetVertexInputState(vertex_input_state);
	m_pipeline_state->SetBlendState(blend_state);
	m_pipeline_state->SetInputAssemblyState(input_assembly_state);
	m_pipeline_state->SetShader(RHIShaderStage::Vertex, m_vertex_shader.get());
	m_pipeline_state->SetShader(RHIShaderStage::Fragment, m_fragment_shader.get());

	// Font atlas
	unsigned char *pixels;
	int32_t        atlas_width, atlas_height, bpp;
	auto          &io = ImGui::GetIO();
	io.Fonts->GetTexDataAsRGBA32(&pixels, &atlas_width, &atlas_height, &bpp);

	const uint32_t size = atlas_width * atlas_height * bpp;

	auto buffer = p_context->CreateBuffer(static_cast<size_t>(size), RHIBufferUsage::Transfer, RHIMemoryUsage::CPU_TO_GPU);
	std::memcpy(buffer->Map(), pixels, size);
	buffer->Unmap();

	m_font_atlas = p_context->CreateTexture2D(atlas_width, atlas_height, RHIFormat::R8G8B8A8_UNORM, RHITextureUsage::ShaderResource | RHITextureUsage::Transfer, false);

	auto *cmd_buffer = p_context->CreateCommand(RHIQueueFamily::Graphics);
	cmd_buffer->Begin();
	cmd_buffer->BeginMarker("UI");
	cmd_buffer->ResourceStateTransition({TextureStateTransition{
	                                        m_font_atlas.get(),
	                                        RHIResourceState::Undefined,
	                                        RHIResourceState::TransferDest,
	                                        TextureRange{RHITextureDimension::Texture2D, 0, 1, 0, 1}}},
	                                    {});
	cmd_buffer->CopyBufferToTexture(buffer.get(), m_font_atlas.get(), 0, 0, 1);
	cmd_buffer->ResourceStateTransition({TextureStateTransition{
	                                        m_font_atlas.get(),
	                                        RHIResourceState::TransferDest,
	                                        RHIResourceState::ShaderResource,
	                                        TextureRange{RHITextureDimension::Texture2D, 0, 1, 0, 1}}},
	                                    {});
	cmd_buffer->EndMarker();
	cmd_buffer->End();

	p_context->Execute(cmd_buffer);

	io.Fonts->TexID = static_cast<ImTextureID>(m_font_atlas.get());

	gPipelineState = m_pipeline_state.get();
	gDescriptor    = m_descriptor;
	gSampler       = m_sampler;
	gRenderTarget  = m_render_target.get();

	InitializePlatformInterface();
}

GuiContext::~GuiContext()
{
	ImGui_ImplGlfw_Shutdown();
	ImGui::DestroyContext();

	gContext       = nullptr;
	gWindow        = nullptr;
	gPipelineState = nullptr;
	gDescriptor    = nullptr;
	gSampler       = nullptr;
	gRenderTarget  = nullptr;

	gResource.reset();
}

void GuiContext::BeginFrame()
{
	ImGui_ImplGlfw_NewFrame();
	ImGui::NewFrame();

	ImGuiWindowFlags window_flags = ImGuiWindowFlags_NoDocking;
	window_flags |= ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove;
	window_flags |= ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus;
	ImGuiViewport *viewport = ImGui::GetMainViewport();
	ImGui::SetNextWindowPos(viewport->WorkPos);
	ImGui::SetNextWindowSize(viewport->WorkSize);
	ImGui::SetNextWindowViewport(viewport->ID);
	ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
	ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
	ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f));
	ImGui::Begin("DockSpace", (bool *) 1, window_flags);
	ImGui::PopStyleVar();
	ImGui::PopStyleVar(2);

	ImGuiIO &io = ImGui::GetIO();
	if (io.ConfigFlags & ImGuiConfigFlags_DockingEnable)
	{
		ImGuiID dockspace_id = ImGui::GetID("DockSpace");
		ImGui::DockSpace(dockspace_id, ImVec2(0.0f, 0.0f), ImGuiDockNodeFlags_None);
	}
}

void GuiContext::EndFrame()
{
	ImGui::End();
	ImGuiIO &io    = ImGui::GetIO();
	io.DisplaySize = ImVec2(static_cast<float>(gWindow->GetWidth()), static_cast<float>(gWindow->GetHeight()));

	ImGui::EndFrame();

	ImGui::Render();

	if (ImGui::GetIO().ConfigFlags & ImGuiConfigFlags_ViewportsEnable)
	{
		ImGui::UpdatePlatformWindows();
		ImGui::RenderPlatformWindowsDefault();
	}
}

void GuiContext::SetStyle()
{
	ImGuiIO &io = ImGui::GetIO();
	(void) io;
	io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
	io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;
	io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
	io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable;

	io.BackendFlags |= ImGuiBackendFlags_RendererHasViewports;

	// Set fonts
	static const ImWchar icon_ranges[] = {ICON_MIN_FA, ICON_MAX_FA, 0};
	ImFontConfig         config;
	config.MergeMode        = true;
	config.GlyphMinAdvanceX = 13.0f;
	io.Fonts->AddFontFromFileTTF("./Asset/Font/ArialUnicodeMS.ttf", 20.0f, NULL, io.Fonts->GetGlyphRangesChineseFull());
	io.Fonts->AddFontFromFileTTF("./Asset/Font/fontawesome-webfont.ttf", 15.0f, &config, icon_ranges);

	// When viewports are enabled we tweak WindowRounding/WindowBg so platform windows can look identical to regular ones.
	ImGuiStyle &style  = ImGui::GetStyle();
	auto        colors = style.Colors;

	if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable)
	{
		style.WindowRounding              = 0.0f;
		style.Colors[ImGuiCol_WindowBg].w = 1.0f;
	}

	colors[ImGuiCol_Text]                  = ImVec4(1.00f, 1.00f, 1.00f, 1.00f);
	colors[ImGuiCol_TextDisabled]          = ImVec4(0.50f, 0.50f, 0.50f, 1.00f);
	colors[ImGuiCol_WindowBg]              = ImVec4(0.06f, 0.06f, 0.06f, 0.94f);
	colors[ImGuiCol_ChildBg]               = ImVec4(0.00f, 0.00f, 0.00f, 0.00f);
	colors[ImGuiCol_PopupBg]               = ImVec4(0.08f, 0.08f, 0.08f, 0.94f);
	colors[ImGuiCol_Border]                = ImVec4(0.43f, 0.43f, 0.50f, 0.50f);
	colors[ImGuiCol_BorderShadow]          = ImVec4(0.00f, 0.00f, 0.00f, 0.00f);
	colors[ImGuiCol_FrameBg]               = ImVec4(0.44f, 0.44f, 0.44f, 0.60f);
	colors[ImGuiCol_FrameBgHovered]        = ImVec4(0.57f, 0.57f, 0.57f, 0.70f);
	colors[ImGuiCol_FrameBgActive]         = ImVec4(0.76f, 0.76f, 0.76f, 0.80f);
	colors[ImGuiCol_TitleBg]               = ImVec4(0.04f, 0.04f, 0.04f, 1.00f);
	colors[ImGuiCol_TitleBgActive]         = ImVec4(0.16f, 0.16f, 0.16f, 1.00f);
	colors[ImGuiCol_TitleBgCollapsed]      = ImVec4(0.00f, 0.00f, 0.00f, 0.60f);
	colors[ImGuiCol_MenuBarBg]             = ImVec4(0.14f, 0.14f, 0.14f, 1.00f);
	colors[ImGuiCol_ScrollbarBg]           = ImVec4(0.02f, 0.02f, 0.02f, 0.53f);
	colors[ImGuiCol_ScrollbarGrab]         = ImVec4(0.31f, 0.31f, 0.31f, 1.00f);
	colors[ImGuiCol_ScrollbarGrabHovered]  = ImVec4(0.41f, 0.41f, 0.41f, 1.00f);
	colors[ImGuiCol_ScrollbarGrabActive]   = ImVec4(0.51f, 0.51f, 0.51f, 1.00f);
	colors[ImGuiCol_CheckMark]             = ImVec4(0.13f, 0.75f, 0.55f, 0.80f);
	colors[ImGuiCol_SliderGrab]            = ImVec4(0.13f, 0.75f, 0.75f, 0.80f);
	colors[ImGuiCol_SliderGrabActive]      = ImVec4(0.13f, 0.75f, 1.00f, 0.80f);
	colors[ImGuiCol_Button]                = ImVec4(0.13f, 0.75f, 0.55f, 0.40f);
	colors[ImGuiCol_ButtonHovered]         = ImVec4(0.13f, 0.75f, 0.75f, 0.60f);
	colors[ImGuiCol_ButtonActive]          = ImVec4(0.13f, 0.75f, 1.00f, 0.80f);
	colors[ImGuiCol_Header]                = ImVec4(0.13f, 0.75f, 0.55f, 0.40f);
	colors[ImGuiCol_HeaderHovered]         = ImVec4(0.13f, 0.75f, 0.75f, 0.60f);
	colors[ImGuiCol_HeaderActive]          = ImVec4(0.13f, 0.75f, 1.00f, 0.80f);
	colors[ImGuiCol_Separator]             = ImVec4(0.13f, 0.75f, 0.55f, 0.40f);
	colors[ImGuiCol_SeparatorHovered]      = ImVec4(0.13f, 0.75f, 0.75f, 0.60f);
	colors[ImGuiCol_SeparatorActive]       = ImVec4(0.13f, 0.75f, 1.00f, 0.80f);
	colors[ImGuiCol_ResizeGrip]            = ImVec4(0.13f, 0.75f, 0.55f, 0.40f);
	colors[ImGuiCol_ResizeGripHovered]     = ImVec4(0.13f, 0.75f, 0.75f, 0.60f);
	colors[ImGuiCol_ResizeGripActive]      = ImVec4(0.13f, 0.75f, 1.00f, 0.80f);
	colors[ImGuiCol_Tab]                   = ImVec4(0.13f, 0.75f, 0.55f, 0.80f);
	colors[ImGuiCol_TabHovered]            = ImVec4(0.13f, 0.75f, 0.75f, 0.80f);
	colors[ImGuiCol_TabActive]             = ImVec4(0.13f, 0.75f, 1.00f, 0.80f);
	colors[ImGuiCol_TabUnfocused]          = ImVec4(0.18f, 0.18f, 0.18f, 1.00f);
	colors[ImGuiCol_TabUnfocusedActive]    = ImVec4(0.36f, 0.36f, 0.36f, 0.54f);
	colors[ImGuiCol_DockingPreview]        = ImVec4(0.13f, 0.75f, 0.55f, 0.80f);
	colors[ImGuiCol_DockingEmptyBg]        = ImVec4(0.13f, 0.13f, 0.13f, 0.80f);
	colors[ImGuiCol_PlotLines]             = ImVec4(0.61f, 0.61f, 0.61f, 1.00f);
	colors[ImGuiCol_PlotLinesHovered]      = ImVec4(1.00f, 0.43f, 0.35f, 1.00f);
	colors[ImGuiCol_PlotHistogram]         = ImVec4(0.90f, 0.70f, 0.00f, 1.00f);
	colors[ImGuiCol_PlotHistogramHovered]  = ImVec4(1.00f, 0.60f, 0.00f, 1.00f);
	colors[ImGuiCol_TableHeaderBg]         = ImVec4(0.19f, 0.19f, 0.20f, 1.00f);
	colors[ImGuiCol_TableBorderStrong]     = ImVec4(0.31f, 0.31f, 0.35f, 1.00f);
	colors[ImGuiCol_TableBorderLight]      = ImVec4(0.23f, 0.23f, 0.25f, 1.00f);
	colors[ImGuiCol_TableRowBg]            = ImVec4(0.00f, 0.00f, 0.00f, 0.00f);
	colors[ImGuiCol_TableRowBgAlt]         = ImVec4(1.00f, 1.00f, 1.00f, 0.07f);
	colors[ImGuiCol_TextSelectedBg]        = ImVec4(0.26f, 0.59f, 0.98f, 0.35f);
	colors[ImGuiCol_DragDropTarget]        = ImVec4(1.00f, 1.00f, 0.00f, 0.90f);
	colors[ImGuiCol_NavHighlight]          = ImVec4(0.26f, 0.59f, 0.98f, 1.00f);
	colors[ImGuiCol_NavWindowingHighlight] = ImVec4(1.00f, 1.00f, 1.00f, 0.70f);
	colors[ImGuiCol_NavWindowingDimBg]     = ImVec4(0.80f, 0.80f, 0.80f, 0.20f);
	colors[ImGuiCol_ModalWindowDimBg]      = ImVec4(0.80f, 0.80f, 0.80f, 0.35f);

	style.WindowPadding     = ImVec2(8.00f, 8.00f);
	style.FramePadding      = ImVec2(5.00f, 2.00f);
	style.CellPadding       = ImVec2(6.00f, 6.00f);
	style.ItemSpacing       = ImVec2(6.00f, 6.00f);
	style.ItemInnerSpacing  = ImVec2(6.00f, 6.00f);
	style.TouchExtraPadding = ImVec2(0.00f, 0.00f);
	style.IndentSpacing     = 25;
	style.ScrollbarSize     = 15;
	style.GrabMinSize       = 10;
	style.WindowBorderSize  = 1;
	style.ChildBorderSize   = 1;
	style.PopupBorderSize   = 1;
	style.FrameBorderSize   = 1;
	style.TabBorderSize     = 1;
	style.WindowRounding    = 7;
	style.ChildRounding     = 4;
	style.FrameRounding     = 3;
	style.PopupRounding     = 4;
	style.ScrollbarRounding = 9;
	style.GrabRounding      = 3;
	style.LogSliderDeadzone = 4;
	style.TabRounding       = 4;
}

static void RHI_Render(ImDrawData *draw_data, WindowData *window_data = nullptr)
{
	size_t vertex_buffer_size = draw_data->TotalVtxCount * sizeof(ImDrawVert);
	size_t index_buffer_size  = draw_data->TotalIdxCount * sizeof(ImDrawIdx);

	if (draw_data->DisplaySize.x == 0 ||
	    draw_data->DisplaySize.y == 0)
	{
		return;
	}

	bool               is_child_window = window_data != nullptr;
	RHISwapchain      *swapchain       = is_child_window ? window_data->swapchain.get() : gContext->GetSwapchain();
	ViewportResources *resources       = is_child_window ? window_data->viewport_data.get() : gResource.get();

	auto &vertex_buffer  = resources->vertex_buffer;
	auto &index_buffer   = resources->index_buffer;
	auto &uniform_buffer = resources->uniform_buffer;

	auto &vertex_count = resources->vertex_count;
	auto &index_count  = resources->index_count;

	if (vertex_buffer == nullptr || vertex_count != static_cast<uint32_t>(draw_data->TotalVtxCount))
	{
		if (vertex_buffer_size != 0)
		{
			vertex_buffer.reset();
			vertex_buffer = gContext->CreateBuffer(vertex_buffer_size, RHIBufferUsage::Vertex, RHIMemoryUsage::CPU_TO_GPU);
			vertex_count  = draw_data->TotalVtxCount;
			vertex_buffer->Map();
		}
	}

	if (index_buffer == nullptr || index_count < static_cast<uint32_t>(draw_data->TotalIdxCount))
	{
		if (index_buffer_size != 0)
		{
			index_buffer.reset();
			index_buffer = gContext->CreateBuffer(index_buffer_size, RHIBufferUsage::Index, RHIMemoryUsage::CPU_TO_GPU);
			index_count  = draw_data->TotalIdxCount;
			index_buffer->Map();
		}
	}

	ImDrawVert *vtx_dst = vertex_buffer ? (ImDrawVert *) vertex_buffer->Map() : nullptr;
	ImDrawIdx  *idx_dst = index_buffer ? (ImDrawIdx *) index_buffer->Map() : nullptr;

	for (int n = 0; n < draw_data->CmdListsCount; n++)
	{
		const ImDrawList *cmd_list = draw_data->CmdLists[n];
		if (vtx_dst)
		{
			memcpy(vtx_dst, cmd_list->VtxBuffer.Data, cmd_list->VtxBuffer.Size * sizeof(ImDrawVert));
		}
		if (idx_dst)
		{
			memcpy(idx_dst, cmd_list->IdxBuffer.Data, cmd_list->IdxBuffer.Size * sizeof(ImDrawIdx));
		}
		vtx_dst += cmd_list->VtxBuffer.Size;
		idx_dst += cmd_list->IdxBuffer.Size;
	}

	if (vertex_buffer)
	{
		vertex_buffer->Flush(0, vertex_buffer->GetDesc().size);
	}

	if (index_buffer)
	{
		index_buffer->Flush(0, index_buffer->GetDesc().size);
	}

	int32_t fb_width  = (int32_t) (draw_data->DisplaySize.x * draw_data->FramebufferScale.x);
	int32_t fb_height = (int32_t) (draw_data->DisplaySize.y * draw_data->FramebufferScale.y);
	if (fb_width <= 0 || fb_height <= 0)
	{
		return;
	}

	ConstantBlock constant_block = {};
	constant_block.scale         = glm::vec2(2.0f / draw_data->DisplaySize.x, 2.0f / draw_data->DisplaySize.y);
	constant_block.translate     = glm::vec2(-1.0f - draw_data->DisplayPos.x * constant_block.scale[0], -1.0f - draw_data->DisplayPos.y * constant_block.scale[1]);

	std::memcpy(uniform_buffer->Map(), &constant_block, sizeof(constant_block));

	gDescriptor->BindSampler("fontSampler", gSampler);
	gDescriptor->BindBuffer("constant", uniform_buffer.get());

	gRenderTarget->Clear();
	ColorAttachment attachment = {};
	attachment.clear_value[3]  = 1.f;
	gRenderTarget->Set(0, swapchain->GetCurrentTexture(), TextureRange{RHITextureDimension::Texture2D, 0, 1, 0, 1}, ColorAttachment{});

	auto *cmd_buffer = gContext->CreateCommand(RHIQueueFamily::Graphics);

	cmd_buffer->Begin();
	cmd_buffer->BeginMarker("UI");

	cmd_buffer->ResourceStateTransition({TextureStateTransition{
	                                        swapchain->GetCurrentTexture(),
	                                        RHIResourceState::Present,
	                                        RHIResourceState::RenderTarget,
	                                        TextureRange{
	                                            RHITextureDimension::Texture2D,
	                                            0, 1, 0, 1}}},
	                                    {});

	cmd_buffer->SetViewport(draw_data->DisplaySize.x, draw_data->DisplaySize.y);

	cmd_buffer->BeginRenderPass(gRenderTarget);

	int32_t global_vtx_offset = 0;
	int32_t global_idx_offset = 0;

	const ImVec2 &clip_off   = draw_data->DisplayPos;
	ImVec2        clip_scale = draw_data->FramebufferScale;

	void *current_texture = nullptr;

	for (int32_t i = 0; i < draw_data->CmdListsCount; i++)
	{
		cmd_buffer->BindVertexBuffer(0, vertex_buffer.get());
		cmd_buffer->BindIndexBuffer(index_buffer.get(), true);

		ImDrawList *cmd_list_imgui = draw_data->CmdLists[i];
		for (int32_t cmd_i = 0; cmd_i < cmd_list_imgui->CmdBuffer.Size; cmd_i++)
		{
			const ImDrawCmd *pcmd = &cmd_list_imgui->CmdBuffer[cmd_i];
			if (pcmd->UserCallback != nullptr)
			{
				pcmd->UserCallback(cmd_list_imgui, pcmd);
			}
			else
			{
				ImVec2 clip_min((pcmd->ClipRect.x - clip_off.x) * clip_scale.x, (pcmd->ClipRect.y - clip_off.y) * clip_scale.y);
				ImVec2 clip_max((pcmd->ClipRect.z - clip_off.x) * clip_scale.x, (pcmd->ClipRect.w - clip_off.y) * clip_scale.y);

				if (clip_min.x < 0.0f)
				{
					clip_min.x = 0.0f;
				}
				if (clip_min.y < 0.0f)
				{
					clip_min.y = 0.0f;
				}
				if (clip_max.x > fb_width)
				{
					clip_max.x = (float) fb_width;
				}
				if (clip_max.y > fb_height)
				{
					clip_max.y = (float) fb_height;
				}
				if (clip_max.x < clip_min.x || clip_max.y < clip_min.y)
				{
					continue;
				}

				cmd_buffer->SetScissor((uint32_t) (clip_max.x - clip_min.x), (uint32_t) (clip_max.y - clip_min.y), (int32_t) (clip_min.x), (int32_t) (clip_min.y));

				if (current_texture != pcmd->TextureId)
				{
					auto texture = static_cast<RHITexture *>(pcmd->TextureId);
					gDescriptor->BindTexture("fontTexture", static_cast<RHITexture *>(pcmd->TextureId), TextureRange{RHITextureDimension::Texture2D, 0, 1, 0, 1});
					cmd_buffer->BindDescriptor(gDescriptor);
					cmd_buffer->BindPipelineState(gPipelineState);
					current_texture = pcmd->TextureId;
				}

				cmd_buffer->DrawIndexed(pcmd->ElemCount, 1, pcmd->IdxOffset + global_idx_offset, pcmd->VtxOffset + global_vtx_offset, 0);
			}
		}
		global_idx_offset += cmd_list_imgui->IdxBuffer.Size;
		global_vtx_offset += cmd_list_imgui->VtxBuffer.Size;
	}

	cmd_buffer->EndRenderPass();

	cmd_buffer->ResourceStateTransition({TextureStateTransition{
	                                        swapchain->GetCurrentTexture(),
	                                        RHIResourceState::RenderTarget,
	                                        RHIResourceState::Present,
	                                        TextureRange{
	                                            RHITextureDimension::Texture2D,
	                                            0, 1, 0, 1}}},
	                                    {});

	cmd_buffer->EndMarker();
	cmd_buffer->End();

	if (is_child_window)
	{
		resources->cmd_buffers.push_back(cmd_buffer);
	}
	else
	{
		gContext->Submit({cmd_buffer}, {}, {});
	}
}

static void ImGuiWindowCreate(ImGuiViewport *viewport)
{
	WindowData *window = new WindowData();

	window->swapchain = gContext->CreateSwapchain(
#ifdef _WIN32
	    glfwGetWin32Window((GLFWwindow *) viewport->PlatformHandle),
#endif        // _WIN32
	    static_cast<uint32_t>(viewport->Size.x),
	    static_cast<uint32_t>(viewport->Size.y),
	    gContext->IsVsync());

	window->viewport_data = std::make_unique<ViewportResources>();

	viewport->RendererUserData = window;
}

static void ImGuiWindowDestroy(ImGuiViewport *viewport)
{
	if (WindowData *window = static_cast<WindowData *>(viewport->RendererUserData))
	{
		gContext->WaitIdle();
		delete window;
	}
	viewport->RendererUserData = nullptr;
}

static void ImGuiWindowSetSize(ImGuiViewport *viewport, const ImVec2 size)
{
	static_cast<WindowData *>(viewport->RendererUserData)->swapchain->Resize(static_cast<uint32_t>(size.x), static_cast<uint32_t>(size.y), gContext->IsVsync());
}

static void ImGuiWindowRender(ImGuiViewport *viewport, void *)
{
	WindowData *window_data = static_cast<WindowData *>(viewport->RendererUserData);
	window_data->swapchain->AcquireNextTexture(window_data->viewport_data->present_completes.at(window_data->viewport_data->frame_index).get(), nullptr);
	RHI_Render(viewport->DrawData, window_data);
}

static void ImGuiWindowPresent(ImGuiViewport *viewport, void *)
{
	WindowData *window_data = static_cast<WindowData *>(viewport->RendererUserData);

	gContext->Execute(
	    std::move(window_data->viewport_data->cmd_buffers),
	    {window_data->viewport_data->present_completes.at(window_data->viewport_data->frame_index).get()},
	    {window_data->viewport_data->render_completes.at(window_data->viewport_data->frame_index).get()},
	    gContext->CreateFrameFence());
	window_data->viewport_data->cmd_buffers.clear();

	window_data->swapchain->Present(window_data->viewport_data->render_completes.at(window_data->viewport_data->frame_index).get());
	window_data->viewport_data->frame_index = (window_data->viewport_data->frame_index + 1) % 3;
}

void GuiContext::Render()
{
	RHI_Render(ImGui::GetDrawData());
}

Window *GuiContext::GetWindow() const
{
	return p_window;
}

void GuiContext::InitializePlatformInterface()
{
	ImGuiPlatformIO &platform_io       = ImGui::GetPlatformIO();
	platform_io.Renderer_CreateWindow  = ImGuiWindowCreate;
	platform_io.Renderer_DestroyWindow = ImGuiWindowDestroy;
	platform_io.Renderer_SetWindowSize = ImGuiWindowSetSize;
	platform_io.Renderer_RenderWindow  = ImGuiWindowRender;
	platform_io.Renderer_SwapBuffers   = ImGuiWindowPresent;
}
}        // namespace Ilum

================================================
FILE: Source/Editor/ImGui/ImGuiContext.hpp
================================================
#pragma once

#include <RHI/RHIContext.hpp>

namespace Ilum
{
class GuiContext
{
  public:
	GuiContext(RHIContext *context, Window *window);

	~GuiContext();

	void BeginFrame();

	void EndFrame();

	void Render();

	Window *GetWindow() const;

  private:
	void SetStyle();

	void InitializePlatformInterface();

  private:
	RHIContext *p_context = nullptr;
	Window     *p_window  = nullptr;

	std::unique_ptr<RHIPipelineState> m_pipeline_state = nullptr;
	RHIDescriptor*    m_descriptor     = nullptr;

	RHISampler* m_sampler = nullptr;

	std::unique_ptr<RHIShader> m_vertex_shader   = nullptr;
	std::unique_ptr<RHIShader> m_fragment_shader = nullptr;

	std::unique_ptr<RHIRenderTarget> m_render_target = nullptr;

	std::unique_ptr<RHITexture> m_font_atlas = nullptr;

	size_t m_vertex_count = 0;
	size_t m_index_count  = 0;
};
}        // namespace Ilum

================================================
FILE: Source/Editor/Precompile.hpp
================================================
#pragma once

#include <Core/Core.hpp>


================================================
FILE: Source/Editor/Widget.hpp
================================================
#pragma once

#include <string>

namespace Ilum
{
class Editor;

class Widget
{
  public:
	Widget(const std::string &name, Editor *editor) :
	    m_name(name), p_editor(editor)
	{
	}

	virtual ~Widget() = default;

	virtual void Tick() = 0;

	inline bool &GetActive()
	{
		return m_active;
	}

	const std::string& GetName() const
	{
		return m_name;
	}

  protected:
	Editor *p_editor = nullptr;

	std::string m_name;

	bool m_active = true;
};
}        // namespace Ilum

================================================
FILE: Source/Engine/Engine.cpp
================================================
#include "Engine.hpp"

#include <Core/Path.hpp>
#include <Core/Window.hpp>
#include <Editor/Editor.hpp>
#include <RHI/RHIContext.hpp>
#include <Renderer/Renderer.hpp>
#include <Resource/ResourceManager.hpp>
#include <Scene/Scene.hpp>

namespace Ilum
{
Engine::Engine()
{
	m_window           = std::make_unique<Window>("Ilum", "Asset/Icon/logo.bmp");
	m_rhi_context      = std::make_unique<RHIContext>(m_window.get(), "Vulkan", true);
	m_resource_manager = std::make_unique<ResourceManager>(m_rhi_context.get());
	m_scene            = std::make_unique<Scene>("Default Scene");
	m_renderer         = std::make_unique<Renderer>(m_rhi_context.get(), m_scene.get(), m_resource_manager.get());
	m_editor           = std::make_unique<Editor>(m_window.get(), m_rhi_context.get(), m_renderer.get());

	Path::GetInstance().SetCurrent("./");
}

Engine::~Engine()
{
	m_scene.reset();
	m_editor.reset();
	m_renderer.reset();
	m_resource_manager.reset();
	m_rhi_context.reset();
	m_window.reset();
}

void Engine::Tick()
{
	while (m_window->Tick())
	{
		m_timer.Tick();

		if (m_window->GetWidth() != 0 && m_window->GetHeight() != 0)
		{
			m_rhi_context->BeginFrame();

			// Render loop
			m_renderer->Tick();

			// Update resource manager
			m_resource_manager->Tick();

			// Render UI
			m_editor->PreTick();
			m_editor->Tick();
			m_editor->PostTick();

			m_rhi_context->EndFrame();
		}
		else
		{
			std::this_thread::sleep_for(std::chrono::milliseconds(16));
		}

		m_window->SetTitle(fmt::format("IlumEngine v{} | Scene - {} | FPS - {}",
		                               "1.0Beta",
		                               m_scene->GetName(),
		                               m_timer.FrameRate()));
	}
}
}        // namespace Ilum


================================================
FILE: Source/Engine/Engine.hpp
================================================
#pragma once

#include <Core/Time.hpp>

namespace Ilum
{
class Window;
class RHIContext;
class Editor;
class ResourceManager;
class Renderer;
class Scene;

class Engine
{
  public:
	Engine();

	~Engine();

	void Tick();

  private:
	std::unique_ptr<Window>     m_window      = nullptr;
	std::unique_ptr<RHIContext> m_rhi_context = nullptr;
	std::unique_ptr<ResourceManager> m_resource_manager = nullptr;
	std::unique_ptr<Scene>      m_scene       = nullptr;
	std::unique_ptr<Renderer> m_renderer = nullptr;
	std::unique_ptr<Editor> m_editor = nullptr;

	Timer m_timer;
};
}        // namespace Ilum

================================================
FILE: Source/Engine/Precompile.hpp
================================================
#pragma once

#include <Core/Core.hpp>

================================================
FILE: Source/Engine/main.cpp
================================================
#include "Engine.hpp"

#include <ShaderCompiler/ShaderCompiler.hpp> 

int main()
{
	Ilum::Engine engine;
	//Ilum::ShaderCompiler::GetInstance();

	engine.Tick();

	return 0;
}

================================================
FILE: Source/External/dxc/inc/d3d12shader.h
================================================
//////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) Microsoft Corporation.
//  Licensed under the MIT license.
//
//  File:       D3D12Shader.h
//  Content:    D3D12 Shader Types and APIs
//
//////////////////////////////////////////////////////////////////////////////

#ifndef __D3D12SHADER_H__
#define __D3D12SHADER_H__

#include "d3dcommon.h"

typedef enum D3D12_SHADER_VERSION_TYPE
{
    D3D12_SHVER_PIXEL_SHADER          = 0,
    D3D12_SHVER_VERTEX_SHADER         = 1,
    D3D12_SHVER_GEOMETRY_SHADER       = 2,
    
    // D3D11 Shaders
    D3D12_SHVER_HULL_SHADER           = 3,
    D3D12_SHVER_DOMAIN_SHADER         = 4,
    D3D12_SHVER_COMPUTE_SHADER        = 5,

    // D3D12 Shaders
    D3D12_SHVER_LIBRARY               = 6,

    D3D12_SHVER_RAY_GENERATION_SHADER = 7,
    D3D12_SHVER_INTERSECTION_SHADER   = 8,
    D3D12_SHVER_ANY_HIT_SHADER        = 9,
    D3D12_SHVER_CLOSEST_HIT_SHADER    = 10,
    D3D12_SHVER_MISS_SHADER           = 11,
    D3D12_SHVER_CALLABLE_SHADER       = 12,

    D3D12_SHVER_MESH_SHADER           = 13,
    D3D12_SHVER_AMPLIFICATION_SHADER  = 14,

    D3D12_SHVER_RESERVED0             = 0xFFF0,
} D3D12_SHADER_VERSION_TYPE;

#define D3D12_SHVER_GET_TYPE(_Version) \
    (((_Version) >> 16) & 0xffff)
#define D3D12_SHVER_GET_MAJOR(_Version) \
    (((_Version) >> 4) & 0xf)
#define D3D12_SHVER_GET_MINOR(_Version) \
    (((_Version) >> 0) & 0xf)

// Slot ID for library function return
#define D3D_RETURN_PARAMETER_INDEX (-1)

typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE;

typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE;


typedef struct _D3D12_SIGNATURE_PARAMETER_DESC
{
    LPCSTR                      SemanticName;   // Name of the semantic
    UINT                        SemanticIndex;  // Index of the semantic
    UINT                        Register;       // Number of member variables
    D3D_NAME                    SystemValueType;// A predefined system value, or D3D_NAME_UNDEFINED if not applicable
    D3D_REGISTER_COMPONENT_TYPE ComponentType;  // Scalar type (e.g. uint, float, etc.)
    BYTE                        Mask;           // Mask to indicate which components of the register
                                                // are used (combination of D3D10_COMPONENT_MASK values)
    BYTE                        ReadWriteMask;  // Mask to indicate whether a given component is 
                                                // never written (if this is an output signature) or
                                                // always read (if this is an input signature).
                                                // (combination of D3D_MASK_* values)
    UINT                        Stream;         // Stream index
    D3D_MIN_PRECISION           MinPrecision;   // Minimum desired interpolation precision
} D3D12_SIGNATURE_PARAMETER_DESC;

typedef struct _D3D12_SHADER_BUFFER_DESC
{
    LPCSTR                  Name;           // Name of the constant buffer
    D3D_CBUFFER_TYPE        Type;           // Indicates type of buffer content
    UINT                    Variables;      // Number of member variables
    UINT                    Size;           // Size of CB (in bytes)
    UINT                    uFlags;         // Buffer description flags
} D3D12_SHADER_BUFFER_DESC;

typedef struct _D3D12_SHADER_VARIABLE_DESC
{
    LPCSTR                  Name;           // Name of the variable
    UINT                    StartOffset;    // Offset in constant buffer's backing store
    UINT                    Size;           // Size of variable (in bytes)
    UINT                    uFlags;         // Variable flags
    LPVOID                  DefaultValue;   // Raw pointer to default value
    UINT                    StartTexture;   // First texture index (or -1 if no textures used)
    UINT                    TextureSize;    // Number of texture slots possibly used.
    UINT                    StartSampler;   // First sampler index (or -1 if no textures used)
    UINT                    SamplerSize;    // Number of sampler slots possibly used.
} D3D12_SHADER_VARIABLE_DESC;

typedef struct _D3D12_SHADER_TYPE_DESC
{
    D3D_SHADER_VARIABLE_CLASS   Class;          // Variable class (e.g. object, matrix, etc.)
    D3D_SHADER_VARIABLE_TYPE    Type;           // Variable type (e.g. float, sampler, etc.)
    UINT                        Rows;           // Number of rows (for matrices, 1 for other numeric, 0 if not applicable)
    UINT                        Columns;        // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable)
    UINT                        Elements;       // Number of elements (0 if not an array)
    UINT                        Members;        // Number of members (0 if not a structure)
    UINT                        Offset;         // Offset from the start of structure (0 if not a structure member)
    LPCSTR                      Name;           // Name of type, can be NULL
} D3D12_SHADER_TYPE_DESC;

typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN;

typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING;

typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMITIVE;

typedef struct _D3D12_SHADER_DESC
{
    UINT                    Version;                     // Shader version
    LPCSTR                  Creator;                     // Creator string
    UINT                    Flags;                       // Shader compilation/parse flags
    
    UINT                    ConstantBuffers;             // Number of constant buffers
    UINT                    BoundResources;              // Number of bound resources
    UINT                    InputParameters;             // Number of parameters in the input signature
    UINT                    OutputParameters;            // Number of parameters in the output signature

    UINT                    InstructionCount;            // Number of emitted instructions
    UINT                    TempRegisterCount;           // Number of temporary registers used 
    UINT                    TempArrayCount;              // Number of temporary arrays used
    UINT                    DefCount;                    // Number of constant defines 
    UINT                    DclCount;                    // Number of declarations (input + output)
    UINT                    TextureNormalInstructions;   // Number of non-categorized texture instructions
    UINT                    TextureLoadInstructions;     // Number of texture load instructions
    UINT                    TextureCompInstructions;     // Number of texture comparison instructions
    UINT                    TextureBiasInstructions;     // Number of texture bias instructions
    UINT                    TextureGradientInstructions; // Number of texture gradient instructions
    UINT                    FloatInstructionCount;       // Number of floating point arithmetic instructions used
    UINT                    IntInstructionCount;         // Number of signed integer arithmetic instructions used
    UINT                    UintInstructionCount;        // Number of unsigned integer arithmetic instructions used
    UINT                    StaticFlowControlCount;      // Number of static flow control instructions used
    UINT                    DynamicFlowControlCount;     // Number of dynamic flow control instructions used
    UINT                    MacroInstructionCount;       // Number of macro instructions used
    UINT                    ArrayInstructionCount;       // Number of array instructions used
    UINT                    CutInstructionCount;         // Number of cut instructions used
    UINT                    EmitInstructionCount;        // Number of emit instructions used
    D3D_PRIMITIVE_TOPOLOGY  GSOutputTopology;            // Geometry shader output topology
    UINT                    GSMaxOutputVertexCount;      // Geometry shader maximum output vertex count
    D3D_PRIMITIVE           InputPrimitive;              // GS/HS input primitive
    UINT                    PatchConstantParameters;     // Number of parameters in the patch constant signature
    UINT                    cGSInstanceCount;            // Number of Geometry shader instances
    UINT                    cControlPoints;              // Number of control points in the HS->DS stage
    D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive;  // Primitive output by the tessellator
    D3D_TESSELLATOR_PARTITIONING HSPartitioning;         // Partitioning mode of the tessellator
    D3D_TESSELLATOR_DOMAIN  TessellatorDomain;           // Domain of the tessellator (quad, tri, isoline)
    // instruction counts
    UINT cBarrierInstructions;                           // Number of barrier instructions in a compute shader
    UINT cInterlockedInstructions;                       // Number of interlocked instructions
    UINT cTextureStoreInstructions;                      // Number of texture writes
} D3D12_SHADER_DESC;

typedef struct _D3D12_SHADER_INPUT_BIND_DESC
{
    LPCSTR                      Name;           // Name of the resource
    D3D_SHADER_INPUT_TYPE       Type;           // Type of resource (e.g. texture, cbuffer, etc.)
    UINT                        BindPoint;      // Starting bind point
    UINT                        BindCount;      // Number of contiguous bind points (for arrays)

    UINT                        uFlags;         // Input binding flags
    D3D_RESOURCE_RETURN_TYPE    ReturnType;     // Return type (if texture)
    D3D_SRV_DIMENSION           Dimension;      // Dimension (if texture)
    UINT                        NumSamples;     // Number of samples (0 if not MS texture)
    UINT                        Space;          // Register space
    UINT uID;                                   // Range ID in the bytecode
} D3D12_SHADER_INPUT_BIND_DESC;

#define D3D_SHADER_REQUIRES_DOUBLES                                                         0x00000001
#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL                                             0x00000002
#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE                                             0x00000004
#define D3D_SHADER_REQUIRES_64_UAVS                                                         0x00000008
#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION                                               0x00000010
#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS                                          0x00000020
#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS                                          0x00000040
#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING                                    0x00000080
#define D3D_SHADER_REQUIRES_TILED_RESOURCES                                                 0x00000100
#define D3D_SHADER_REQUIRES_STENCIL_REF                                                     0x00000200
#define D3D_SHADER_REQUIRES_INNER_COVERAGE                                                  0x00000400
#define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS                               0x00000800
#define D3D_SHADER_REQUIRES_ROVS                                                            0x00001000
#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER  0x00002000
#define D3D_SHADER_REQUIRES_WAVE_OPS                                                        0x00004000
#define D3D_SHADER_REQUIRES_INT64_OPS                                                       0x00008000
#define D3D_SHADER_REQUIRES_VIEW_ID                                                         0x00010000
#define D3D_SHADER_REQUIRES_BARYCENTRICS                                                    0x00020000
#define D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS                                                0x00040000
#define D3D_SHADER_REQUIRES_SHADING_RATE                                                    0x00080000
#define D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1                                             0x00100000
#define D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK                                                0x00200000
#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE                                  0x00400000
#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED                                    0x00800000
#define D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS                   0x01000000
#define D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING                               0x02000000
#define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING                                0x04000000
#define D3D_SHADER_REQUIRES_WAVE_MMA                                                        0x08000000
#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE                        0x10000000

typedef struct _D3D12_LIBRARY_DESC
{
    LPCSTR    Creator;           // The name of the originator of the library.
    UINT      Flags;             // Compilation flags.
    UINT      FunctionCount;     // Number of functions exported from the library.
} D3D12_LIBRARY_DESC;

typedef struct _D3D12_FUNCTION_DESC
{
    UINT                    Version;                     // Shader version
    LPCSTR                  Creator;                     // Creator string
    UINT                    Flags;                       // Shader compilation/parse flags
    
    UINT                    ConstantBuffers;             // Number of constant buffers
    UINT                    BoundResources;              // Number of bound resources

    UINT                    InstructionCount;            // Number of emitted instructions
    UINT                    TempRegisterCount;           // Number of temporary registers used 
    UINT                    TempArrayCount;              // Number of temporary arrays used
    UINT                    DefCount;                    // Number of constant defines 
    UINT                    DclCount;                    // Number of declarations (input + output)
    UINT                    TextureNormalInstructions;   // Number of non-categorized texture instructions
    UINT                    TextureLoadInstructions;     // Number of texture load instructions
    UINT                    TextureCompInstructions;     // Number of texture comparison instructions
    UINT                    TextureBiasInstructions;     // Number of texture bias instructions
    UINT                    TextureGradientInstructions; // Number of texture gradient instructions
    UINT                    FloatInstructionCount;       // Number of floating point arithmetic instructions used
    UINT                    IntInstructionCount;         // Number of signed integer arithmetic instructions used
    UINT                    UintInstructionCount;        // Number of unsigned integer arithmetic instructions used
    UINT                    StaticFlowControlCount;      // Number of static flow control instructions used
    UINT                    DynamicFlowControlCount;     // Number of dynamic flow control instructions used
    UINT                    MacroInstructionCount;       // Number of macro instructions used
    UINT                    ArrayInstructionCount;       // Number of array instructions used
    UINT                    MovInstructionCount;         // Number of mov instructions used
    UINT                    MovcInstructionCount;        // Number of movc instructions used
    UINT                    ConversionInstructionCount;  // Number of type conversion instructions used
    UINT                    BitwiseInstructionCount;     // Number of bitwise arithmetic instructions used
    D3D_FEATURE_LEVEL       MinFeatureLevel;             // Min target of the function byte code
    UINT64                  RequiredFeatureFlags;        // Required feature flags

    LPCSTR                  Name;                        // Function name
    INT                     FunctionParameterCount;      // Number of logical parameters in the function signature (not including return)
    BOOL                    HasReturn;                   // TRUE, if function returns a value, false - it is a subroutine
    BOOL                    Has10Level9VertexShader;     // TRUE, if there is a 10L9 VS blob
    BOOL                    Has10Level9PixelShader;      // TRUE, if there is a 10L9 PS blob
} D3D12_FUNCTION_DESC;

typedef struct _D3D12_PARAMETER_DESC
{
    LPCSTR                      Name;               // Parameter name.
    LPCSTR                      SemanticName;       // Parameter semantic name (+index).
    D3D_SHADER_VARIABLE_TYPE    Type;               // Element type.
    D3D_SHADER_VARIABLE_CLASS   Class;              // Scalar/Vector/Matrix.
    UINT                        Rows;               // Rows are for matrix parameters.
    UINT                        Columns;            // Components or Columns in matrix.
    D3D_INTERPOLATION_MODE      InterpolationMode;  // Interpolation mode.
    D3D_PARAMETER_FLAGS         Flags;              // Parameter modifiers.

    UINT                        FirstInRegister;    // The first input register for this parameter.
    UINT                        FirstInComponent;   // The first input register component for this parameter.
    UINT                        FirstOutRegister;   // The first output register for this parameter.
    UINT                        FirstOutComponent;  // The first output register component for this parameter.
} D3D12_PARAMETER_DESC;


//////////////////////////////////////////////////////////////////////////////
// Interfaces ////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

typedef interface ID3D12ShaderReflectionType ID3D12ShaderReflectionType;
typedef interface ID3D12ShaderReflectionType *LPD3D12SHADERREFLECTIONTYPE;

typedef interface ID3D12ShaderReflectionVariable ID3D12ShaderReflectionVariable;
typedef interface ID3D12ShaderReflectionVariable *LPD3D12SHADERREFLECTIONVARIABLE;

typedef interface ID3D12ShaderReflectionConstantBuffer ID3D12ShaderReflectionConstantBuffer;
typedef interface ID3D12ShaderReflectionConstantBuffer *LPD3D12SHADERREFLECTIONCONSTANTBUFFER;

typedef interface ID3D12ShaderReflection ID3D12ShaderReflection;
typedef interface ID3D12ShaderReflection *LPD3D12SHADERREFLECTION;

typedef interface ID3D12LibraryReflection ID3D12LibraryReflection;
typedef interface ID3D12LibraryReflection *LPD3D12LIBRARYREFLECTION;

typedef interface ID3D12FunctionReflection ID3D12FunctionReflection;
typedef interface ID3D12FunctionReflection *LPD3D12FUNCTIONREFLECTION;

typedef interface ID3D12FunctionParameterReflection ID3D12FunctionParameterReflection;
typedef interface ID3D12FunctionParameterReflection *LPD3D12FUNCTIONPARAMETERREFLECTION;


// {E913C351-783D-48CA-A1D1-4F306284AD56}
interface DECLSPEC_UUID("E913C351-783D-48CA-A1D1-4F306284AD56") ID3D12ShaderReflectionType;
DEFINE_GUID(IID_ID3D12ShaderReflectionType, 
0xe913c351, 0x783d, 0x48ca, 0xa1, 0xd1, 0x4f, 0x30, 0x62, 0x84, 0xad, 0x56);

#undef INTERFACE
#define INTERFACE ID3D12ShaderRef
Download .txt
gitextract_7jr9t7gk/

├── .clang-format
├── .clang-tidy
├── .github/
│   └── workflows/
│       ├── windows_dev.yml
│       └── windows_main.yml
├── .gitignore
├── .gitmodules
├── Asset/
│   ├── BuildIn/
│   │   ├── ImGui.spv.asset
│   │   ├── MaterialBall.asset
│   │   ├── animation.icon.asset
│   │   ├── equirectangular_to_cubemap.shader.asset
│   │   ├── mesh.preview.asset
│   │   ├── pipeline.icon.asset
│   │   ├── prefab.icon.asset
│   │   └── scene.icon.asset
│   ├── Meta/
│   │   └── README.md
│   ├── MustacheTemplate/
│   │   └── Reflection.mustache
│   ├── NRD_Data/
│   │   ├── NRD.rg
│   │   └── Sample/
│   │       ├── Texture2D_89.dds
│   │       ├── blur_buffer.csv
│   │       ├── gIn_Diff.dds
│   │       ├── gIn_Diff_History.dds
│   │       ├── gIn_Normal_Roughness.dds
│   │       ├── gIn_ObjectMotion.dds
│   │       ├── gIn_Prev_AccumSpeeds_MaterialID.dds
│   │       ├── gIn_Prev_Normal_Roughness.dds
│   │       ├── gIn_Prev_ViewZ.dds
│   │       ├── gIn_ViewZ.dds
│   │       ├── history_fix_buffer.csv
│   │       ├── post_blur_buffer.csv
│   │       └── temporal_accumulate_buffer.csv
│   └── SPD/
│       └── metals/
│           ├── Ag.eta.spd
│           ├── Ag.k.spd
│           ├── Al.eta.spd
│           ├── Al.k.spd
│           ├── AlAs.eta.spd
│           ├── AlAs.k.spd
│           ├── AlSb.eta.spd
│           ├── AlSb.k.spd
│           ├── Au.eta.spd
│           ├── Au.k.spd
│           ├── Be.eta.spd
│           ├── Be.k.spd
│           ├── Cr.eta.spd
│           ├── Cr.k.spd
│           ├── CsI.eta.spd
│           ├── CsI.k.spd
│           ├── Cu.eta.spd
│           ├── Cu.k.spd
│           ├── Cu2O.eta.spd
│           ├── Cu2O.k.spd
│           ├── CuO.eta.spd
│           ├── CuO.k.spd
│           ├── Hg.eta.spd
│           ├── Hg.k.spd
│           ├── HgTe.eta.spd
│           ├── HgTe.k.spd
│           ├── Ir.eta.spd
│           ├── Ir.k.spd
│           ├── K.eta.spd
│           ├── K.k.spd
│           ├── KBr.eta.spd
│           ├── KBr.k.spd
│           ├── KCl.eta.spd
│           ├── KCl.k.spd
│           ├── Li.eta.spd
│           ├── Li.k.spd
│           ├── MgO.eta.spd
│           ├── MgO.k.spd
│           ├── Mo.eta.spd
│           ├── Mo.k.spd
│           ├── NaCl.eta.spd
│           ├── NaCl.k.spd
│           ├── Nb.eta.spd
│           ├── Nb.k.spd
│           ├── Rh.eta.spd
│           ├── Rh.k.spd
│           ├── Se-e.eta.spd
│           ├── Se-e.k.spd
│           ├── Se.eta.spd
│           ├── Se.k.spd
│           ├── SiC.eta.spd
│           ├── SiC.k.spd
│           ├── SiO.eta.spd
│           ├── SiO.k.spd
│           ├── SnTe.eta.spd
│           ├── SnTe.k.spd
│           ├── Ta.eta.spd
│           ├── Ta.k.spd
│           ├── Te-e.eta.spd
│           ├── Te-e.k.spd
│           ├── Te.eta.spd
│           ├── Te.k.spd
│           ├── ThF4.eta.spd
│           ├── ThF4.k.spd
│           ├── TiC.eta.spd
│           ├── TiC.k.spd
│           ├── TiN.eta.spd
│           ├── TiN.k.spd
│           ├── TiO2-e.eta.spd
│           ├── TiO2-e.k.spd
│           ├── TiO2.eta.spd
│           ├── TiO2.k.spd
│           ├── VC.eta.spd
│           ├── VC.k.spd
│           ├── VN.eta.spd
│           ├── VN.k.spd
│           ├── W.eta.spd
│           ├── W.k.spd
│           ├── a-C.eta.spd
│           ├── a-C.k.spd
│           ├── a-SiH.eta.spd
│           ├── a-SiH.k.spd
│           ├── d-C.eta.spd
│           └── d-C.k.spd
├── Doc/
│   ├── Material.drawio
│   ├── RHI.drawio
│   ├── RenderGraph.drawio
│   ├── Resource.drawio
│   ├── Scene.drawio
│   └── Shader.drawio
├── LICENSE.txt
├── README.md
├── Source/
│   ├── Editor/
│   │   ├── Editor.cpp
│   │   ├── Editor.hpp
│   │   ├── ImGui/
│   │   │   ├── ImGuiContext.cpp
│   │   │   └── ImGuiContext.hpp
│   │   ├── Precompile.hpp
│   │   └── Widget.hpp
│   ├── Engine/
│   │   ├── Engine.cpp
│   │   ├── Engine.hpp
│   │   ├── Precompile.hpp
│   │   └── main.cpp
│   ├── External/
│   │   ├── dxc/
│   │   │   └── inc/
│   │   │       ├── d3d12shader.h
│   │   │       ├── dxcapi.h
│   │   │       ├── dxcerrors.h
│   │   │       └── dxcisense.h
│   │   ├── imgui_tools/
│   │   │   ├── IconsFontAwesome/
│   │   │   │   └── IconsFontAwesome5.h
│   │   │   ├── imgui_impl_glfw.cpp
│   │   │   ├── imgui_impl_glfw.h
│   │   │   ├── imguizmo/
│   │   │   │   ├── GraphEditor.cpp
│   │   │   │   ├── GraphEditor.h
│   │   │   │   ├── ImCurveEdit.cpp
│   │   │   │   ├── ImCurveEdit.h
│   │   │   │   ├── ImGradient.cpp
│   │   │   │   ├── ImGradient.h
│   │   │   │   ├── ImGuizmo.cpp
│   │   │   │   ├── ImGuizmo.h
│   │   │   │   ├── ImSequencer.cpp
│   │   │   │   ├── ImSequencer.h
│   │   │   │   └── ImZoomSlider.h
│   │   │   ├── imnodes/
│   │   │   │   ├── imnodes.cpp
│   │   │   │   ├── imnodes.h
│   │   │   │   └── imnodes_internal.h
│   │   │   ├── implot/
│   │   │   │   ├── implot.cpp
│   │   │   │   ├── implot.h
│   │   │   │   ├── implot_demo.cpp
│   │   │   │   ├── implot_internal.h
│   │   │   │   └── implot_items.cpp
│   │   │   └── xmake.lua
│   │   ├── mustache/
│   │   │   └── mustache.hpp
│   │   ├── slang/
│   │   │   ├── docs/
│   │   │   │   ├── 64bit-type-support.md
│   │   │   │   ├── README.md
│   │   │   │   ├── api-users-guide.md
│   │   │   │   ├── building.md
│   │   │   │   ├── command-line-slangc.md
│   │   │   │   ├── cpu-target.md
│   │   │   │   ├── cuda-target.md
│   │   │   │   ├── doc-system.md
│   │   │   │   ├── faq.md
│   │   │   │   ├── language-guide.md
│   │   │   │   ├── layout.md
│   │   │   │   ├── linking.md
│   │   │   │   ├── nvapi-support.md
│   │   │   │   ├── repro.md
│   │   │   │   ├── shader-playground.md
│   │   │   │   ├── stdlib-doc.md
│   │   │   │   ├── target-compatibility.md
│   │   │   │   └── wave-intrinsics.md
│   │   │   ├── prelude/
│   │   │   │   ├── slang-cpp-host-prelude.h
│   │   │   │   ├── slang-cpp-prelude.h
│   │   │   │   ├── slang-cpp-scalar-intrinsics.h
│   │   │   │   ├── slang-cpp-types.h
│   │   │   │   ├── slang-cuda-prelude.h
│   │   │   │   ├── slang-hlsl-prelude.h
│   │   │   │   └── slang-llvm.h
│   │   │   ├── slang-com-helper.h
│   │   │   ├── slang-com-ptr.h
│   │   │   ├── slang-gfx.h
│   │   │   ├── slang-tag-version.h
│   │   │   └── slang.h
│   │   └── xmake.lua
│   ├── Plugin/
│   │   ├── Editor/
│   │   │   ├── AnimationEditor.cpp
│   │   │   ├── Console.cpp
│   │   │   ├── Hierarchy.cpp
│   │   │   ├── Inspector.cpp
│   │   │   ├── MainMenu.cpp
│   │   │   ├── MaterialGraphEditor.cpp
│   │   │   ├── MeshEditor.cpp
│   │   │   ├── RenderGraphEditor.cpp
│   │   │   ├── ResourceBrowser.cpp
│   │   │   ├── SceneView.cpp
│   │   │   ├── ShaderToy.cpp
│   │   │   └── xmake.lua
│   │   ├── Geometry/
│   │   │   ├── Parameterization/
│   │   │   │   ├── MinimumSurface.cpp
│   │   │   │   └── Tutte.cpp
│   │   │   ├── Subdivision/
│   │   │   │   └── Loop.cpp
│   │   │   └── xmake.lua
│   │   ├── Importer/
│   │   │   ├── Assimp.cpp
│   │   │   ├── DDS.cpp
│   │   │   ├── STB.cpp
│   │   │   └── xmake.lua
│   │   ├── MaterialNode/
│   │   │   ├── BSDF/
│   │   │   │   ├── ConductorMaterial.cpp
│   │   │   │   ├── DielectricMaterial.cpp
│   │   │   │   ├── DiffuseMaterial.cpp
│   │   │   │   ├── DisneyMaterial.cpp
│   │   │   │   ├── MaskedMaterial.cpp
│   │   │   │   ├── MixMaterial.cpp
│   │   │   │   ├── PrincipledMaterial.cpp
│   │   │   │   ├── ThinDielectricMaterial.cpp
│   │   │   │   └── Utils/
│   │   │   │       └── SPDLoader.hpp
│   │   │   ├── Converter/
│   │   │   │   ├── Calculate.cpp
│   │   │   │   ├── SRGBToLinear.cpp
│   │   │   │   ├── VectorCalculate.cpp
│   │   │   │   ├── VectorMerge.cpp
│   │   │   │   └── VectorSplit.cpp
│   │   │   ├── IMaterialNode.hpp
│   │   │   ├── Input/
│   │   │   │   ├── RGB.cpp
│   │   │   │   └── SurfaceInteraction.cpp
│   │   │   ├── Output/
│   │   │   │   └── MaterialOutput.cpp
│   │   │   ├── Texture/
│   │   │   │   └── ImageTexture.cpp
│   │   │   └── xmake.lua
│   │   ├── RHI/
│   │   │   ├── CUDA/
│   │   │   │   ├── Buffer.cpp
│   │   │   │   ├── Buffer.hpp
│   │   │   │   ├── CUDA.cpp
│   │   │   │   ├── Command.cpp
│   │   │   │   ├── Command.hpp
│   │   │   │   ├── Descriptor.cpp
│   │   │   │   ├── Descriptor.hpp
│   │   │   │   ├── Device.cpp
│   │   │   │   ├── Device.hpp
│   │   │   │   ├── Frame.cpp
│   │   │   │   ├── Frame.hpp
│   │   │   │   ├── Fwd.hpp
│   │   │   │   ├── PipelineState.cpp
│   │   │   │   ├── PipelineState.hpp
│   │   │   │   ├── Profiler.cpp
│   │   │   │   ├── Profiler.hpp
│   │   │   │   ├── Queue.cpp
│   │   │   │   ├── Queue.hpp
│   │   │   │   ├── Sampler.cpp
│   │   │   │   ├── Sampler.hpp
│   │   │   │   ├── Shader.cpp
│   │   │   │   ├── Shader.hpp
│   │   │   │   ├── Synchronization.cpp
│   │   │   │   ├── Synchronization.hpp
│   │   │   │   ├── Texture.cpp
│   │   │   │   └── Texture.hpp
│   │   │   ├── Vulkan/
│   │   │   │   ├── AccelerationStructure.cpp
│   │   │   │   ├── AccelerationStructure.hpp
│   │   │   │   ├── Buffer.cpp
│   │   │   │   ├── Buffer.hpp
│   │   │   │   ├── Command.cpp
│   │   │   │   ├── Command.hpp
│   │   │   │   ├── Definitions.cpp
│   │   │   │   ├── Definitions.hpp
│   │   │   │   ├── Descriptor.cpp
│   │   │   │   ├── Descriptor.hpp
│   │   │   │   ├── Device.cpp
│   │   │   │   ├── Device.hpp
│   │   │   │   ├── Frame.cpp
│   │   │   │   ├── Frame.hpp
│   │   │   │   ├── Fwd.cpp
│   │   │   │   ├── Fwd.hpp
│   │   │   │   ├── PipelineState.cpp
│   │   │   │   ├── PipelineState.hpp
│   │   │   │   ├── Profiler.cpp
│   │   │   │   ├── Profiler.hpp
│   │   │   │   ├── Queue.cpp
│   │   │   │   ├── Queue.hpp
│   │   │   │   ├── RenderTarget.cpp
│   │   │   │   ├── RenderTarget.hpp
│   │   │   │   ├── Sampler.cpp
│   │   │   │   ├── Sampler.hpp
│   │   │   │   ├── Shader.cpp
│   │   │   │   ├── Shader.hpp
│   │   │   │   ├── Swapchain.cpp
│   │   │   │   ├── Swapchain.hpp
│   │   │   │   ├── Synchronization.cpp
│   │   │   │   ├── Synchronization.hpp
│   │   │   │   ├── Texture.cpp
│   │   │   │   ├── Texture.hpp
│   │   │   │   ├── Vulkan.cpp
│   │   │   │   └── vk_mem_alloc.h
│   │   │   └── xmake.lua
│   │   ├── RenderPass/
│   │   │   ├── Bloom.cpp
│   │   │   ├── CompositePass.cpp
│   │   │   ├── CopyImageRGBA16.cpp
│   │   │   ├── Debug.cpp
│   │   │   ├── Deferred.cpp
│   │   │   ├── FXAA.cpp
│   │   │   ├── Forward.cpp
│   │   │   ├── ForwardPlus.cpp
│   │   │   ├── IBL.cpp
│   │   │   ├── IPass.hpp
│   │   │   ├── PassData.hpp
│   │   │   ├── PathTracing.cpp
│   │   │   ├── Present.cpp
│   │   │   ├── RayTracedAO.cpp
│   │   │   ├── RayTracingReflection.cpp
│   │   │   ├── RayTracingShadow.cpp
│   │   │   ├── SSAO.cpp
│   │   │   ├── ShadowMapPass.cpp
│   │   │   ├── SkyboxPass.cpp
│   │   │   ├── Tonemapping.cpp
│   │   │   ├── Triangle.cpp
│   │   │   ├── VisibilityBufferVisualization.cpp
│   │   │   ├── VisibilityGeometryPass.cpp
│   │   │   ├── VisibilityLightingPass.cpp
│   │   │   └── xmake.lua
│   │   └── xmake.lua
│   ├── Runtime/
│   │   ├── Core/
│   │   │   ├── Private/
│   │   │   │   ├── JobSystem.cpp
│   │   │   │   ├── Log.cpp
│   │   │   │   ├── Path.cpp
│   │   │   │   ├── Plugin.cpp
│   │   │   │   ├── Time.cpp
│   │   │   │   ├── Variant.cpp
│   │   │   │   └── Window.cpp
│   │   │   ├── Public/
│   │   │   │   └── Core/
│   │   │   │       ├── API.hpp
│   │   │   │       ├── Container.hpp
│   │   │   │       ├── Core.hpp
│   │   │   │       ├── Delegates.hpp
│   │   │   │       ├── Hash.hpp
│   │   │   │       ├── Input.hpp
│   │   │   │       ├── JobSystem.hpp
│   │   │   │       ├── Log.hpp
│   │   │   │       ├── PRECOMPILE.HPP
│   │   │   │       ├── Path.hpp
│   │   │   │       ├── Plugin.hpp
│   │   │   │       ├── Time.hpp
│   │   │   │       ├── Variant.hpp
│   │   │   │       └── Window.hpp
│   │   │   └── xmake.lua
│   │   ├── Geometry/
│   │   │   ├── Private/
│   │   │   │   ├── AABB.cpp
│   │   │   │   ├── Mesh/
│   │   │   │   │   ├── EMesh.cpp
│   │   │   │   │   ├── FMesh.cpp
│   │   │   │   │   ├── HEMesh.cpp
│   │   │   │   │   └── Mesh.cpp
│   │   │   │   └── MeshProcess.cpp
│   │   │   ├── Public/
│   │   │   │   └── Geometry/
│   │   │   │       ├── AABB.hpp
│   │   │   │       ├── Mesh/
│   │   │   │       │   ├── EMesh.hpp
│   │   │   │       │   ├── FMesh.hpp
│   │   │   │       │   ├── HEMesh.hpp
│   │   │   │       │   └── Mesh.hpp
│   │   │   │       ├── MeshProcess.hpp
│   │   │   │       ├── Meshlet.hpp
│   │   │   │       └── Precompile.hpp
│   │   │   └── xmake.lua
│   │   ├── RHI/
│   │   │   ├── Private/
│   │   │   │   ├── RHIAccelerationStructure.cpp
│   │   │   │   ├── RHIBuffer.cpp
│   │   │   │   ├── RHICommand.cpp
│   │   │   │   ├── RHIContext.cpp
│   │   │   │   ├── RHIDescriptor.cpp
│   │   │   │   ├── RHIDevice.cpp
│   │   │   │   ├── RHIFrame.cpp
│   │   │   │   ├── RHIPipelineState.cpp
│   │   │   │   ├── RHIProfiler.cpp
│   │   │   │   ├── RHIQueue.cpp
│   │   │   │   ├── RHIRenderTarget.cpp
│   │   │   │   ├── RHISampler.cpp
│   │   │   │   ├── RHIShader.cpp
│   │   │   │   ├── RHISwapchain.cpp
│   │   │   │   ├── RHISynchronization.cpp
│   │   │   │   └── RHITexture.cpp
│   │   │   └── Public/
│   │   │       └── RHI/
│   │   │           ├── Fwd.hpp
│   │   │           ├── RHIAccelerationStructure.hpp
│   │   │           ├── RHIBuffer.hpp
│   │   │           ├── RHICommand.hpp
│   │   │           ├── RHIContext.hpp
│   │   │           ├── RHIDefinitions.hpp
│   │   │           ├── RHIDescriptor.hpp
│   │   │           ├── RHIDevice.hpp
│   │   │           ├── RHIFrame.hpp
│   │   │           ├── RHIPipelineState.hpp
│   │   │           ├── RHIProfiler.hpp
│   │   │           ├── RHIQueue.hpp
│   │   │           ├── RHIRenderTarget.hpp
│   │   │           ├── RHISampler.hpp
│   │   │           ├── RHIShader.hpp
│   │   │           ├── RHISwapchain.hpp
│   │   │           ├── RHISynchronization.hpp
│   │   │           └── RHITexture.hpp
│   │   ├── Render/
│   │   │   ├── Material/
│   │   │   │   ├── Private/
│   │   │   │   │   └── Material/
│   │   │   │   │       ├── MaterialCompiler.cpp
│   │   │   │   │       ├── MaterialData.cpp
│   │   │   │   │       ├── MaterialGraph.cpp
│   │   │   │   │       ├── MaterialNode.cpp
│   │   │   │   │       └── Spectrum.cpp
│   │   │   │   └── Public/
│   │   │   │       └── Material/
│   │   │   │           ├── MaterialCompiler.hpp
│   │   │   │           ├── MaterialData.hpp
│   │   │   │           ├── MaterialGraph.hpp
│   │   │   │           ├── MaterialNode.hpp
│   │   │   │           └── Spectrum.hpp
│   │   │   ├── RenderGraph/
│   │   │   │   ├── Private/
│   │   │   │   │   ├── RenderGraph.cpp
│   │   │   │   │   ├── RenderGraphBlackboard.cpp
│   │   │   │   │   ├── RenderGraphBuilder.cpp
│   │   │   │   │   └── RenderPass.cpp
│   │   │   │   └── Public/
│   │   │   │       └── RenderGraph/
│   │   │   │           ├── Impl/
│   │   │   │           │   └── RenderGraphBuilder.inl
│   │   │   │           ├── Precompile.hpp
│   │   │   │           ├── RenderGraph.hpp
│   │   │   │           ├── RenderGraphBlackboard.hpp
│   │   │   │           ├── RenderGraphBuilder.hpp
│   │   │   │           └── RenderPass.hpp
│   │   │   ├── Renderer/
│   │   │   │   ├── Private/
│   │   │   │   │   └── Renderer.cpp
│   │   │   │   └── Public/
│   │   │   │       └── Renderer/
│   │   │   │           ├── RenderData.hpp
│   │   │   │           └── Renderer.hpp
│   │   │   ├── ShaderCompiler/
│   │   │   │   ├── Private/
│   │   │   │   │   ├── ShaderBuilder.cpp
│   │   │   │   │   ├── ShaderCompiler.cpp
│   │   │   │   │   └── SpirvReflection.cpp
│   │   │   │   └── Public/
│   │   │   │       └── ShaderCompiler/
│   │   │   │           ├── Precompile.hpp
│   │   │   │           ├── ShaderBuilder.hpp
│   │   │   │           ├── ShaderCompiler.hpp
│   │   │   │           └── SpirvReflection.hpp
│   │   │   └── xmake.lua
│   │   ├── Resource/
│   │   │   ├── Private/
│   │   │   │   └── Resource/
│   │   │   │       ├── Importer.cpp
│   │   │   │       ├── Resource/
│   │   │   │       │   ├── Animation.cpp
│   │   │   │       │   ├── Material.cpp
│   │   │   │       │   ├── Mesh.cpp
│   │   │   │       │   ├── Prefab.cpp
│   │   │   │       │   ├── RenderPipeline.cpp
│   │   │   │       │   ├── Scene.cpp
│   │   │   │       │   ├── SkinnedMesh.cpp
│   │   │   │       │   ├── Texture2D.cpp
│   │   │   │       │   └── TextureCube.cpp
│   │   │   │       ├── Resource.cpp
│   │   │   │       └── ResourceManager.cpp
│   │   │   └── Public/
│   │   │       └── Resource/
│   │   │           ├── Importer.hpp
│   │   │           ├── Resource/
│   │   │           │   ├── Animation.hpp
│   │   │           │   ├── Material.hpp
│   │   │           │   ├── Mesh.hpp
│   │   │           │   ├── Prefab.hpp
│   │   │           │   ├── RenderPipeline.hpp
│   │   │           │   ├── Scene.hpp
│   │   │           │   ├── SkinnedMesh.hpp
│   │   │           │   ├── Texture2D.hpp
│   │   │           │   └── TextureCube.hpp
│   │   │           ├── Resource.hpp
│   │   │           └── ResourceManager.hpp
│   │   ├── Scene/
│   │   │   ├── Private/
│   │   │   │   └── Scene/
│   │   │   │       ├── Component.cpp
│   │   │   │       ├── Components/
│   │   │   │       │   ├── AllComponents.cpp
│   │   │   │       │   ├── Camera/
│   │   │   │       │   │   ├── Camera.cpp
│   │   │   │       │   │   ├── OrthographicCamera.cpp
│   │   │   │       │   │   └── PerspectiveCamera.cpp
│   │   │   │       │   ├── Light/
│   │   │   │       │   │   ├── DirectionalLight.cpp
│   │   │   │       │   │   ├── EnvironmentLight.cpp
│   │   │   │       │   │   ├── Light.cpp
│   │   │   │       │   │   ├── PointLight.cpp
│   │   │   │       │   │   ├── RectLight.cpp
│   │   │   │       │   │   └── SpotLight.cpp
│   │   │   │       │   ├── Renderable/
│   │   │   │       │   │   ├── MeshRenderer.cpp
│   │   │   │       │   │   ├── Renderable.cpp
│   │   │   │       │   │   └── SkinnedMeshRenderer.cpp
│   │   │   │       │   └── Transform.cpp
│   │   │   │       ├── Node.cpp
│   │   │   │       └── Scene.cpp
│   │   │   └── Public/
│   │   │       └── Scene/
│   │   │           ├── Component.hpp
│   │   │           ├── Components/
│   │   │           │   ├── AllComponents.hpp
│   │   │           │   ├── Camera/
│   │   │           │   │   ├── Camera.hpp
│   │   │           │   │   ├── OrthographicCamera.hpp
│   │   │           │   │   └── PerspectiveCamera.hpp
│   │   │           │   ├── Light/
│   │   │           │   │   ├── DirectionalLight.hpp
│   │   │           │   │   ├── EnvironmentLight.hpp
│   │   │           │   │   ├── Light.hpp
│   │   │           │   │   ├── PointLight.hpp
│   │   │           │   │   ├── RectLight.hpp
│   │   │           │   │   └── SpotLight.hpp
│   │   │           │   ├── Renderable/
│   │   │           │   │   ├── MeshRenderer.hpp
│   │   │           │   │   ├── Renderable.hpp
│   │   │           │   │   └── SkinnedMeshRenderer.hpp
│   │   │           │   └── Transform.hpp
│   │   │           ├── Node.hpp
│   │   │           └── Scene.hpp
│   │   └── xmake.lua
│   ├── Shaders/
│   │   ├── AmbientOcclusion/
│   │   │   ├── RayTracedAO.hlsl
│   │   │   └── SSAO.hlsl
│   │   ├── Attribute.hlsli
│   │   ├── Common.hlsli
│   │   ├── Complex.hlsli
│   │   ├── Editor/
│   │   │   ├── AnimationEditor/
│   │   │   │   └── DrawSkeleton.hlsl
│   │   │   ├── AnimationEditor.hlsl
│   │   │   ├── MaterialEditor.hlsl
│   │   │   ├── MeshEditor.hlsl
│   │   │   └── Preview/
│   │   │       ├── Material.hlsl
│   │   │       └── Mesh.hlsl
│   │   ├── GlobalIllumination/
│   │   │   └── DDGI.hlsl
│   │   ├── ImGui.hlsl
│   │   ├── Interaction.hlsli
│   │   ├── Light.hlsli
│   │   ├── Material/
│   │   │   ├── BSDF/
│   │   │   │   ├── BSDF.hlsli
│   │   │   │   ├── ConductorBSDF.hlsli
│   │   │   │   ├── DielectricBSDF.hlsli
│   │   │   │   ├── DiffuseBSDF.hlsli
│   │   │   │   ├── DisneyBSDF.hlsli
│   │   │   │   ├── LayeredBSDF.hlsli
│   │   │   │   └── ThinDielectricBSDF.hlsli
│   │   │   ├── Fresnel.hlsli
│   │   │   ├── Material/
│   │   │   │   ├── ConductorMaterial.hlsli
│   │   │   │   ├── DielectricMaterial.hlsli
│   │   │   │   ├── DiffuseMaterial.hlsli
│   │   │   │   ├── DisneyMaterial.hlsli
│   │   │   │   ├── MaskedMaterial.hlsli
│   │   │   │   ├── MixMaterial.hlsli
│   │   │   │   └── ThinDielectricMaterial.hlsli
│   │   │   ├── Material.hlsli
│   │   │   ├── Scattering.hlsli
│   │   │   └── Template.material.hlsli
│   │   ├── Material.hlsli
│   │   ├── MaterialResource.hlsli
│   │   ├── Math.hlsli
│   │   ├── PostProcess/
│   │   │   ├── Bloom.hlsl
│   │   │   ├── FXAA.hlsl
│   │   │   └── Tonemapping.hlsl
│   │   ├── PreProcess/
│   │   │   ├── EquirectangularToCubemap.hlsl
│   │   │   └── GGXBRDFLUT.hlsl
│   │   ├── Random.hlsli
│   │   ├── RayTracing/
│   │   │   ├── BidirectionalPathTracing.hlsl
│   │   │   └── PathTracing.hlsl
│   │   ├── Reflection/
│   │   │   └── RayTracedReflection.hlsl
│   │   ├── RenderPath/
│   │   │   ├── VisibilityBufferVisualization.hlsl
│   │   │   ├── VisibilityGeometryPass.hlsl
│   │   │   └── VisibilityLightingPass.hlsl
│   │   ├── Shading/
│   │   │   ├── Composite.hlsl
│   │   │   ├── IBL.hlsl
│   │   │   └── Skybox.hlsl
│   │   ├── Shadow/
│   │   │   ├── CascadeShadowMap.hlsl
│   │   │   ├── OmniShadowMap.hlsl
│   │   │   ├── RayTracedShadow.hlsl
│   │   │   └── ShadowMap.hlsl
│   │   ├── SphericalHarmonic.hlsli
│   │   ├── Tonemapper.hlsli
│   │   └── UpdateBoneMatrics.hlsl
│   └── xmake.lua
├── imgui.ini
├── xmake/
│   ├── module.lua
│   ├── plugin.lua
│   ├── rule.lua
│   └── shader.lua
└── xmake.lua
Download .txt
Showing preview only (351K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3779 symbols across 303 files)

FILE: Source/Editor/Editor.cpp
  type Ilum (line 14) | namespace Ilum
    type Editor::Impl (line 16) | struct Editor::Impl
    function Renderer (line 86) | Renderer *Editor::GetRenderer() const
    function RHIContext (line 91) | RHIContext *Editor::GetRHIContext() const
    function Window (line 96) | Window *Editor::GetWindow() const
    function Node (line 111) | Node *Editor::GetSelectedNode() const

FILE: Source/Editor/Editor.hpp
  type Ilum (line 8) | namespace Ilum
    class Window (line 10) | class Window
    class RHIContext (line 11) | class RHIContext
    class GuiContext (line 12) | class GuiContext
    class Widget (line 13) | class Widget
    class Renderer (line 14) | class Renderer
    class Node (line 15) | class Node
    type Cmpt (line 17) | namespace Cmpt
      class Camera (line 19) | class Camera
    function Editor (line 22) | class EXPORT_API Editor

FILE: Source/Editor/ImGui/ImGuiContext.cpp
  type Ilum (line 19) | namespace Ilum
    type ConstantBlock (line 28) | struct ConstantBlock
    type ViewportResources (line 34) | struct ViewportResources
      method ViewportResources (line 36) | ViewportResources(const std::string &name = "subwindow")
    type WindowData (line 67) | struct WindowData
    function RHI_Render (line 403) | static void RHI_Render(ImDrawData *draw_data, WindowData *window_data ...
    function ImGuiWindowCreate (line 603) | static void ImGuiWindowCreate(ImGuiViewport *viewport)

FILE: Source/Editor/ImGui/ImGuiContext.hpp
  type Ilum (line 5) | namespace Ilum
    class GuiContext (line 7) | class GuiContext

FILE: Source/Editor/Widget.hpp
  type Ilum (line 5) | namespace Ilum
    class Editor (line 7) | class Editor
    class Widget (line 9) | class Widget
      method Widget (line 12) | Widget(const std::string &name, Editor *editor) :

FILE: Source/Engine/Engine.cpp
  type Ilum (line 11) | namespace Ilum

FILE: Source/Engine/Engine.hpp
  type Ilum (line 5) | namespace Ilum
    class Window (line 7) | class Window
    class RHIContext (line 8) | class RHIContext
    class Editor (line 9) | class Editor
    class ResourceManager (line 10) | class ResourceManager
    class Renderer (line 11) | class Renderer
    class Scene (line 12) | class Scene
    class Engine (line 14) | class Engine

FILE: Source/Engine/main.cpp
  function main (line 5) | int main()

FILE: Source/External/dxc/inc/d3d12shader.h
  type D3D12_SHADER_VERSION_TYPE (line 16) | typedef enum D3D12_SHADER_VERSION_TYPE
  type D3D_RESOURCE_RETURN_TYPE (line 53) | typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE;
  type D3D_CBUFFER_TYPE (line 55) | typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE;
  type D3D12_SIGNATURE_PARAMETER_DESC (line 58) | typedef struct _D3D12_SIGNATURE_PARAMETER_DESC
  type D3D12_SHADER_BUFFER_DESC (line 75) | typedef struct _D3D12_SHADER_BUFFER_DESC
  type D3D12_SHADER_VARIABLE_DESC (line 84) | typedef struct _D3D12_SHADER_VARIABLE_DESC
  type D3D12_SHADER_TYPE_DESC (line 97) | typedef struct _D3D12_SHADER_TYPE_DESC
  type D3D_TESSELLATOR_DOMAIN (line 109) | typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN;
  type D3D_TESSELLATOR_PARTITIONING (line 111) | typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING;
  type D3D_TESSELLATOR_OUTPUT_PRIMITIVE (line 113) | typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMIT...
  type D3D12_SHADER_DESC (line 115) | typedef struct _D3D12_SHADER_DESC
  type D3D12_SHADER_INPUT_BIND_DESC (line 160) | typedef struct _D3D12_SHADER_INPUT_BIND_DESC
  type D3D12_LIBRARY_DESC (line 205) | typedef struct _D3D12_LIBRARY_DESC
  type D3D12_FUNCTION_DESC (line 212) | typedef struct _D3D12_FUNCTION_DESC
  type D3D12_PARAMETER_DESC (line 252) | typedef struct _D3D12_PARAMETER_DESC
  type interface (line 274) | typedef interface ID3D12ShaderReflectionType
  type interface (line 275) | typedef interface ID3D12ShaderReflectionType
  type interface (line 277) | typedef interface ID3D12ShaderReflectionVariable
  type interface (line 278) | typedef interface ID3D12ShaderReflectionVariable
  type interface (line 280) | typedef interface ID3D12ShaderReflectionConstantBuffer
  type interface (line 281) | typedef interface ID3D12ShaderReflectionConstantBuffer
  type interface (line 283) | typedef interface ID3D12ShaderReflection
  type interface (line 284) | typedef interface ID3D12ShaderReflection
  type interface (line 286) | typedef interface ID3D12LibraryReflection
  type interface (line 287) | typedef interface ID3D12LibraryReflection
  type interface (line 289) | typedef interface ID3D12FunctionReflection
  type interface (line 290) | typedef interface ID3D12FunctionReflection
  type interface (line 292) | typedef interface ID3D12FunctionParameterReflection
  type interface (line 293) | typedef interface ID3D12FunctionParameterReflection

FILE: Source/External/dxc/inc/dxcapi.h
  type IMalloc (line 40) | struct IMalloc
  type IDxcIncludeHandler (line 42) | struct IDxcIncludeHandler
  type HRESULT (line 44) | typedef HRESULT (__stdcall *DxcCreateInstanceProc)(
  type HRESULT (line 50) | typedef HRESULT(__stdcall *DxcCreateInstance2Proc)(
  type DxcShaderHash (line 107) | typedef struct DxcShaderHash {
  type IDxcBlobWide (line 187) | typedef IDxcBlobWide IDxcBlobUtf16;
  type DxcText (line 200) | typedef struct DxcBuffer {
  type DxcDefine (line 206) | struct DxcDefine {
  function HRESULT (line 267) | inline HRESULT GetBlobAsUtf16(
  function HRESULT (line 431) | inline HRESULT GetBlobAsUtf16(
  type DXC_OUT_KIND (line 467) | typedef enum DXC_OUT_KIND {
  type DxcArgPair (line 637) | struct DxcArgPair {

FILE: Source/External/dxc/inc/dxcisense.h
  type DxcGlobalOptions (line 20) | typedef enum DxcGlobalOptions
  type DxcTokenKind (line 29) | typedef enum DxcTokenKind
  type DxcTypeKind (line 40) | typedef enum DxcTypeKind
  type DxcDiagnosticSeverity (line 97) | typedef enum DxcDiagnosticSeverity
  type DxcDiagnosticDisplayOptions (line 118) | typedef enum DxcDiagnosticDisplayOptions
  type DxcTranslationUnitFlags (line 144) | typedef enum DxcTranslationUnitFlags
  type DxcCursorFormatting (line 183) | typedef enum DxcCursorFormatting
  type DxcCursorKind (line 192) | enum DxcCursorKind {
  type DxcCursorKindFlags (line 555) | enum DxcCursorKindFlags
  type DxcCodeCompleteFlags (line 569) | enum DxcCodeCompleteFlags
  type DxcCompletionChunkKind (line 577) | enum DxcCompletionChunkKind
  type IDxcCursor (line 602) | struct IDxcCursor
  type IDxcDiagnostic (line 603) | struct IDxcDiagnostic
  type IDxcFile (line 604) | struct IDxcFile
  type IDxcInclusion (line 605) | struct IDxcInclusion
  type IDxcIntelliSense (line 606) | struct IDxcIntelliSense
  type IDxcIndex (line 607) | struct IDxcIndex
  type IDxcSourceLocation (line 608) | struct IDxcSourceLocation
  type IDxcSourceRange (line 609) | struct IDxcSourceRange
  type IDxcToken (line 610) | struct IDxcToken
  type IDxcTranslationUnit (line 611) | struct IDxcTranslationUnit
  type IDxcType (line 612) | struct IDxcType
  type IDxcUnsavedFile (line 613) | struct IDxcUnsavedFile
  type IDxcCodeCompleteResults (line 614) | struct IDxcCodeCompleteResults
  type IDxcCompletionResult (line 615) | struct IDxcCompletionResult
  type IDxcCompletionString (line 616) | struct IDxcCompletionString

FILE: Source/External/imgui_tools/imgui_impl_glfw.cpp
  type GlfwClientApi (line 112) | enum GlfwClientApi
  type ImGui_ImplGlfw_Data (line 119) | struct ImGui_ImplGlfw_Data
    method ImGui_ImplGlfw_Data (line 144) | ImGui_ImplGlfw_Data()   { memset((void*)this, 0, sizeof(*this)); }
  function ImGui_ImplGlfw_Data (line 154) | static ImGui_ImplGlfw_Data* ImGui_ImplGlfw_GetBackendData()
    method ImGui_ImplGlfw_Data (line 144) | ImGui_ImplGlfw_Data()   { memset((void*)this, 0, sizeof(*this)); }
  function ImGui_ImplGlfw_SetClipboardText (line 170) | static void ImGui_ImplGlfw_SetClipboardText(void* user_data, const char*...
  function ImGuiKey (line 175) | static ImGuiKey ImGui_ImplGlfw_KeyToImGuiKey(int key)
  function ImGui_ImplGlfw_KeyToModifier (line 288) | static int ImGui_ImplGlfw_KeyToModifier(int key)
  function ImGui_ImplGlfw_UpdateKeyModifiers (line 301) | static void ImGui_ImplGlfw_UpdateKeyModifiers(int mods)
  function ImGui_ImplGlfw_MouseButtonCallback (line 310) | void ImGui_ImplGlfw_MouseButtonCallback(GLFWwindow* window, int button, ...
  function ImGui_ImplGlfw_ScrollCallback (line 323) | void ImGui_ImplGlfw_ScrollCallback(GLFWwindow* window, double xoffset, d...
  function ImGui_ImplGlfw_TranslateUntranslatedKey (line 333) | static int ImGui_ImplGlfw_TranslateUntranslatedKey(int key, int scancode)
  function ImGui_ImplGlfw_KeyCallback (line 366) | void ImGui_ImplGlfw_KeyCallback(GLFWwindow* window, int keycode, int sca...
  function ImGui_ImplGlfw_WindowFocusCallback (line 391) | void ImGui_ImplGlfw_WindowFocusCallback(GLFWwindow* window, int focused)
  function ImGui_ImplGlfw_CursorPosCallback (line 401) | void ImGui_ImplGlfw_CursorPosCallback(GLFWwindow* window, double x, doub...
  function ImGui_ImplGlfw_CursorEnterCallback (line 423) | void ImGui_ImplGlfw_CursorEnterCallback(GLFWwindow* window, int entered)
  function ImGui_ImplGlfw_CharCallback (line 445) | void ImGui_ImplGlfw_CharCallback(GLFWwindow* window, unsigned int c)
  function ImGui_ImplGlfw_MonitorCallback (line 455) | void ImGui_ImplGlfw_MonitorCallback(GLFWmonitor*, int)
  function ImGui_ImplGlfw_InstallCallbacks (line 461) | void ImGui_ImplGlfw_InstallCallbacks(GLFWwindow* window)
  function ImGui_ImplGlfw_RestoreCallbacks (line 478) | void ImGui_ImplGlfw_RestoreCallbacks(GLFWwindow* window)
  function ImGui_ImplGlfw_Init (line 503) | static bool ImGui_ImplGlfw_Init(GLFWwindow* window, bool install_callbac...
  function ImGui_ImplGlfw_InitForOpenGL (line 577) | bool ImGui_ImplGlfw_InitForOpenGL(GLFWwindow* window, bool install_callb...
  function ImGui_ImplGlfw_InitForVulkan (line 582) | bool ImGui_ImplGlfw_InitForVulkan(GLFWwindow* window, bool install_callb...
  function ImGui_ImplGlfw_InitForOther (line 587) | bool ImGui_ImplGlfw_InitForOther(GLFWwindow* window, bool install_callba...
  function ImGui_ImplGlfw_Shutdown (line 592) | void ImGui_ImplGlfw_Shutdown()
  function ImGui_ImplGlfw_UpdateMouseData (line 611) | static void ImGui_ImplGlfw_UpdateMouseData()
  function ImGui_ImplGlfw_UpdateMouseCursor (line 687) | static void ImGui_ImplGlfw_UpdateMouseCursor()
  function Saturate (line 715) | static inline float Saturate(float v) { return v < 0.0f ? 0.0f : v  > 1....
  function ImGui_ImplGlfw_UpdateGamepads (line 716) | static void ImGui_ImplGlfw_UpdateGamepads()
  function ImGui_ImplGlfw_UpdateMonitors (line 767) | static void ImGui_ImplGlfw_UpdateMonitors()
  function ImGui_ImplGlfw_NewFrame (line 802) | void ImGui_ImplGlfw_NewFrame()
  type ImGui_ImplGlfw_ViewportData (line 838) | struct ImGui_ImplGlfw_ViewportData
    method ImGui_ImplGlfw_ViewportData (line 845) | ImGui_ImplGlfw_ViewportData()  { Window = nullptr; WindowOwned = false...
  function ImGui_ImplGlfw_WindowCloseCallback (line 849) | static void ImGui_ImplGlfw_WindowCloseCallback(GLFWwindow* window)
  function ImGui_ImplGlfw_WindowPosCallback (line 861) | static void ImGui_ImplGlfw_WindowPosCallback(GLFWwindow* window, int, int)
  function ImGui_ImplGlfw_WindowSizeCallback (line 876) | static void ImGui_ImplGlfw_WindowSizeCallback(GLFWwindow* window, int, int)
  function ImGui_ImplGlfw_CreateWindow (line 891) | static void ImGui_ImplGlfw_CreateWindow(ImGuiViewport* viewport)
  function ImGui_ImplGlfw_DestroyWindow (line 937) | static void ImGui_ImplGlfw_DestroyWindow(ImGuiViewport* viewport)
  function LRESULT (line 966) | static LRESULT CALLBACK WndProcNoInputs(HWND hWnd, UINT msg, WPARAM wPar...
  function ImGui_ImplGlfw_ShowWindow (line 983) | static void ImGui_ImplGlfw_ShowWindow(ImGuiViewport* viewport)
  function ImVec2 (line 1023) | static ImVec2 ImGui_ImplGlfw_GetWindowPos(ImGuiViewport* viewport)
  function ImGui_ImplGlfw_SetWindowPos (line 1031) | static void ImGui_ImplGlfw_SetWindowPos(ImGuiViewport* viewport, ImVec2 ...
  function ImVec2 (line 1038) | static ImVec2 ImGui_ImplGlfw_GetWindowSize(ImGuiViewport* viewport)
  function ImGui_ImplGlfw_SetWindowSize (line 1046) | static void ImGui_ImplGlfw_SetWindowSize(ImGuiViewport* viewport, ImVec2...
  function ImGui_ImplGlfw_SetWindowTitle (line 1063) | static void ImGui_ImplGlfw_SetWindowTitle(ImGuiViewport* viewport, const...
  function ImGui_ImplGlfw_SetWindowFocus (line 1069) | static void ImGui_ImplGlfw_SetWindowFocus(ImGuiViewport* viewport)
  function ImGui_ImplGlfw_GetWindowFocus (line 1080) | static bool ImGui_ImplGlfw_GetWindowFocus(ImGuiViewport* viewport)
  function ImGui_ImplGlfw_GetWindowMinimized (line 1086) | static bool ImGui_ImplGlfw_GetWindowMinimized(ImGuiViewport* viewport)
  function ImGui_ImplGlfw_SetWindowAlpha (line 1093) | static void ImGui_ImplGlfw_SetWindowAlpha(ImGuiViewport* viewport, float...
  function ImGui_ImplGlfw_RenderWindow (line 1100) | static void ImGui_ImplGlfw_RenderWindow(ImGuiViewport* viewport, void*)
  function ImGui_ImplGlfw_SwapBuffers (line 1108) | static void ImGui_ImplGlfw_SwapBuffers(ImGuiViewport* viewport, void*)
  type VkAllocationCallbacks (line 1134) | struct VkAllocationCallbacks
  type VkResult (line 1135) | enum VkResult { VK_RESULT_MAX_ENUM = 0x7FFFFFFF }
  function ImGui_ImplGlfw_CreateVkSurface (line 1138) | static int ImGui_ImplGlfw_CreateVkSurface(ImGuiViewport* viewport, ImU64...
  function ImGui_ImplGlfw_InitPlatformInterface (line 1149) | static void ImGui_ImplGlfw_InitPlatformInterface()
  function ImGui_ImplGlfw_ShutdownPlatformInterface (line 1184) | static void ImGui_ImplGlfw_ShutdownPlatformInterface()

FILE: Source/External/imgui_tools/imgui_impl_glfw.h
  type GLFWwindow (line 24) | struct GLFWwindow
  type GLFWmonitor (line 25) | struct GLFWmonitor

FILE: Source/External/imgui_tools/imguizmo/GraphEditor.cpp
  type GraphEditor (line 36) | namespace GraphEditor {
    function Distance (line 38) | static inline float Distance(const ImVec2& a, const ImVec2& b)
    function sign (line 43) | static inline float sign(float v)
    function ImVec2 (line 48) | static ImVec2 GetInputSlotPos(Delegate& delegate, const Node& node, Sl...
    function ImVec2 (line 56) | static ImVec2 GetOutputSlotPos(Delegate& delegate, const Node& node, S...
    function ImRect (line 64) | static ImRect GetNodeRect(const Node& node, float factor)
    type NodeOperation (line 74) | enum NodeOperation
    function HandleZoomScroll (line 85) | static void HandleZoomScroll(ImRect regionRect, ViewState& viewState, ...
    function GraphEditorClear (line 112) | void GraphEditorClear()
    function FitNodes (line 117) | static void FitNodes(Delegate& delegate, ViewState& viewState, const I...
    function DisplayLinks (line 162) | static void DisplayLinks(Delegate& delegate,
    function HandleQuadSelection (line 285) | static void HandleQuadSelection(Delegate& delegate, ImDrawList* drawLi...
    function HandleConnections (line 348) | static bool HandleConnections(ImDrawList* drawList,
    function DrawGrid (line 516) | static void DrawGrid(ImDrawList* drawList, ImVec2 windowPos, const Vie...
    function DrawNode (line 534) | static bool DrawNode(ImDrawList* drawList,
    function DrawMiniMap (line 718) | bool DrawMiniMap(ImDrawList* drawList, Delegate& delegate, ViewState& ...
    function Show (line 823) | void Show(Delegate& delegate, const Options& options, ViewState& viewS...
    function EditOptions (line 1044) | bool EditOptions(Options& options)

FILE: Source/External/imgui_tools/imguizmo/GraphEditor.h
  type NodeIndex (line 36) | typedef size_t NodeIndex;
  type SlotIndex (line 37) | typedef size_t SlotIndex;
  type LinkIndex (line 38) | typedef size_t LinkIndex;
  type TemplateIndex (line 39) | typedef size_t TemplateIndex;
  type FitOnScreen (line 43) | enum FitOnScreen
  type Options (line 51) | struct Options
  function mLineThickness (line 63) | float mLineThickness{ 5 }
  function mRenderGrid (line 76) | bool mRenderGrid{ true }; // grid or nothing

FILE: Source/External/imgui_tools/imguizmo/ImCurveEdit.cpp
  type ImCurveEdit (line 41) | namespace ImCurveEdit
    function ImVec2 (line 45) | static ImVec2 operator+(const ImVec2& a, const ImVec2& b) {
    function ImVec2 (line 49) | static ImVec2 operator-(const ImVec2& a, const ImVec2& b) {
    function ImVec2 (line 53) | static ImVec2 operator*(const ImVec2& a, const ImVec2& b) {
    function ImVec2 (line 57) | static ImVec2 operator/(const ImVec2& a, const ImVec2& b) {
    function ImVec2 (line 61) | static ImVec2 operator*(const ImVec2& a, const float b) {
    function smoothstep (line 66) | static float smoothstep(float edge0, float edge1, float x)
    function distance (line 72) | static float distance(float x, float y, float x1, float y1, float x2, ...
    function DrawPoint (line 105) | static int DrawPoint(ImDrawList* draw_list, ImVec2 pos, const ImVec2 s...
    function Edit (line 136) | int Edit(Delegate& delegate, const ImVec2& size, unsigned int id, cons...

FILE: Source/External/imgui_tools/imguizmo/ImCurveEdit.h
  type ImRect (line 30) | struct ImRect
  function namespace (line 32) | namespace ImCurveEdit

FILE: Source/External/imgui_tools/imguizmo/ImGradient.cpp
  type ImGradient (line 30) | namespace ImGradient
    function ImVec2 (line 33) | static inline ImVec2 operator*(const ImVec2& lhs, const float rhs) { r...
    function ImVec2 (line 34) | static inline ImVec2 operator/(const ImVec2& lhs, const float rhs) { r...
    function ImVec2 (line 35) | static inline ImVec2 operator+(const ImVec2& lhs, const ImVec2& rhs) {...
    function ImVec2 (line 36) | static inline ImVec2 operator-(const ImVec2& lhs, const ImVec2& rhs) {...
    function ImVec2 (line 37) | static inline ImVec2 operator*(const ImVec2& lhs, const ImVec2& rhs) {...
    function ImVec2 (line 38) | static inline ImVec2 operator/(const ImVec2& lhs, const ImVec2& rhs) {...
    function DrawPoint (line 41) | static int DrawPoint(ImDrawList* draw_list, ImVec4 color, const ImVec2...
    function Edit (line 65) | bool Edit(Delegate& delegate, const ImVec2& size, int& selection)

FILE: Source/External/imgui_tools/imguizmo/ImGradient.h
  type ImVec4 (line 29) | struct ImVec4
  type ImVec2 (line 30) | struct ImVec2
  function namespace (line 32) | namespace ImGradient

FILE: Source/External/imgui_tools/imguizmo/ImGuizmo.cpp
  type IMGUIZMO_NAMESPACE (line 45) | namespace IMGUIZMO_NAMESPACE
    function OPERATION (line 54) | static OPERATION operator&(OPERATION lhs, OPERATION rhs)
    function Intersects (line 64) | static bool Intersects(OPERATION lhs, OPERATION rhs)
    function Contains (line 70) | static bool Contains(OPERATION lhs, OPERATION rhs)
    function FPU_MatrixF_x_MatrixF (line 78) | void FPU_MatrixF_x_MatrixF(const float* a, const float* b, float* r)
    function Frustum (line 101) | void Frustum(float left, float right, float bottom, float top, float z...
    function Perspective (line 126) | void Perspective(float fovyInDegrees, float aspectRatio, float znear, ...
    function Cross (line 134) | void Cross(const float* a, const float* b, float* r)
    function Dot (line 141) | float Dot(const float* a, const float* b)
    function Normalize (line 146) | void Normalize(const float* a, float* r)
    function LookAt (line 154) | void LookAt(const float* eye, const float* at, const float* up, float*...
    function T (line 186) | T Clamp(T x, T y, T z) { return ((x < y) ? y : ((x > z) ? z : x)); }
    function T (line 187) | T max(T x, T y) { return (x > y) ? x : y; }
    function T (line 188) | T min(T x, T y) { return (x < y) ? x : y; }
    function IsWithin (line 189) | bool IsWithin(T x, T y, T z) { return (x >= y) && (x <= z); }
    type matrix_t (line 191) | struct matrix_t
      method Translation (line 323) | void Translation(float _x, float _y, float _z) { this->Translation(m...
      method Translation (line 325) | void Translation(const vec_t& vt)
      method Scale (line 333) | void Scale(float _x, float _y, float _z)
      method Scale (line 340) | void Scale(const vec_t& s) { Scale(s.x, s.y, s.z); }
      method matrix_t (line 342) | matrix_t& operator *= (const matrix_t& mat)
      method matrix_t (line 350) | matrix_t operator * (const matrix_t& mat) const
      method Multiply (line 357) | void Multiply(const matrix_t& matrix)
      method Multiply (line 365) | void Multiply(const matrix_t& m1, const matrix_t& m2)
      method GetDeterminant (line 370) | float GetDeterminant() const
      method SetToIdentity (line 377) | void SetToIdentity()
      method Transpose (line 384) | void Transpose()
      method OrthoNormalize (line 399) | void OrthoNormalize()
    type vec_t (line 192) | struct vec_t
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function vec_t (line 270) | vec_t makeVect(float _x, float _y, float _z = 0.f, float _w = 0.f) { v...
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function vec_t (line 271) | vec_t makeVect(ImVec2 v) { vec_t res; res.x = v.x; res.y = v.y; res.z ...
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function vec_t (line 272) | vec_t vec_t::operator * (float f) const { return makeVect(x * f, y * f...
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function vec_t (line 273) | vec_t vec_t::operator - () const { return makeVect(-x, -y, -z, -w); }
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function vec_t (line 274) | vec_t vec_t::operator - (const vec_t& v) const { return makeVect(x - v...
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function vec_t (line 275) | vec_t vec_t::operator + (const vec_t& v) const { return makeVect(x + v...
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function vec_t (line 276) | vec_t vec_t::operator * (const vec_t& v) const { return makeVect(x * v...
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function vec_t (line 277) | vec_t vec_t::Abs() const { return makeVect(fabsf(x), fabsf(y), fabsf(z...
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function vec_t (line 279) | vec_t Normalized(const vec_t& v) { vec_t res; res = v; res.Normalize()...
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function vec_t (line 280) | vec_t Cross(const vec_t& v1, const vec_t& v2)
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function Dot (line 290) | float Dot(const vec_t& v1, const vec_t& v2)
    function vec_t (line 295) | vec_t BuildPlan(const vec_t& p_point1, const vec_t& p_normal)
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    type matrix_t (line 306) | struct matrix_t
      method Translation (line 323) | void Translation(float _x, float _y, float _z) { this->Translation(m...
      method Translation (line 325) | void Translation(const vec_t& vt)
      method Scale (line 333) | void Scale(float _x, float _y, float _z)
      method Scale (line 340) | void Scale(const vec_t& s) { Scale(s.x, s.y, s.z); }
      method matrix_t (line 342) | matrix_t& operator *= (const matrix_t& mat)
      method matrix_t (line 350) | matrix_t operator * (const matrix_t& mat) const
      method Multiply (line 357) | void Multiply(const matrix_t& matrix)
      method Multiply (line 365) | void Multiply(const matrix_t& m1, const matrix_t& m2)
      method GetDeterminant (line 370) | float GetDeterminant() const
      method SetToIdentity (line 377) | void SetToIdentity()
      method Transpose (line 384) | void Transpose()
      method OrthoNormalize (line 399) | void OrthoNormalize()
    type MOVETYPE (line 599) | enum MOVETYPE
    function IsTranslateType (line 619) | static bool IsTranslateType(int type)
    function IsRotateType (line 624) | static bool IsRotateType(int type)
    function IsScaleType (line 629) | static bool IsScaleType(int type)
    type Context (line 667) | struct Context
      method Context (line 669) | Context() : mbUsing(false), mbEnable(true), mbUsingBounds(false)
    function Style (line 784) | Style& GetStyle()
    function ImU32 (line 789) | static ImU32 GetColorU32(int idx)
    function ImVec2 (line 795) | static ImVec2 worldToPos(const vec_t& worldPos, const matrix_t& mat, I...
    function ComputeCameraRay (line 809) | static void ComputeCameraRay(vec_t& rayOrigin, vec_t& rayDir, ImVec2 p...
    function GetSegmentLengthClipSpace (line 830) | static float GetSegmentLengthClipSpace(const vec_t& start, const vec_t...
    function GetParallelogram (line 853) | static float GetParallelogram(const vec_t& ptO, const vec_t& ptA, cons...
    function vec_t (line 875) | inline vec_t PointOnSegment(const vec_t& point, const vec_t& vertPos1,...
      method Lerp (line 197) | void Lerp(const vec_t& v, float t)
      method Set (line 205) | void Set(float v) { x = y = z = w = v; }
      method Set (line 206) | void Set(float _x, float _y, float _z = 0.f, float _w = 0.f) { x = _...
      method vec_t (line 208) | vec_t& operator -= (const vec_t& v) { x -= v.x; y -= v.y; z -= v.z; ...
      method vec_t (line 209) | vec_t& operator += (const vec_t& v) { x += v.x; y += v.y; z += v.z; ...
      method vec_t (line 210) | vec_t& operator *= (const vec_t& v) { x *= v.x; y *= v.y; z *= v.z; ...
      method vec_t (line 211) | vec_t& operator *= (float v) { x *= v;    y *= v;    z *= v;    w *=...
      method vec_t (line 219) | const vec_t& operator + () const { return (*this); }
      method Length (line 220) | float Length() const { return sqrtf(x * x + y * y + z * z); }
      method LengthSq (line 221) | float LengthSq() const { return (x * x + y * y + z * z); }
      method vec_t (line 222) | vec_t Normalize() { (*this) *= (1.f / ( Length() > FLT_EPSILON ? Len...
      method vec_t (line 223) | vec_t Normalize(const vec_t& v) { this->Set(v.x, v.y, v.z, v.w); thi...
      method Cross (line 226) | void Cross(const vec_t& v)
      method Cross (line 239) | void Cross(const vec_t& v1, const vec_t& v2)
      method Dot (line 247) | float Dot(const vec_t& v) const
      method Dot3 (line 252) | float Dot3(const vec_t& v) const
      method TransformVector (line 262) | void TransformVector(const vec_t& v, const matrix_t& matrix) { (*thi...
      method TransformPoint (line 263) | void TransformPoint(const vec_t& v, const matrix_t& matrix) { (*this...
    function IntersectRayPlane (line 897) | static float IntersectRayPlane(const vec_t& rOrigin, const vec_t& rVec...
    function DistanceToPlane (line 910) | static float DistanceToPlane(const vec_t& point, const vec_t& plan)
    function IsInContextRect (line 915) | static bool IsInContextRect(ImVec2 p)
    function IsHoveringWindow (line 920) | static bool IsHoveringWindow()
    function SetRect (line 933) | void SetRect(float x, float y, float width, float height)
    function SetOrthographic (line 944) | void SetOrthographic(bool isOrthographic)
    function SetDrawlist (line 949) | void SetDrawlist(ImDrawList* drawlist)
    function SetImGuiContext (line 954) | void SetImGuiContext(ImGuiContext* ctx)
    function BeginFrame (line 959) | void BeginFrame()
    function IsUsing (line 983) | bool IsUsing()
    function IsOver (line 988) | bool IsOver()
    function IsOver (line 995) | bool IsOver(OPERATION op)
    function Enable (line 1016) | void Enable(bool enable)
    function ComputeContext (line 1026) | static void ComputeContext(const float* view, const float* projection,...
    function ComputeColors (line 1085) | static void ComputeColors(ImU32* colors, int type, OPERATION operation)
    function ComputeTripodAxisAndVisibility (line 1132) | static void ComputeTripodAxisAndVisibility(const int axisIndex, vec_t&...
    function ComputeSnap (line 1185) | static void ComputeSnap(float* value, float snap)
    function ComputeSnap (line 1203) | static void ComputeSnap(vec_t& value, const float* snap)
    function ComputeAngleOnPlan (line 1211) | static float ComputeAngleOnPlan()
    function DrawRotationGizmo (line 1225) | static void DrawRotationGizmo(OPERATION op, int type)
    function DrawHatchedAxis (line 1316) | static void DrawHatchedAxis(const vec_t& axis)
    function DrawScaleGizmo (line 1331) | static void DrawScaleGizmo(OPERATION op, int type)
    function DrawScaleUniveralGizmo (line 1419) | static void DrawScaleUniveralGizmo(OPERATION op, int type)
    function DrawTranslationGizmo (line 1503) | static void DrawTranslationGizmo(OPERATION op, int type)
    function CanActivate (line 1599) | static bool CanActivate()
    function HandleAndDrawLocalBounds (line 1608) | static void HandleAndDrawLocalBounds(const float* bounds, matrix_t* ma...
    function GetScaleType (line 1872) | static int GetScaleType(OPERATION op)
    function GetRotateType (line 1959) | static int GetRotateType(OPERATION op)
    function GetMoveType (line 2017) | static int GetMoveType(OPERATION op, vec_t* gizmoHitProportion)
    function HandleTranslation (line 2073) | static bool HandleTranslation(float* matrix, float* deltaMatrix, OPERA...
    function HandleScale (line 2195) | static bool HandleScale(float* matrix, float* deltaMatrix, OPERATION o...
    function HandleRotation (line 2316) | static bool HandleRotation(float* matrix, float* deltaMatrix, OPERATIO...
    function DecomposeMatrixToComponents (line 2425) | void DecomposeMatrixToComponents(const float* matrix, float* translati...
    function RecomposeMatrixFromComponents (line 2444) | void RecomposeMatrixFromComponents(const float* translation, const flo...
    function SetID (line 2474) | void SetID(int id)
    function AllowAxisFlip (line 2479) | void AllowAxisFlip(bool value)
    function Manipulate (line 2484) | bool Manipulate(const float* view, const float* projection, OPERATION ...
    function SetGizmoSizeClipSpace (line 2532) | void SetGizmoSizeClipSpace(float value)
    function ComputeFrustumPlanes (line 2538) | void ComputeFrustumPlanes(vec_t* frustum, const float* clip)
    function DrawCubes (line 2576) | void DrawCubes(const float* view, const float* projection, const float...
    function DrawGrid (line 2690) | void DrawGrid(const float* view, const float* projection, const float*...
    function ViewManipulate (line 2746) | void ViewManipulate(float* view, const float* projection, OPERATION op...
    function ViewManipulate (line 2753) | void ViewManipulate(float* view, float length, ImVec2 position, ImVec2...

FILE: Source/External/imgui_tools/imguizmo/ImGuizmo.h
  function EditTransform (line 46) | void EditTransform(const Camera& camera, matrix_t& matrix)
  function namespace (line 118) | namespace IMGUIZMO_NAMESPACE

FILE: Source/External/imgui_tools/imguizmo/ImSequencer.cpp
  type ImSequencer (line 31) | namespace ImSequencer
    function ImVec2 (line 34) | static ImVec2 operator+(const ImVec2& a, const ImVec2& b) {
    function SequencerAddDelButton (line 38) | static bool SequencerAddDelButton(ImDrawList* draw_list, ImVec2 pos, b...
    function Sequencer (line 58) | bool Sequencer(SequenceInterface* sequence, int* currentFrame, bool* e...

FILE: Source/External/imgui_tools/imguizmo/ImSequencer.h
  type ImDrawList (line 30) | struct ImDrawList
  type ImRect (line 31) | struct ImRect
  function namespace (line 32) | namespace ImSequencer

FILE: Source/External/imgui_tools/imguizmo/ImZoomSlider.h
  function namespace (line 28) | namespace ImZoomSlider

FILE: Source/External/imgui_tools/imnodes/imnodes.cpp
  type CubicBezier (line 42) | struct CubicBezier
  function ImVec2 (line 48) | inline ImVec2 EvalCubicBezier(
  function ImVec2 (line 68) | ImVec2 GetClosestPointOnCubicBezier(const int num_segments, const ImVec2...
  function GetDistanceToCubicBezier (line 90) | inline float GetDistanceToCubicBezier(
  function ImRect (line 101) | inline ImRect GetContainingRectForCubicBezier(const CubicBezier& cb)
  function CubicBezier (line 116) | inline CubicBezier GetCubicBezier(
  function EvalImplicitLineEq (line 140) | inline float EvalImplicitLineEq(const ImVec2& p1, const ImVec2& p2, cons...
  function Sign (line 145) | inline int Sign(float val) { return int(val > 0.0f) - int(val < 0.0f); }
  function RectangleOverlapsLineSegment (line 147) | inline bool RectangleOverlapsLineSegment(const ImRect& rect, const ImVec...
  function RectangleOverlapsBezier (line 196) | inline bool RectangleOverlapsBezier(const ImRect& rectangle, const Cubic...
  function RectangleOverlapsLink (line 218) | inline bool RectangleOverlapsLink(
  function ImVec2 (line 260) | inline ImVec2 ScreenSpaceToGridSpace(const ImNodesEditorContext& editor,...
  function ImRect (line 265) | inline ImRect ScreenSpaceToGridSpace(const ImNodesEditorContext& editor,...
  function ImVec2 (line 270) | inline ImVec2 GridSpaceToScreenSpace(const ImNodesEditorContext& editor,...
  function ImVec2 (line 275) | inline ImVec2 GridSpaceToEditorSpace(const ImNodesEditorContext& editor,...
  function ImVec2 (line 280) | inline ImVec2 EditorSpaceToGridSpace(const ImNodesEditorContext& editor,...
  function ImVec2 (line 285) | inline ImVec2 EditorSpaceToScreenSpace(const ImVec2& v)
  function ImVec2 (line 290) | inline ImVec2 MiniMapSpaceToGridSpace(const ImNodesEditorContext& editor...
  function ImVec2 (line 296) | inline ImVec2 ScreenSpaceToMiniMapSpace(const ImNodesEditorContext& edit...
  function ImRect (line 303) | inline ImRect ScreenSpaceToMiniMapSpace(const ImNodesEditorContext& edit...
  function ImDrawListGrowChannels (line 311) | void ImDrawListGrowChannels(ImDrawList* draw_list, const int num_channels)
  function ImDrawListSplitterSwapChannels (line 363) | void ImDrawListSplitterSwapChannels(
  function DrawListSet (line 393) | void DrawListSet(ImDrawList* window_draw_list)
  function DrawListAddNode (line 419) | void DrawListAddNode(const int node_idx)
  function DrawListAppendClickInteractionChannel (line 427) | void DrawListAppendClickInteractionChannel()
  function DrawListSubmissionIdxToBackgroundChannelIdx (line 434) | int DrawListSubmissionIdxToBackgroundChannelIdx(const int submission_idx)
  function DrawListSubmissionIdxToForegroundChannelIdx (line 440) | int DrawListSubmissionIdxToForegroundChannelIdx(const int submission_idx)
  function DrawListActivateClickInteractionChannel (line 445) | void DrawListActivateClickInteractionChannel()
  function DrawListActivateCurrentNodeForeground (line 451) | void DrawListActivateCurrentNodeForeground()
  function DrawListActivateNodeBackground (line 459) | void DrawListActivateNodeBackground(const int node_idx)
  function DrawListSwapSubmissionIndices (line 476) | void DrawListSwapSubmissionIndices(const int lhs_idx, const int rhs_idx)
  function DrawListSortChannelsByDepth (line 495) | void DrawListSortChannelsByDepth(const ImVector<int>& node_idx_depth_order)
  function ImVec2 (line 549) | ImVec2 GetScreenSpacePinCoordinates(
  function ImVec2 (line 561) | ImVec2 GetScreenSpacePinCoordinates(const ImNodesEditorContext& editor, ...
  function MouseInCanvas (line 567) | bool MouseInCanvas()
  function BeginNodeSelection (line 576) | void BeginNodeSelection(ImNodesEditorContext& editor, const int node_idx)
  function BeginLinkSelection (line 636) | void BeginLinkSelection(ImNodesEditorContext& editor, const int link_idx)
  function BeginLinkDetach (line 646) | void BeginLinkDetach(ImNodesEditorContext& editor, const int link_idx, c...
  function BeginLinkCreation (line 657) | void BeginLinkCreation(ImNodesEditorContext& editor, const int hovered_p...
  function BeginLinkInteraction (line 666) | void BeginLinkInteraction(
  function BeginCanvasInteraction (line 718) | void BeginCanvasInteraction(ImNodesEditorContext& editor)
  function BoxSelectorUpdateSelection (line 746) | void BoxSelectorUpdateSelection(ImNodesEditorContext& editor, ImRect box...
  function ImVec2 (line 809) | ImVec2 SnapOriginToGrid(ImVec2 origin)
  function TranslateSelectedNodes (line 826) | void TranslateSelectedNodes(ImNodesEditorContext& editor)
  type LinkPredicate (line 852) | struct LinkPredicate
  function ImOptionalIndex (line 881) | ImOptionalIndex FindDuplicateLink(
  function ShouldLinkSnapToPin (line 901) | bool ShouldLinkSnapToPin(
  function ClickInteractionUpdate (line 932) | void ClickInteractionUpdate(ImNodesEditorContext& editor)
  function ResolveOccludedPins (line 1125) | void ResolveOccludedPins(const ImNodesEditorContext& editor, ImVector<in...
  function ImOptionalIndex (line 1162) | ImOptionalIndex ResolveHoveredPin(
  function ImOptionalIndex (line 1200) | ImOptionalIndex ResolveHoveredNode(const ImVector<int>& depth_stack)
  function ImOptionalIndex (line 1232) | ImOptionalIndex ResolveHoveredLink(
  function ImRect (line 1304) | inline ImRect GetItemRect() { return ImRect(ImGui::GetItemRectMin(), ImG...
  function ImVec2 (line 1306) | inline ImVec2 GetNodeTitleBarOrigin(const ImNodeData& node)
  function ImVec2 (line 1311) | inline ImVec2 GetNodeContentOrigin(const ImNodeData& node)
  function ImRect (line 1318) | inline ImRect GetNodeTitleRect(const ImNodeData& node)
  function DrawGrid (line 1329) | void DrawGrid(ImNodesEditorContext& editor, const ImVec2& canvas_size)
  type QuadOffsets (line 1355) | struct QuadOffsets
  function QuadOffsets (line 1360) | QuadOffsets CalculateQuadOffsets(const float side_length)
  type TriangleOffsets (line 1374) | struct TriangleOffsets
  function TriangleOffsets (line 1379) | TriangleOffsets CalculateTriangleOffsets(const float side_length)
  function DrawPinShape (line 1403) | void DrawPinShape(const ImVec2& pin_pos, const ImPinData& pin, const ImU...
  function DrawPin (line 1481) | void DrawPin(ImNodesEditorContext& editor, const int pin_idx)
  function DrawNode (line 1498) | void DrawNode(ImNodesEditorContext& editor, const int node_idx)
  function Initialize (line 1685) | void Initialize(ImNodesContext* context)
  function Shutdown (line 1703) | void Shutdown(ImNodesContext* ctx) { EditorContextFree(ctx->DefaultEdito...
  function IsMiniMapActive (line 1707) | static inline bool IsMiniMapActive()
  function IsMiniMapHovered (line 1713) | static inline bool IsMiniMapHovered()
  function CalcMiniMapLayout (line 1721) | static inline void CalcMiniMapLayout()
  function MiniMapDrawNode (line 1783) | static void MiniMapDrawNode(ImNodesEditorContext& editor, const int node...
  function ClearObjectSelection (line 1959) | void ClearObjectSelection(
  function IsObjectSelected (line 1971) | bool IsObjectSelected(const ImObjectPool<T>& objects, ImVector<int>& sel...
  type IMNODES_NAMESPACE (line 2004) | namespace IMNODES_NAMESPACE
    function ImNodesContext (line 2006) | ImNodesContext* CreateContext()
    function DestroyContext (line 2015) | void DestroyContext(ImNodesContext* ctx)
    function ImNodesContext (line 2025) | ImNodesContext* GetCurrentContext() { return GImNodes; }
    function SetCurrentContext (line 2027) | void SetCurrentContext(ImNodesContext* ctx) { GImNodes = ctx; }
    function ImNodesEditorContext (line 2029) | ImNodesEditorContext* EditorContextCreate()
    function EditorContextFree (line 2036) | void EditorContextFree(ImNodesEditorContext* ctx)
    function EditorContextSet (line 2042) | void EditorContextSet(ImNodesEditorContext* ctx) { GImNodes->EditorCtx...
    function ImVec2 (line 2044) | ImVec2 EditorContextGetPanning()
    function EditorContextResetPanning (line 2050) | void EditorContextResetPanning(const ImVec2& pos)
    function EditorContextMoveToNode (line 2056) | void EditorContextMoveToNode(const int node_id)
    function SetImGuiContext (line 2065) | void SetImGuiContext(ImGuiContext* ctx) { ImGui::SetCurrentContext(ctx...
    function ImNodesIO (line 2067) | ImNodesIO& GetIO() { return GImNodes->Io; }
    function ImNodesStyle (line 2069) | ImNodesStyle& GetStyle() { return GImNodes->Style; }
    function StyleColorsDark (line 2071) | void StyleColorsDark(ImNodesStyle* dest)
    function StyleColorsClassic (line 2117) | void StyleColorsClassic(ImNodesStyle* dest)
    function StyleColorsLight (line 2158) | void StyleColorsLight(ImNodesStyle* dest)
    function BeginNodeEditor (line 2202) | void BeginNodeEditor()
    function EndNodeEditor (line 2278) | void EndNodeEditor()
    function MiniMap (line 2428) | void MiniMap(
    function BeginNode (line 2456) | void BeginNode(const int node_id)
    function EndNode (line 2491) | void EndNode()
    function ImVec2 (line 2515) | ImVec2 GetNodeDimensions(int node_id)
    function BeginNodeTitleBar (line 2524) | void BeginNodeTitleBar()
    function EndNodeTitleBar (line 2530) | void EndNodeTitleBar()
    function BeginInputAttribute (line 2544) | void BeginInputAttribute(const int id, const ImNodesPinShape shape)
    function EndInputAttribute (line 2549) | void EndInputAttribute() { EndPinAttribute(); }
    function BeginOutputAttribute (line 2551) | void BeginOutputAttribute(const int id, const ImNodesPinShape shape)
    function EndOutputAttribute (line 2556) | void EndOutputAttribute() { EndPinAttribute(); }
    function BeginStaticAttribute (line 2558) | void BeginStaticAttribute(const int id)
    function EndStaticAttribute (line 2570) | void EndStaticAttribute()
    function PushAttributeFlag (line 2586) | void PushAttributeFlag(const ImNodesAttributeFlags flag)
    function PopAttributeFlag (line 2592) | void PopAttributeFlag()
    function Link (line 2602) | void Link(const int id, const int start_attr_id, const int end_attr_id)
    function PushColorStyle (line 2627) | void PushColorStyle(const ImNodesCol item, unsigned int color)
    function PopColorStyle (line 2633) | void PopColorStyle()
    type ImNodesStyleVarInfo (line 2641) | struct ImNodesStyleVarInfo
    function ImNodesStyleVarInfo (line 2682) | static const ImNodesStyleVarInfo* GetStyleVarInfo(ImNodesStyleVar idx)
    function PushStyleVar (line 2689) | void PushStyleVar(const ImNodesStyleVar item, const float value)
    function PushStyleVar (line 2702) | void PushStyleVar(const ImNodesStyleVar item, const ImVec2& value)
    function PopStyleVar (line 2715) | void PopStyleVar(int count)
    function SetNodeScreenSpacePos (line 2737) | void SetNodeScreenSpacePos(const int node_id, const ImVec2& screen_spa...
    function SetNodeEditorSpacePos (line 2744) | void SetNodeEditorSpacePos(const int node_id, const ImVec2& editor_spa...
    function SetNodeGridSpacePos (line 2751) | void SetNodeGridSpacePos(const int node_id, const ImVec2& grid_pos)
    function SetNodeDraggable (line 2758) | void SetNodeDraggable(const int node_id, const bool draggable)
    function ImVec2 (line 2765) | ImVec2 GetNodeScreenSpacePos(const int node_id)
    function ImVec2 (line 2774) | ImVec2 GetNodeEditorSpacePos(const int node_id)
    function ImVec2 (line 2783) | ImVec2 GetNodeGridSpacePos(const int node_id)
    function SnapNodeToGrid (line 2792) | void SnapNodeToGrid(int node_id)
    function IsEditorHovered (line 2799) | bool IsEditorHovered() { return MouseInCanvas(); }
    function IsNodeHovered (line 2801) | bool IsNodeHovered(int* const node_id)
    function IsLinkHovered (line 2815) | bool IsLinkHovered(int* const link_id)
    function IsPinHovered (line 2829) | bool IsPinHovered(int* const attr)
    function NumSelectedNodes (line 2843) | int NumSelectedNodes()
    function NumSelectedLinks (line 2850) | int NumSelectedLinks()
    function GetSelectedNodes (line 2857) | void GetSelectedNodes(int* node_ids)
    function GetSelectedLinks (line 2869) | void GetSelectedLinks(int* link_ids)
    function ClearNodeSelection (line 2881) | void ClearNodeSelection()
    function ClearNodeSelection (line 2887) | void ClearNodeSelection(int node_id)
    function ClearLinkSelection (line 2893) | void ClearLinkSelection()
    function ClearLinkSelection (line 2899) | void ClearLinkSelection(int link_id)
    function SelectNode (line 2905) | void SelectNode(int node_id)
    function SelectLink (line 2911) | void SelectLink(int link_id)
    function IsNodeSelected (line 2917) | bool IsNodeSelected(int node_id)
    function IsLinkSelected (line 2923) | bool IsLinkSelected(int link_id)
    function IsAttributeActive (line 2929) | bool IsAttributeActive()
    function IsAnyAttributeActive (line 2941) | bool IsAnyAttributeActive(int* const attribute_id)
    function IsLinkStarted (line 2958) | bool IsLinkStarted(int* const started_at_id)
    function IsLinkDropped (line 2975) | bool IsLinkDropped(int* const started_at_id, const bool including_deta...
    function IsLinkCreated (line 2996) | bool IsLinkCreated(
    function IsLinkCreated (line 3036) | bool IsLinkCreated(
    function IsLinkDestroyed (line 3086) | bool IsLinkDestroyed(int* const link_id)
    function NodeLineHandler (line 3103) | void NodeLineHandler(ImNodesEditorContext& editor, const char* const l...
    function EditorLineHandler (line 3121) | void EditorLineHandler(ImNodesEditorContext& editor, const char* const...
    function LoadCurrentEditorStateFromIniString (line 3164) | void LoadCurrentEditorStateFromIniString(const char* const data, const...
    function LoadEditorStateFromIniString (line 3169) | void LoadEditorStateFromIniString(
    function SaveCurrentEditorStateToIniFile (line 3228) | void SaveCurrentEditorStateToIniFile(const char* const file_name)
    function SaveEditorStateToIniFile (line 3233) | void SaveEditorStateToIniFile(const ImNodesEditorContext* const editor...
    function LoadCurrentEditorStateFromIniFile (line 3247) | void LoadCurrentEditorStateFromIniFile(const char* const file_name)
    function LoadEditorStateFromIniFile (line 3252) | void LoadEditorStateFromIniFile(ImNodesEditorContext* const editor, co...

FILE: Source/External/imgui_tools/imnodes/imnodes.h
  type ImNodesCol (line 14) | typedef int ImNodesCol;
  type ImNodesStyleVar (line 15) | typedef int ImNodesStyleVar;
  type ImNodesStyleFlags (line 16) | typedef int ImNodesStyleFlags;
  type ImNodesPinShape (line 17) | typedef int ImNodesPinShape;
  type ImNodesAttributeFlags (line 18) | typedef int ImNodesAttributeFlags;
  type ImNodesMiniMapLocation (line 19) | typedef int ImNodesMiniMapLocation;
  type ImNodesCol_ (line 21) | enum ImNodesCol_
  type ImNodesStyleVar_ (line 55) | enum ImNodesStyleVar_
  type ImNodesStyleFlags_ (line 75) | enum ImNodesStyleFlags_
  type ImNodesPinShape_ (line 84) | enum ImNodesPinShape_
  type ImNodesAttributeFlags_ (line 95) | enum ImNodesAttributeFlags_
  type ImNodesIO (line 110) | struct ImNodesIO
  type ImNodesStyle (line 165) | struct ImNodesStyle
  type ImNodesMiniMapLocation_ (line 211) | enum ImNodesMiniMapLocation_
  type ImGuiContext (line 219) | struct ImGuiContext
  type ImVec2 (line 220) | struct ImVec2
  type ImNodesContext (line 222) | struct ImNodesContext
  type ImNodesEditorContext (line 229) | struct ImNodesEditorContext
  function namespace (line 240) | namespace IMNODES_NAMESPACE

FILE: Source/External/imgui_tools/imnodes/imnodes_internal.h
  type ImNodesContext (line 18) | struct ImNodesContext
  type ImNodesScope (line 24) | typedef int ImNodesScope;
  type ImNodesAttributeType (line 25) | typedef int ImNodesAttributeType;
  type ImNodesUIState (line 26) | typedef int ImNodesUIState;
  type ImNodesClickInteractionType (line 27) | typedef int ImNodesClickInteractionType;
  type ImNodesLinkCreationType (line 28) | typedef int ImNodesLinkCreationType;
  type ImNodesScope_ (line 30) | enum ImNodesScope_
  type ImNodesAttributeType_ (line 38) | enum ImNodesAttributeType_
  type ImNodesUIState_ (line 45) | enum ImNodesUIState_
  type ImNodesClickInteractionType_ (line 53) | enum ImNodesClickInteractionType_
  type ImNodesLinkCreationType_ (line 64) | enum ImNodesLinkCreationType_
  function Value (line 92) | struct ImOptionalIndex
  function rhs (line 117) | inline bool operator==(const ImOptionalIndex& rhs) const { return _Index...
  function operator (line 119) | inline bool operator==(const int rhs) const { return _Index == rhs; }
  function rhs (line 121) | inline bool operator!=(const ImOptionalIndex& rhs) const { return _Index...
  function operator (line 123) | inline bool operator!=(const int rhs) const { return _Index != rhs; }
  type ImNodeData (line 131) | struct ImNodeData
  function else (line 164) | struct ImPinData
  function node_id (line 462) | const int node_id)

FILE: Source/External/imgui_tools/implot/implot.cpp
  type ImPlot (line 210) | namespace ImPlot {
    function ImVec4 (line 256) | ImVec4 GetAutoColor(ImPlotCol idx) {
    type ImPlotStyleVarInfo (line 284) | struct ImPlotStyleVarInfo {
    function ImPlotStyleVarInfo (line 324) | static const ImPlotStyleVarInfo* GetPlotStyleVarInfo(ImPlotStyleVar id...
    function AddTextVertical (line 334) | void AddTextVertical(ImDrawList *DrawList, ImVec2 pos, ImU32 col, cons...
    function AddTextCentered (line 377) | void AddTextCentered(ImDrawList* DrawList, ImVec2 top_center, ImU32 co...
    function NiceNum (line 392) | double NiceNum(double x, bool round) {
    function SetImGuiContext (line 421) | void SetImGuiContext(ImGuiContext* ctx) {
    function ImPlotContext (line 425) | ImPlotContext* CreateContext() {
    function DestroyContext (line 433) | void DestroyContext(ImPlotContext* ctx) {
    function ImPlotContext (line 441) | ImPlotContext* GetCurrentContext() {
    function SetCurrentContext (line 445) | void SetCurrentContext(ImPlotContext* ctx) {
    function Initialize (line 452) | void Initialize(ImPlotContext* ctx) {
    function ResetCtxForNextPlot (line 492) | void ResetCtxForNextPlot(ImPlotContext* ctx) {
    function ResetCtxForNextAlignedPlots (line 514) | void ResetCtxForNextAlignedPlots(ImPlotContext* ctx) {
    function ResetCtxForNextSubplot (line 519) | void ResetCtxForNextSubplot(ImPlotContext* ctx) {
    function ImPlotPlot (line 529) | ImPlotPlot* GetPlot(const char* title) {
    function ImPlotPlot (line 535) | ImPlotPlot* GetCurrentPlot() {
    function BustPlotCache (line 539) | void BustPlotCache() {
    function ImVec2 (line 549) | ImVec2 GetLocationPos(const ImRect& outer_rect, const ImVec2& inner_si...
    function ImVec2 (line 569) | ImVec2 CalcLegendSize(ImPlotItemGroup& items, const ImVec2& pad, const...
    function LegendSortingComp (line 590) | int LegendSortingComp(const void* _a, const void* _b) {
    function ShowLegendEntries (line 599) | bool ShowLegendEntries(ImPlotItemGroup& items, const ImRect& legend_bb...
    function Locator_Default (line 693) | void Locator_Default(ImPlotTicker& ticker, const ImPlotRange& range, f...
    function CalcLogarithmicExponents (line 733) | bool CalcLogarithmicExponents(const ImPlotRange& range, float pix, boo...
    function AddTicksLogarithmic (line 752) | void AddTicksLogarithmic(const ImPlotRange& range, int exp_min, int ex...
    function Locator_Log10 (line 773) | void Locator_Log10(ImPlotTicker& ticker, const ImPlotRange& range, flo...
    function CalcSymLogPixel (line 779) | float CalcSymLogPixel(double plt, const ImPlotRange& range, float pixe...
    function Locator_SymLog (line 790) | void Locator_SymLog(ImPlotTicker& ticker, const ImPlotRange& range, fl...
    function AddTicksCustom (line 813) | void AddTicksCustom(const double* values, const char* const labels[], ...
    function ImPlotTimeUnit (line 838) | inline ImPlotTimeUnit GetUnitForRange(double range) {
    function LowerBoundStep (line 847) | inline int LowerBoundStep(int max_divs, const int* divs, const int* st...
    function GetTimeStep (line 857) | inline int GetTimeStep(int max_divs, ImPlotTimeUnit unit) {
    function ImPlotTime (line 886) | ImPlotTime MkGmtTime(struct tm *ptm) {
    function tm (line 898) | tm* GetGmtTime(const ImPlotTime& t, tm* ptm)
    function ImPlotTime (line 910) | ImPlotTime MkLocTime(struct tm *ptm) {
    function tm (line 918) | tm* GetLocTime(const ImPlotTime& t, tm* ptm) {
    function ImPlotTime (line 929) | inline ImPlotTime MkTime(struct tm *ptm) {
    function tm (line 936) | inline tm* GetTime(const ImPlotTime& t, tm* ptm) {
    function ImPlotTime (line 943) | ImPlotTime MakeTime(int year, int month, int day, int hour, int min, i...
    function GetYear (line 966) | int GetYear(const ImPlotTime& t) {
    function ImPlotTime (line 972) | ImPlotTime AddTime(const ImPlotTime& t, ImPlotTimeUnit unit, int count) {
    function ImPlotTime (line 1004) | ImPlotTime FloorTime(const ImPlotTime& t, ImPlotTimeUnit unit) {
    function ImPlotTime (line 1021) | ImPlotTime CeilTime(const ImPlotTime& t, ImPlotTimeUnit unit) {
    function ImPlotTime (line 1025) | ImPlotTime RoundTime(const ImPlotTime& t, ImPlotTimeUnit unit) {
    function ImPlotTime (line 1033) | ImPlotTime CombineDateTime(const ImPlotTime& date_part, const ImPlotTi...
    function FormatTime (line 1054) | int FormatTime(const ImPlotTime& t, char* buffer, int size, ImPlotTime...
    function FormatDate (line 1094) | int FormatDate(const ImPlotTime& t, char* buffer, int size, ImPlotDate...
    function FormatDateTime (line 1123) | int FormatDateTime(const ImPlotTime& t, char* buffer, int size, ImPlot...
    function GetDateTimeWidth (line 1135) | inline float GetDateTimeWidth(ImPlotDateTimeSpec fmt) {
    function TimeLabelSame (line 1142) | inline bool TimeLabelSame(const char* l1, const char* l2) {
    function ImPlotDateTimeSpec (line 1193) | inline ImPlotDateTimeSpec GetDateTimeFmt(const ImPlotDateTimeSpec* ctx...
    function Locator_Time (line 1201) | void Locator_Time(ImPlotTicker& ticker, const ImPlotRange& range, floa...
    function DragFloat (line 1298) | bool DragFloat(const char*, F*, float, F, F) {
    function BeginDisabledControls (line 1312) | inline void BeginDisabledControls(bool cond) {
    function EndDisabledControls (line 1319) | inline void EndDisabledControls(bool cond) {
    function ShowAxisContextMenu (line 1326) | void ShowAxisContextMenu(ImPlotAxis& axis, ImPlotAxis* equal_axis, boo...
    function ShowLegendContextMenu (line 1441) | bool ShowLegendContextMenu(ImPlotLegend& legend, bool visible) {
    function ShowSubplotsContextMenu (line 1467) | void ShowSubplotsContextMenu(ImPlotSubplot& subplot) {
    function ShowPlotContextMenu (line 1494) | void ShowPlotContextMenu(ImPlotPlot& plot) {
    function AxisPrecision (line 1569) | static inline int AxisPrecision(const ImPlotAxis& axis) {
    function RoundAxisValue (line 1574) | static inline double RoundAxisValue(const ImPlotAxis& axis, double val...
    function LabelAxisValue (line 1578) | void LabelAxisValue(const ImPlotAxis& axis, double value, char* buff, ...
    function UpdateAxisColors (line 1596) | void UpdateAxisColors(ImPlotAxis& axis) {
    function PadAndDatumAxesX (line 1608) | void PadAndDatumAxesX(ImPlotPlot& plot, float& pad_T, float& pad_B, Im...
    function PadAndDatumAxesY (line 1673) | void PadAndDatumAxesY(ImPlotPlot& plot, float& pad_L, float& pad_R, Im...
    function RenderGridLinesX (line 1759) | static inline void RenderGridLinesX(ImDrawList& DrawList, const ImPlot...
    function RenderGridLinesY (line 1777) | static inline void RenderGridLinesY(ImDrawList& DrawList, const ImPlot...
    function RenderSelectionRect (line 1793) | static inline void RenderSelectionRect(ImDrawList& DrawList, const ImV...
    function UpdateInput (line 1807) | bool UpdateInput(ImPlotPlot& plot) {
    function ApplyNextPlotData (line 2070) | void ApplyNextPlotData(ImAxis idx) {
    function SetupAxis (line 2096) | void SetupAxis(ImAxis idx, const char* label, ImPlotAxisFlags flags) {
    function SetupAxisLimits (line 2117) | void SetupAxisLimits(ImAxis idx, double min_lim, double max_lim, ImPlo...
    function SetupAxisFormat (line 2130) | void SetupAxisFormat(ImAxis idx, const char* fmt) {
    function SetupAxisLinks (line 2142) | void SetupAxisLinks(ImAxis idx, double* min_lnk, double* max_lnk) {
    function SetupAxisFormat (line 2154) | void SetupAxisFormat(ImAxis idx, ImPlotFormatter formatter, void* data) {
    function SetupAxisTicks (line 2165) | void SetupAxisTicks(ImAxis idx, const double* values, int n_ticks, con...
    function SetupAxisTicks (line 2181) | void SetupAxisTicks(ImAxis idx, double v_min, double v_max, int n_tick...
    function SetupAxisScale (line 2190) | void SetupAxisScale(ImAxis idx, ImPlotScale scale) {
    function SetupAxisScale (line 2232) | void SetupAxisScale(ImAxis idx, ImPlotTransform fwd, ImPlotTransform i...
    function SetupAxisLimitsConstraints (line 2245) | void SetupAxisLimitsConstraints(ImAxis idx, double v_min, double v_max) {
    function SetupAxisZoomConstraints (line 2256) | void SetupAxisZoomConstraints(ImAxis idx, double z_min, double z_max) {
    function SetupAxes (line 2267) | void SetupAxes(const char* x_label, const char* y_label, ImPlotAxisFla...
    function SetupAxesLimits (line 2272) | void SetupAxesLimits(double x_min, double x_max, double y_min, double ...
    function SetupLegend (line 2277) | void SetupLegend(ImPlotLocation location, ImPlotLegendFlags flags) {
    function SetupMouseText (line 2294) | void SetupMouseText(ImPlotLocation location, ImPlotMouseTextFlags flag...
    function SetNextAxisLimits (line 2306) | void SetNextAxisLimits(ImAxis axis, double v_min, double v_max, ImPlot...
    function SetNextAxisLinks (line 2316) | void SetNextAxisLinks(ImAxis axis, double* link_min, double* link_max) {
    function SetNextAxisToFit (line 2323) | void SetNextAxisToFit(ImAxis axis) {
    function SetNextAxesLimits (line 2329) | void SetNextAxesLimits(double x_min, double x_max, double y_min, doubl...
    function SetNextAxesToFit (line 2334) | void SetNextAxesToFit() {
    function BeginPlot (line 2343) | bool BeginPlot(const char* title_id, const ImVec2& size, ImPlotFlags f...
    function SetupFinish (line 2453) | void SetupFinish() {
    function EndPlot (line 2753) | void EndPlot() {
    function SubplotSetCell (line 3227) | void SubplotSetCell(int row, int col) {
    function SubplotSetCell (line 3268) | void SubplotSetCell(int idx) {
    function SubplotNextCell (line 3285) | void SubplotNextCell() {
    function BeginSubplots (line 3291) | bool BeginSubplots(const char* title, int rows, int cols, const ImVec2...
    function EndSubplots (line 3493) | void EndSubplots() {
    function SetAxis (line 3561) | void SetAxis(ImAxis axis) {
    function SetAxes (line 3573) | void SetAxes(ImAxis x_idx, ImAxis y_idx) {
    function ImPlotPoint (line 3585) | ImPlotPoint PixelsToPlot(float x, float y, ImAxis x_idx, ImAxis y_idx) {
    function ImPlotPoint (line 3597) | ImPlotPoint PixelsToPlot(const ImVec2& pix, ImAxis x_idx, ImAxis y_idx) {
    function ImVec2 (line 3601) | ImVec2 PlotToPixels(double x, double y, ImAxis x_idx, ImAxis y_idx) {
    function ImVec2 (line 3613) | ImVec2 PlotToPixels(const ImPlotPoint& plt, ImAxis x_idx, ImAxis y_idx) {
    function ImVec2 (line 3617) | ImVec2 GetPlotPos() {
    function ImVec2 (line 3624) | ImVec2 GetPlotSize() {
    function ImPlotPoint (line 3631) | ImPlotPoint GetPlotMousePos(ImAxis x_idx, ImAxis y_idx) {
    function ImPlotRect (line 3637) | ImPlotRect GetPlotLimits(ImAxis x_idx, ImAxis y_idx) {
    function IsPlotHovered (line 3652) | bool IsPlotHovered() {
    function IsAxisHovered (line 3659) | bool IsAxisHovered(ImAxis axis) {
    function IsSubplotsHovered (line 3666) | bool IsSubplotsHovered() {
    function IsPlotSelected (line 3672) | bool IsPlotSelected() {
    function ImPlotRect (line 3679) | ImPlotRect GetPlotSelection(ImAxis x_idx, ImAxis y_idx) {
    function CancelPlotSelection (line 3696) | void CancelPlotSelection() {
    function HideNextItem (line 3705) | void HideNextItem(bool hidden, ImPlotCond cond) {
    function Annotation (line 3716) | void Annotation(double x, double y, const ImVec4& col, const ImVec2& o...
    function AnnotationV (line 3729) | void AnnotationV(double x, double y, const ImVec4& col, const ImVec2& ...
    function Annotation (line 3739) | void Annotation(double x, double y, const ImVec4& col, const ImVec2& o...
    function TagV (line 3746) | void TagV(ImAxis axis, double v, const ImVec4& col, const char* fmt, v...
    function Tag (line 3754) | void Tag(ImAxis axis, double v, const ImVec4& col, const char* fmt, .....
    function Tag (line 3761) | void Tag(ImAxis axis, double v, const ImVec4& color, bool round) {
    function IMPLOT_API (line 3770) | IMPLOT_API void TagX(double x, const ImVec4& color, bool round) {
    function IMPLOT_API (line 3776) | IMPLOT_API void TagX(double x, const ImVec4& color, const char* fmt, ....
    function IMPLOT_API (line 3785) | IMPLOT_API void TagXV(double x, const ImVec4& color, const char* fmt, ...
    function IMPLOT_API (line 3791) | IMPLOT_API void TagY(double y, const ImVec4& color, bool round) {
    function IMPLOT_API (line 3797) | IMPLOT_API void TagY(double y, const ImVec4& color, const char* fmt, ....
    function IMPLOT_API (line 3806) | IMPLOT_API void TagYV(double y, const ImVec4& color, const char* fmt, ...
    function DragPoint (line 3814) | bool DragPoint(int n_id, double* x, double* y, const ImVec4& col, floa...
    function DragLineX (line 3859) | bool DragLineX(int n_id, double* value, const ImVec4& col, float thick...
    function DragLineY (line 3910) | bool DragLineY(int n_id, double* value, const ImVec4& col, float thick...
    function DragRect (line 3962) | bool DragRect(int n_id, double* x_min, double* y_min, double* x_max, d...
    function DragRect (line 4084) | bool DragRect(int id, ImPlotRect* bounds, const ImVec4& col, ImPlotDra...
    function IsLegendEntryHovered (line 4092) | bool IsLegendEntryHovered(const char* label_id) {
    function BeginLegendPopup (line 4101) | bool BeginLegendPopup(const char* label_id, ImGuiMouseButton mouse_but...
    function EndLegendPopup (line 4117) | void EndLegendPopup() {
    function ShowAltLegend (line 4122) | void ShowAltLegend(const char* title_id, bool vertical, const ImVec2 s...
    function BeginDragDropTargetPlot (line 4162) | bool BeginDragDropTargetPlot() {
    function BeginDragDropTargetAxis (line 4169) | bool BeginDragDropTargetAxis(ImAxis axis) {
    function BeginDragDropTargetLegend (line 4178) | bool BeginDragDropTargetLegend() {
    function EndDragDropTarget (line 4185) | void EndDragDropTarget() {
    function BeginDragDropSourcePlot (line 4190) | bool BeginDragDropSourcePlot(ImGuiDragDropFlags flags) {
    function BeginDragDropSourceAxis (line 4199) | bool BeginDragDropSourceAxis(ImAxis idx, ImGuiDragDropFlags flags) {
    function BeginDragDropSourceItem (line 4208) | bool BeginDragDropSourceItem(const char* label_id, ImGuiDragDropFlags ...
    function EndDragDropSource (line 4220) | void EndDragDropSource() {
    function BeginAlignedPlots (line 4229) | bool BeginAlignedPlots(const char* group_id, bool vertical) {
    function EndAlignedPlots (line 4250) | void EndAlignedPlots() {
    function ImPlotStyle (line 4264) | ImPlotStyle& GetStyle() {
    function PushStyleColor (line 4270) | void PushStyleColor(ImPlotCol idx, ImU32 col) {
    function PushStyleColor (line 4279) | void PushStyleColor(ImPlotCol idx, const ImVec4& col) {
    function PopStyleColor (line 4288) | void PopStyleColor(int count) {
    function PushStyleVar (line 4300) | void PushStyleVar(ImPlotStyleVar idx, float val) {
    function PushStyleVar (line 4312) | void PushStyleVar(ImPlotStyleVar idx, int val) {
    function PushStyleVar (line 4330) | void PushStyleVar(ImPlotStyleVar idx, const ImVec2& val)
    function PopStyleVar (line 4344) | void PopStyleVar(int count) {
    function ImPlotColormap (line 4370) | ImPlotColormap AddColormap(const char* name, const ImVec4* colormap, i...
    function ImPlotColormap (line 4381) | ImPlotColormap AddColormap(const char* name, const ImU32*  colormap, i...
    function GetColormapCount (line 4388) | int GetColormapCount() {
    function ImPlotColormap (line 4398) | ImPlotColormap GetColormapIndex(const char* name) {
    function PushColormap (line 4403) | void PushColormap(ImPlotColormap colormap) {
    function PushColormap (line 4410) | void PushColormap(const char* name) {
    function PopColormap (line 4417) | void PopColormap(int count) {
    function ImU32 (line 4428) | ImU32 NextColormapColorU32() {
    function ImVec4 (line 4437) | ImVec4 NextColormapColor() {
    function GetColormapSize (line 4441) | int GetColormapSize(ImPlotColormap cmap) {
    function ImU32 (line 4448) | ImU32 GetColormapColorU32(int idx, ImPlotColormap cmap) {
    function ImVec4 (line 4456) | ImVec4 GetColormapColor(int idx, ImPlotColormap cmap) {
    function ImU32 (line 4460) | ImU32  SampleColormapU32(float t, ImPlotColormap cmap) {
    function ImVec4 (line 4467) | ImVec4 SampleColormap(float t, ImPlotColormap cmap) {
    function RenderColorBar (line 4471) | void RenderColorBar(const ImU32* colors, int size, ImDrawList& DrawLis...
    function ColormapScale (line 4508) | void ColormapScale(const char* label, double scale_min, double scale_m...
    function ColormapSlider (line 4597) | bool ColormapSlider(const char* label, float* t, ImVec4* out, const ch...
    function ColormapButton (line 4631) | bool ColormapButton(const char* label, const ImVec2& size_arg, ImPlotC...
    function ImPlotInputMap (line 4664) | ImPlotInputMap& GetInputMap() {
    function MapInputDefault (line 4670) | void MapInputDefault(ImPlotInputMap* dst) {
    function MapInputReverse (line 4686) | void MapInputReverse(ImPlotInputMap* dst) {
    function ItemIcon (line 4706) | void ItemIcon(const ImVec4& col) {
    function ItemIcon (line 4710) | void ItemIcon(ImU32 col) {
    function ColormapIcon (line 4719) | void ColormapIcon(ImPlotColormap cmap) {
    function ImDrawList (line 4731) | ImDrawList* GetPlotDrawList() {
    function PushPlotClipRect (line 4735) | void PushPlotClipRect(float expand) {
    function PopPlotClipRect (line 4744) | void PopPlotClipRect() {
    function HelpMarker (line 4749) | static void HelpMarker(const char* desc) {
    function ShowStyleSelector (line 4760) | bool ShowStyleSelector(const char* label)
    function ShowColormapSelector (line 4777) | bool ShowColormapSelector(const char* label) {
    function ShowInputMapSelector (line 4794) | bool ShowInputMapSelector(const char* label) {
    function ShowStyleEditor (line 4809) | void ShowStyleEditor(ImPlotStyle* ref) {
    function ShowUserGuide (line 5053) | void ShowUserGuide() {
    function ShowTicksMetrics (line 5079) | void ShowTicksMetrics(const ImPlotTicker& ticker) {
    function ShowAxisMetrics (line 5084) | void ShowAxisMetrics(const ImPlotPlot& plot, const ImPlotAxis& axis) {
    function ShowMetricsWindow (line 5111) | void ShowMetricsWindow(bool* p_popen) {
    function ShowDatePicker (line 5311) | bool ShowDatePicker(const char* id, int* level, ImPlotTime* t, const I...
    function ShowTimePicker (line 5522) | bool ShowTimePicker(const char* id, ImPlotTime* t) {
    function StyleColorsAuto (line 5619) | void StyleColorsAuto(ImPlotStyle* dst) {
    function StyleColorsClassic (line 5649) | void StyleColorsClassic(ImPlotStyle* dst) {
    function StyleColorsDark (line 5678) | void StyleColorsDark(ImPlotStyle* dst) {
    function StyleColorsLight (line 5707) | void StyleColorsLight(ImPlotStyle* dst) {
    function BeginPlot (line 5742) | bool BeginPlot(const char* title, const char* x_label, const char* y1_...

FILE: Source/External/imgui_tools/implot/implot.h
  type ImPlotContext (line 76) | struct ImPlotContext
  type ImAxis (line 79) | typedef int ImAxis;
  type ImPlotFlags (line 80) | typedef int ImPlotFlags;
  type ImPlotAxisFlags (line 81) | typedef int ImPlotAxisFlags;
  type ImPlotSubplotFlags (line 82) | typedef int ImPlotSubplotFlags;
  type ImPlotLegendFlags (line 83) | typedef int ImPlotLegendFlags;
  type ImPlotMouseTextFlags (line 84) | typedef int ImPlotMouseTextFlags;
  type ImPlotDragToolFlags (line 85) | typedef int ImPlotDragToolFlags;
  type ImPlotColormapScaleFlags (line 86) | typedef int ImPlotColormapScaleFlags;
  type ImPlotItemFlags (line 88) | typedef int ImPlotItemFlags;
  type ImPlotLineFlags (line 89) | typedef int ImPlotLineFlags;
  type ImPlotScatterFlags (line 90) | typedef int ImPlotScatterFlags;
  type ImPlotStairsFlags (line 91) | typedef int ImPlotStairsFlags;
  type ImPlotShadedFlags (line 92) | typedef int ImPlotShadedFlags;
  type ImPlotBarsFlags (line 93) | typedef int ImPlotBarsFlags;
  type ImPlotBarGroupsFlags (line 94) | typedef int ImPlotBarGroupsFlags;
  type ImPlotErrorBarsFlags (line 95) | typedef int ImPlotErrorBarsFlags;
  type ImPlotStemsFlags (line 96) | typedef int ImPlotStemsFlags;
  type ImPlotInfLinesFlags (line 97) | typedef int ImPlotInfLinesFlags;
  type ImPlotPieChartFlags (line 98) | typedef int ImPlotPieChartFlags;
  type ImPlotHeatmapFlags (line 99) | typedef int ImPlotHeatmapFlags;
  type ImPlotHistogramFlags (line 100) | typedef int ImPlotHistogramFlags;
  type ImPlotDigitalFlags (line 101) | typedef int ImPlotDigitalFlags;
  type ImPlotImageFlags (line 102) | typedef int ImPlotImageFlags;
  type ImPlotTextFlags (line 103) | typedef int ImPlotTextFlags;
  type ImPlotDummyFlags (line 104) | typedef int ImPlotDummyFlags;
  type ImPlotCond (line 106) | typedef int ImPlotCond;
  type ImPlotCol (line 107) | typedef int ImPlotCol;
  type ImPlotStyleVar (line 108) | typedef int ImPlotStyleVar;
  type ImPlotScale (line 109) | typedef int ImPlotScale;
  type ImPlotMarker (line 110) | typedef int ImPlotMarker;
  type ImPlotColormap (line 111) | typedef int ImPlotColormap;
  type ImPlotLocation (line 112) | typedef int ImPlotLocation;
  type ImPlotBin (line 113) | typedef int ImPlotBin;
  type ImAxis_ (line 116) | enum ImAxis_ {
  type ImPlotFlags_ (line 130) | enum ImPlotFlags_ {
  type ImPlotAxisFlags_ (line 146) | enum ImPlotAxisFlags_ {
  type ImPlotSubplotFlags_ (line 170) | enum ImPlotSubplotFlags_ {
  type ImPlotLegendFlags_ (line 186) | enum ImPlotLegendFlags_ {
  type ImPlotMouseTextFlags_ (line 198) | enum ImPlotMouseTextFlags_ {
  type ImPlotDragToolFlags_ (line 206) | enum ImPlotDragToolFlags_ {
  type ImPlotColormapScaleFlags_ (line 215) | enum ImPlotColormapScaleFlags_ {
  type ImPlotItemFlags_ (line 223) | enum ImPlotItemFlags_ {
  type ImPlotLineFlags_ (line 230) | enum ImPlotLineFlags_ {
  type ImPlotScatterFlags_ (line 240) | enum ImPlotScatterFlags_ {
  type ImPlotStairsFlags_ (line 246) | enum ImPlotStairsFlags_ {
  type ImPlotShadedFlags_ (line 253) | enum ImPlotShadedFlags_ {
  type ImPlotBarsFlags_ (line 258) | enum ImPlotBarsFlags_ {
  type ImPlotBarGroupsFlags_ (line 264) | enum ImPlotBarGroupsFlags_ {
  type ImPlotErrorBarsFlags_ (line 271) | enum ImPlotErrorBarsFlags_ {
  type ImPlotStemsFlags_ (line 277) | enum ImPlotStemsFlags_ {
  type ImPlotInfLinesFlags_ (line 283) | enum ImPlotInfLinesFlags_ {
  type ImPlotPieChartFlags_ (line 289) | enum ImPlotPieChartFlags_ {
  type ImPlotHeatmapFlags_ (line 295) | enum ImPlotHeatmapFlags_ {
  type ImPlotHistogramFlags_ (line 301) | enum ImPlotHistogramFlags_ {
  type ImPlotDigitalFlags_ (line 311) | enum ImPlotDigitalFlags_ {
  type ImPlotImageFlags_ (line 316) | enum ImPlotImageFlags_ {
  type ImPlotTextFlags_ (line 321) | enum ImPlotTextFlags_ {
  type ImPlotDummyFlags_ (line 327) | enum ImPlotDummyFlags_ {
  type ImPlotCond_ (line 332) | enum ImPlotCond_
  type ImPlotCol_ (line 340) | enum ImPlotCol_ {
  type ImPlotStyleVar_ (line 368) | enum ImPlotStyleVar_ {
  type ImPlotScale_ (line 402) | enum ImPlotScale_ {
  type ImPlotMarker_ (line 410) | enum ImPlotMarker_ {
  type ImPlotColormap_ (line 426) | enum ImPlotColormap_ {
  type ImPlotLocation_ (line 446) | enum ImPlotLocation_ {
  type ImPlotBin_ (line 459) | enum ImPlotBin_ {
  function ImPlotPoint (line 467) | struct ImPlotPoint {
  function const (line 472) | double  operator[] (size_t idx) const { return (&x)[idx]; }
  function ImPlotRange (line 481) | struct ImPlotRange {
  function Contains (line 485) | bool Contains(double value) const     { return value >= Min && value <= ...
  function Clamp (line 487) | double Clamp(double value) const      { return (value < Min) ? Min : (va...
  function ImPlotRect (line 491) | struct ImPlotRect {
  function Contains (line 495) | bool Contains(const ImPlotPoint& p) const                          { ret...
  function Contains (line 496) | bool Contains(double x, double y) const                            { ret...
  function ImPlotPoint (line 498) | ImPlotPoint Clamp(const ImPlotPoint& p)                            { ret...
  function ImPlotPoint (line 499) | ImPlotPoint Clamp(double x, double y)                              { ret...
  type ImPlotStyle (line 505) | struct ImPlotStyle {
  type ImPlotInputMap (line 562) | struct ImPlotInputMap {
  type ImPlotPoint (line 586) | typedef ImPlotPoint (*ImPlotGetter)(int idx, void* user_data);
  function namespace (line 591) | namespace ImPlot {
  type ImPlotFlagsObsolete_ (line 1270) | enum ImPlotFlagsObsolete_ {
  function namespace (line 1275) | namespace ImPlot {

FILE: Source/External/imgui_tools/implot/implot_demo.cpp
  type MyImPlot (line 47) | namespace MyImPlot {
    type Vector2f (line 50) | struct Vector2f {
      method Vector2f (line 51) | Vector2f(float _x, float _y) { x = _x; y = _y; }
    type WaveData (line 56) | struct WaveData {
      method WaveData (line 58) | WaveData(double x, double amp, double freq, double offset) { X = x; ...
    function ImPlotPoint (line 2277) | ImPlotPoint SineWave(int idx, void* data) {
    function ImPlotPoint (line 2283) | ImPlotPoint SawWave(int idx, void* data) {
    function ImPlotPoint (line 2289) | ImPlotPoint Spiral(int idx, void*) {
    function Sparkline (line 2300) | void Sparkline(const char* id, const float* values, int count, float m...
    function StyleSeaborn (line 2313) | void StyleSeaborn() {
    function BinarySearch (line 2377) | int BinarySearch(const T* arr, int l, int r, T x) {
    function PlotCandlestick (line 2389) | void PlotCandlestick(const char* label_id, const double* xs, const dou...
  type ImPlot (line 75) | namespace ImPlot {
    function T (line 78) | inline T RandomRange(T min, T max) {
    function ImVec4 (line 83) | ImVec4 RandomColor() {
    function RandomGauss (line 92) | double RandomGauss() {
    type NormalDistribution (line 113) | struct NormalDistribution {
      method NormalDistribution (line 114) | NormalDistribution(double mean, double sd) {
    type ScrollingBuffer (line 122) | struct ScrollingBuffer {
      method ScrollingBuffer (line 126) | ScrollingBuffer(int max_size = 2000) {
      method AddPoint (line 131) | void AddPoint(float x, float y) {
      method Erase (line 139) | void Erase() {
    type RollingBuffer (line 148) | struct RollingBuffer {
      method RollingBuffer (line 151) | RollingBuffer() {
      method AddPoint (line 155) | void AddPoint(float x, float y) {
    type HugeTimeData (line 164) | struct HugeTimeData {
      method HugeTimeData (line 165) | HugeTimeData(double min) {
      method GetY (line 174) | static double GetY(double t) {
    function Demo_Help (line 186) | void Demo_Help() {
    function ButtonSelector (line 211) | void ButtonSelector(const char* label, ImGuiMouseButton* b) {
    function ModSelector (line 224) | void ModSelector(const char* label, int* k) {
    function InputMapping (line 233) | void InputMapping(const char* label, ImGuiMouseButton* b, int* k) {
    function ShowInputMapping (line 245) | void ShowInputMapping() {
    function Demo_Config (line 259) | void Demo_Config() {
    function Demo_LinePlots (line 287) | void Demo_LinePlots() {
    function Demo_FilledLinePlots (line 309) | void Demo_FilledLinePlots() {
    function Demo_ShadedPlots (line 363) | void Demo_ShadedPlots() {
    function Demo_ScatterPlots (line 391) | void Demo_ScatterPlots() {
    function Demo_StairstepPlots (line 416) | void Demo_StairstepPlots() {
    function Demo_BarPlots (line 446) | void Demo_BarPlots() {
    function Demo_BarGroups (line 457) | void Demo_BarGroups() {
    function Demo_BarStacks (line 498) | void Demo_BarStacks() {
    function Demo_ErrorBars (line 546) | void Demo_ErrorBars() {
    function Demo_StemPlots (line 576) | void Demo_StemPlots() {
    function Demo_InfiniteLines (line 595) | void Demo_InfiniteLines() {
    function Demo_PieCharts (line 607) | void Demo_PieCharts() {
    function Demo_Heatmaps (line 642) | void Demo_Heatmaps() {
    function Demo_Histogram (line 709) | void Demo_Histogram() {
    function Demo_Histogram2D (line 774) | void Demo_Histogram2D() {
    function Demo_DigitalPlots (line 803) | void Demo_DigitalPlots() {
    function Demo_Images (line 857) | void Demo_Images() {
    function Demo_RealtimePlots (line 879) | void Demo_RealtimePlots() {
    function Demo_MarkersAndText (line 920) | void Demo_MarkersAndText() {
    function Demo_NaNValues (line 965) | void Demo_NaNValues() {
    function Demo_LogScale (line 990) | void Demo_LogScale() {
    function Demo_SymmetricLogScale (line 1011) | void Demo_SymmetricLogScale() {
    function Demo_TimeScale (line 1028) | void Demo_TimeScale() {
    function TransformForward_Sqrt (line 1077) | static inline double TransformForward_Sqrt(double v, void*) {
    function TransformInverse_Sqrt (line 1081) | static inline double TransformInverse_Sqrt(double v, void*) {
    function Demo_CustomScale (line 1085) | void Demo_CustomScale() {
    function Demo_MultipleAxes (line 1102) | void Demo_MultipleAxes() {
    function Demo_LinkedAxes (line 1160) | void Demo_LinkedAxes() {
    function Demo_AxisConstraints (line 1189) | void Demo_AxisConstraints() {
    function Demo_EqualAxes (line 1208) | void Demo_EqualAxes() {
    function Demo_AutoFittingData (line 1229) | void Demo_AutoFittingData() {
    function ImPlotPoint (line 1260) | ImPlotPoint SinewaveGetter(int i, void* data) {
    function Demo_SubplotsSizing (line 1265) | void Demo_SubplotsSizing() {
    function Demo_SubplotItemSharing (line 1295) | void Demo_SubplotItemSharing() {
    function Demo_SubplotAxisLinking (line 1338) | void Demo_SubplotAxisLinking() {
    function Demo_LegendOptions (line 1362) | void Demo_LegendOptions() {
    function Demo_DragPoints (line 1399) | void Demo_DragPoints() {
    function Demo_DragLines (line 1441) | void Demo_DragLines() {
    function Demo_DragRects (line 1471) | void Demo_DragRects() {
    function ImPlotPoint (line 1515) | ImPlotPoint FindCentroid(const ImVector<ImPlotPoint>& data, const ImPl...
    function Demo_Querying (line 1539) | void Demo_Querying() {
    function Demo_Annotations (line 1596) | void Demo_Annotations() {
    function Demo_Tags (line 1623) | void Demo_Tags() {
    function Demo_DragAndDrop (line 1645) | void Demo_DragAndDrop() {
    function Demo_Tables (line 1818) | void Demo_Tables() {
    function Demo_OffsetAndStride (line 1859) | void Demo_OffsetAndStride() {
    function Demo_CustomDataAndGetters (line 1894) | void Demo_CustomDataAndGetters() {
    function MetricFormatter (line 1931) | int MetricFormatter(double value, char* buff, int size, void* data) {
    function Demo_TickLabels (line 1946) | void Demo_TickLabels()  {
    function Demo_CustomStyles (line 1985) | void Demo_CustomStyles() {
    function Demo_CustomRendering (line 2008) | void Demo_CustomRendering() {
    function Demo_LegendPopups (line 2023) | void Demo_LegendPopups() {
    function Demo_ColormapWidgets (line 2076) | void Demo_ColormapWidgets() {
    function Demo_CustomPlottersAndTooltips (line 2102) | void Demo_CustomPlottersAndTooltips()  {
    function DemoHeader (line 2134) | void DemoHeader(const char* label, void(*demo)()) {
    function ShowDemoWindow (line 2141) | void ShowDemoWindow(bool* p_open) {
  type MyImPlot (line 2275) | namespace MyImPlot {
    type Vector2f (line 50) | struct Vector2f {
      method Vector2f (line 51) | Vector2f(float _x, float _y) { x = _x; y = _y; }
    type WaveData (line 56) | struct WaveData {
      method WaveData (line 58) | WaveData(double x, double amp, double freq, double offset) { X = x; ...
    function ImPlotPoint (line 2277) | ImPlotPoint SineWave(int idx, void* data) {
    function ImPlotPoint (line 2283) | ImPlotPoint SawWave(int idx, void* data) {
    function ImPlotPoint (line 2289) | ImPlotPoint Spiral(int idx, void*) {
    function Sparkline (line 2300) | void Sparkline(const char* id, const float* values, int count, float m...
    function StyleSeaborn (line 2313) | void StyleSeaborn() {
    function BinarySearch (line 2377) | int BinarySearch(const T* arr, int l, int r, T x) {
    function PlotCandlestick (line 2389) | void PlotCandlestick(const char* label_id, const double* xs, const dou...
  type MyImPlot (line 2374) | namespace MyImPlot {
    type Vector2f (line 50) | struct Vector2f {
      method Vector2f (line 51) | Vector2f(float _x, float _y) { x = _x; y = _y; }
    type WaveData (line 56) | struct WaveData {
      method WaveData (line 58) | WaveData(double x, double amp, double freq, double offset) { X = x; ...
    function ImPlotPoint (line 2277) | ImPlotPoint SineWave(int idx, void* data) {
    function ImPlotPoint (line 2283) | ImPlotPoint SawWave(int idx, void* data) {
    function ImPlotPoint (line 2289) | ImPlotPoint Spiral(int idx, void*) {
    function Sparkline (line 2300) | void Sparkline(const char* id, const float* values, int count, float m...
    function StyleSeaborn (line 2313) | void StyleSeaborn() {
    function BinarySearch (line 2377) | int BinarySearch(const T* arr, int l, int r, T x) {
    function PlotCandlestick (line 2389) | void PlotCandlestick(const char* label_id, const double* xs, const dou...

FILE: Source/External/imgui_tools/implot/implot_internal.h
  type ImPlotTick (line 80) | struct ImPlotTick
  type ImPlotAxis (line 81) | struct ImPlotAxis
  type ImPlotAxisColor (line 82) | struct ImPlotAxisColor
  type ImPlotItem (line 83) | struct ImPlotItem
  type ImPlotLegend (line 84) | struct ImPlotLegend
  type ImPlotPlot (line 85) | struct ImPlotPlot
  type ImPlotNextPlotData (line 86) | struct ImPlotNextPlotData
  type ImPlotTicker (line 87) | struct ImPlotTicker
  function ImLog10 (line 102) | static inline float  ImLog10(float x)  { return log10f(x); }
  function ImLog10 (line 103) | static inline double ImLog10(double x) { return log10(x);  }
  function ImSinh (line 104) | static inline float  ImSinh(float x)   { return sinhf(x);  }
  function ImSinh (line 105) | static inline double ImSinh(double x)  { return sinh(x);   }
  function ImAsinh (line 106) | static inline float  ImAsinh(float x)  { return asinhf(x); }
  function ImAsinh (line 107) | static inline double ImAsinh(double x) { return asinh(x);  }
  function ImHasFlag (line 110) | bool ImHasFlag(TSet set, TFlag flag) { return (set & flag) == flag; }
  function ImPosMod (line 121) | static inline int ImPosMod(int l, int r) { return (l % r + r) % r; }
  function ImNan (line 123) | static inline bool ImNan(double val) { return isnan(val); }
  function ImNanOrInf (line 125) | static inline bool ImNanOrInf(double val) { return !(val >= -DBL_MAX && ...
  function ImConstrainNan (line 127) | static inline double ImConstrainNan(double val) { return ImNan(val) ? 0 ...
  function ImConstrainInf (line 129) | static inline double ImConstrainInf(double val) { return val >= DBL_MAX ...
  function ImConstrainLog (line 131) | static inline double ImConstrainLog(double val) { return val <= 0 ? 0.00...
  function ImConstrainTime (line 133) | static inline double ImConstrainTime(double val) { return val < IMPLOT_M...
  function ImMinMaxArray (line 144) | void ImMinMaxArray(const T* values, int count, T* min_out, T* max_out) {
  function ImMean (line 162) | double ImMean(const T* values, int count) {
  function ImStdDev (line 171) | double ImStdDev(const T* values, int count) {
  function ImU32 (line 180) | static inline ImU32 ImMixU32(ImU32 a, ImU32 b, ImU32 s) {
  function ImU32 (line 202) | static inline ImU32 ImLerpU32(const ImU32* colors, int size, float t) {
  function ImU32 (line 215) | static inline ImU32 ImAlphaU32(ImU32 col, float alpha) {
  function ImOverlaps (line 221) | bool ImOverlaps(T min_a, T max_a, T min_b, T max_b) {
  type ImPlotTimeUnit (line 229) | typedef int ImPlotTimeUnit;
  type ImPlotDateFmt (line 230) | typedef int ImPlotDateFmt;
  type ImPlotTimeFmt (line 231) | typedef int ImPlotTimeFmt;
  type ImPlotTimeUnit_ (line 233) | enum ImPlotTimeUnit_ {
  type ImPlotDateFmt_ (line 245) | enum ImPlotDateFmt_ {              // default        [ ISO 8601     ]
  type ImPlotTimeFmt_ (line 254) | enum ImPlotTimeFmt_ {              // default        [ 24 Hour Clock ]
  type ImPlotDateTimeSpec (line 278) | struct ImPlotDateTimeSpec {
  type ImPlotTime (line 293) | struct ImPlotTime {
  function RollOver (line 298) | void RollOver() { S  = S + Us / 1000000;  Us = Us % 1000000; }
  function ImPlotTime (line 300) | static ImPlotTime FromDouble(double t) { return ImPlotTime((time_t)t, (i...
  function _AppendTable (line 319) | struct ImPlotColormapData {
  function RebuildTables (line 391) | void RebuildTables() {
  function IsQual (line 399) | inline bool           IsQual(ImPlotColormap cmap) const                 ...
  function ImPlotColormap (line 401) | inline ImPlotColormap GetIndex(const char* name) const                  ...
  function ImU32 (line 403) | inline const ImU32*   GetKeys(ImPlotColormap cmap) const                ...
  function GetKeyCount (line 404) | inline int            GetKeyCount(ImPlotColormap cmap) const            ...
  function ImU32 (line 405) | inline ImU32          GetKeyColor(ImPlotColormap cmap, int idx) const   ...
  function SetKeyColor (line 406) | inline void           SetKeyColor(ImPlotColormap cmap, int idx, ImU32 va...
  function ImU32 (line 408) | inline const ImU32*   GetTable(ImPlotColormap cmap) const               ...
  function GetTableSize (line 409) | inline int            GetTableSize(ImPlotColormap cmap) const           ...
  function ImU32 (line 410) | inline ImU32          GetTableColor(ImPlotColormap cmap, int idx) const ...
  function ImU32 (line 412) | inline ImU32 LerpTable(ImPlotColormap cmap, float t) const {
  type ImPlotPointError (line 421) | struct ImPlotPointError {
  type ImPlotAnnotation (line 429) | struct ImPlotAnnotation {
  function AppendV (line 444) | struct ImPlotAnnotationCollection {
  function Append (line 465) | void Append(const ImVec2& pos, const ImVec2& off, ImU32 bg, ImU32 fg, bo...
  function Reset (line 476) | void Reset() {
  type ImPlotTag (line 483) | struct ImPlotTag {
  function AppendV (line 491) | struct ImPlotTagCollection {
  function Append (line 513) | void Append(ImAxis axis, double value, ImU32 bg, ImU32 fg, const char* f...
  function Reset (line 524) | void Reset() {
  type ImPlotTick (line 532) | struct ImPlotTick
  function AddTick (line 554) | struct ImPlotTicker {
  function ImPlotTick (line 587) | inline ImPlotTick& AddTick(ImPlotTick tick) {
  function OverrideSizeLate (line 605) | void OverrideSizeLate(const ImVec2& size) {
  function Reset (line 610) | void Reset() {
  function Reset (line 697) | inline void Reset() {
  function SetRange (line 755) | inline void SetRange(double v1, double v2) {
  function SetRange (line 764) | inline void SetRange(const ImPlotRange& range) {
  function SetAspect (line 768) | inline void SetAspect(double unit_per_pix) {
  function Constrain (line 785) | inline void Constrain() {
  function UpdateTransformCache (line 807) | inline void UpdateTransformCache() {
  function PlotToPixels (line 819) | inline float PlotToPixels(double plt) const {
  function PixelsToPlot (line 829) | inline double PixelsToPlot(float pix) const {
  function ExtendFit (line 839) | inline void ExtendFit(double v) {
  function ExtendFitWith (line 846) | inline void ExtendFitWith(ImPlotAxis& alt, double v, double v_alt) {
  function ApplyFit (line 855) | inline void ApplyFit(float padding) {
  function IsPanLocked (line 890) | inline bool IsPanLocked(bool increasing) {
  function PushLinks (line 904) | void PushLinks() {
  function PullLinks (line 909) | void PullLinks() {
  type ImPlotAlignmentData (line 916) | struct ImPlotAlignmentData {
  function End (line 934) | void End()   { PadA = PadAMax; PadB = PadBMax;      }
  function Reset (line 935) | void Reset() { PadA = PadB = PadAMax = PadBMax = 0; }
  function Reset (line 982) | void Reset() { Indices.shrink(0); Labels.Buf.shrink(0); }
  function GetItemID (line 986) | struct ImPlotItemGroup
  function ImPlotItem (line 997) | ImPlotItem* GetItem(ImGuiID id)              { return ItemPool.GetByKey(...
  function ImPlotItem (line 998) | ImPlotItem* GetItem(const char* label_id)    { return GetItem(GetItemID(...
  function ImPlotItem (line 999) | ImPlotItem* GetOrAddItem(ImGuiID id)         { return ItemPool.GetOrAddB...
  function ImPlotItem (line 1000) | ImPlotItem* GetItemByIndex(int i)            { return ItemPool.GetByInde...
  function GetItemIndex (line 1001) | int         GetItemIndex(ImPlotItem* item)   { return ItemPool.GetIndex(...
  function ImPlotItem (line 1003) | ImPlotItem* GetLegendItem(int i)             { return ItemPool.GetByInde...
  function Reset (line 1005) | void        Reset()                          { ItemPool.Clear(); Legend....
  type ImPlotPlot (line 1009) | struct ImPlotPlot
  function ClearTextBuffer (line 1067) | inline void ClearTextBuffer() { TextBuffer.Buf.shrink(0); }
  function SetTitle (line 1069) | inline void SetTitle(const char* title) {
  function ImPlotAxis (line 1081) | inline       ImPlotAxis& XAxis(int i)       { return Axes[ImAxis_X1 + i]; }
  function ImPlotAxis (line 1082) | inline const ImPlotAxis& XAxis(int i) const { return Axes[ImAxis_X1 + i]; }
  function ImPlotAxis (line 1083) | inline       ImPlotAxis& YAxis(int i)       { return Axes[ImAxis_Y1 + i]; }
  function ImPlotAxis (line 1084) | inline const ImPlotAxis& YAxis(int i) const { return Axes[ImAxis_Y1 + i]; }
  function EnabledAxesX (line 1086) | inline int EnabledAxesX() {
  function EnabledAxesY (line 1093) | inline int EnabledAxesY() {
  function SetAxisLabel (line 1100) | inline void SetAxisLabel(ImPlotAxis& axis, const char* label) {
  function Reset (line 1150) | struct ImPlotNextPlotData
  function Reset (line 1172) | struct ImPlotNextItemData {
  type ImPlotContext (line 1201) | struct ImPlotContext {
  function namespace (line 1256) | namespace ImPlot {
  function AnyAxesInputLocked (line 1343) | static inline bool AnyAxesInputLocked(ImPlotAxis* axes, int count) {
  function AllAxesInputLocked (line 1352) | static inline bool AllAxesInputLocked(ImPlotAxis* axes, int count) {
  function AnyAxesHeld (line 1360) | static inline bool AnyAxesHeld(ImPlotAxis* axes, int count) {
  function AnyAxesHovered (line 1368) | static inline bool AnyAxesHovered(ImPlotAxis* axes, int count) {
  function FitThisFrame (line 1377) | static inline bool FitThisFrame() {
  function FitPointX (line 1382) | static inline void FitPointX(double x) {
  function FitPointY (line 1389) | static inline void FitPointY(double y) {
  function FitPoint (line 1396) | static inline void FitPoint(const ImPlotPoint& p) {
  function RangesOverlap (line 1405) | static inline bool RangesOverlap(const ImPlotRange& r1, const ImPlotRang...
  function ImPlotNextItemData (line 1438) | static inline const ImPlotNextItemData& GetItemData() { return GImPlot->...
  function IsColorAuto (line 1441) | static inline bool IsColorAuto(const ImVec4& col) { return col.w == -1; }
  function IsColorAuto (line 1443) | static inline bool IsColorAuto(ImPlotCol idx) { return IsColorAuto(GImPl...
  function ImVec4 (line 1448) | static inline ImVec4 GetStyleColorVec4(ImPlotCol idx) { return IsColorAu...
  function ImU32 (line 1449) | static inline ImU32  GetStyleColorU32(ImPlotCol idx)  { return ImGui::Co...
  function ImVec2 (line 1456) | static inline ImVec2 CalcTextSizeVertical(const char *text) {
  function ImU32 (line 1461) | static inline ImU32 CalcTextColor(const ImVec4& bg) { return (bg.x * 0.2...
  function ImU32 (line 1462) | static inline ImU32 CalcTextColor(ImU32 bg)         { return CalcTextCol...
  function ImU32 (line 1464) | static inline ImU32 CalcHoverColor(ImU32 col)       {  return ImMixU32(c...
  function ImVec2 (line 1467) | static inline ImVec2 ClampLabelPos(ImVec2 pos, const ImVec2& size, const...
  function OrderOfMagnitude (line 1492) | static inline int OrderOfMagnitude(double val) { return val == 0 ? 0 : (...
  function OrderToPrecision (line 1494) | static inline int OrderToPrecision(int order) { return order > 0 ? 0 : 1...
  function Precision (line 1496) | static inline int Precision(double val) { return OrderToPrecision(OrderO...
  function RoundTo (line 1498) | static inline double RoundTo(double val, int prec) { double p = pow(10,(...
  function ImVec2 (line 1501) | static inline ImVec2 Intersection(const ImVec2& a1, const ImVec2& a2, co...
  function CalculateBins (line 1519) | void CalculateBins(const T* values, int count, ImPlotBin meth, const ImP...
  function IsLeapYear (line 1543) | static inline bool IsLeapYear(int year) {
  function GetDaysInMonth (line 1547) | static inline int GetDaysInMonth(int year, int month) {
  type tm (line 1553) | struct tm
  type tm (line 1558) | struct tm
  function TransformForward_Log10 (line 1602) | static inline double TransformForward_Log10(double v, void*) {
  function TransformInverse_Log10 (line 1607) | static inline double TransformInverse_Log10(double v, void*) {
  function TransformForward_SymLog (line 1611) | static inline double TransformForward_SymLog(double v, void*) {
  function TransformInverse_SymLog (line 1615) | static inline double TransformInverse_SymLog(double v, void*) {
  function TransformForward_Logit (line 1619) | static inline double TransformForward_Logit(double v, void*) {
  function TransformInverse_Logit (line 1624) | static inline double TransformInverse_Logit(double v, void*) {
  function Formatter_Default (line 1632) | static inline int Formatter_Default(double value, char* buff, int size, ...
  function Formatter_Logit (line 1637) | static inline int Formatter_Logit(double value, char* buff, int size, vo...
  type Formatter_Time_Data (line 1646) | struct Formatter_Time_Data {
  function Formatter_Time (line 1653) | static inline int Formatter_Time(double, char* buff, int size, void* dat...

FILE: Source/External/imgui_tools/implot/implot_items.cpp
  function IMPLOT_INLINE (line 58) | static IMPLOT_INLINE float  ImInvSqrt(float x) { return _mm_cvtss_f32(_m...
  function IMPLOT_INLINE (line 60) | static IMPLOT_INLINE float  ImInvSqrt(float x) { return 1.0f / sqrtf(x); }
  type ImPlot (line 107) | namespace ImPlot {
    type MaxIdx (line 115) | struct MaxIdx { static const unsigned int Value; }
    function IMPLOT_INLINE (line 119) | IMPLOT_INLINE void GetLineRenderProps(const ImDrawList& draw_list, flo...
    function IMPLOT_INLINE (line 133) | IMPLOT_INLINE void PrimLine(ImDrawList& draw_list, const ImVec2& P1, c...
    function IMPLOT_INLINE (line 166) | IMPLOT_INLINE void PrimRectFill(ImDrawList& draw_list, const ImVec2& P...
    function IMPLOT_INLINE (line 192) | IMPLOT_INLINE void PrimRectLine(ImDrawList& draw_list, const ImVec2& P...
    function ImPlotItem (line 284) | ImPlotItem* RegisterOrGetItem(const char* label_id, ImPlotItemFlags fl...
    function ImPlotItem (line 307) | ImPlotItem* GetItem(const char* label_id) {
    function IsItemHidden (line 312) | bool IsItemHidden(const char* label_id) {
    function ImPlotItem (line 317) | ImPlotItem* GetCurrentItem() {
    function SetNextLineStyle (line 322) | void SetNextLineStyle(const ImVec4& col, float weight) {
    function SetNextFillStyle (line 328) | void SetNextFillStyle(const ImVec4& col, float alpha) {
    function SetNextMarkerStyle (line 334) | void SetNextMarkerStyle(ImPlotMarker marker, float size, const ImVec4&...
    function SetNextErrorBarStyle (line 343) | void SetNextErrorBarStyle(const ImVec4& col, float size, float weight) {
    function ImVec4 (line 350) | ImVec4 GetLastItemColor() {
    function BustItemCache (line 357) | void BustItemCache() {
    function BustColorCache (line 369) | void BustColorCache(const char* plot_title_id) {
    function BeginItem (line 395) | bool BeginItem(const char* label_id, ImPlotItemFlags flags, ImPlotCol ...
    function EndItem (line 476) | void EndItem() {
    function IMPLOT_INLINE (line 492) | IMPLOT_INLINE T IndexData(const T* data, int idx, int count, int offse...
    type IndexerIdx (line 504) | struct IndexerIdx {
      method IndexerIdx (line 505) | IndexerIdx(const T* data, int count, int offset = 0, int stride = si...
      method IMPLOT_INLINE (line 511) | IMPLOT_INLINE double operator()(I idx) const {
    type IndexerAdd (line 521) | struct IndexerAdd {
      method IndexerAdd (line 522) | IndexerAdd(const _Indexer1& indexer1, const _Indexer2& indexer2, dou...
      method IMPLOT_INLINE (line 529) | IMPLOT_INLINE double operator()(I idx) const {
    type IndexerLin (line 539) | struct IndexerLin {
      method IndexerLin (line 540) | IndexerLin(double m, double b) : M(m), B(b) { }
      method IMPLOT_INLINE (line 541) | IMPLOT_INLINE double operator()(I idx) const {
    type IndexerConst (line 548) | struct IndexerConst {
      method IndexerConst (line 549) | IndexerConst(double ref) : Ref(ref) { }
      method IMPLOT_INLINE (line 550) | IMPLOT_INLINE double operator()(I) const { return Ref; }
    type GetterXY (line 559) | struct GetterXY {
      method GetterXY (line 560) | GetterXY(_IndexerX x, _IndexerY y, int count) : IndxerX(x), IndxerY(...
      method IMPLOT_INLINE (line 561) | IMPLOT_INLINE ImPlotPoint operator()(I idx) const {
    type GetterFuncPtr (line 570) | struct GetterFuncPtr {
      method GetterFuncPtr (line 571) | GetterFuncPtr(ImPlotGetter getter, void* data, int count) :
      method IMPLOT_INLINE (line 576) | IMPLOT_INLINE ImPlotPoint operator()(I idx) const {
    type GetterOverrideX (line 585) | struct GetterOverrideX {
      method GetterOverrideX (line 586) | GetterOverrideX(_Getter getter, double x) : Getter(getter), X(x), Co...
      method IMPLOT_INLINE (line 587) | IMPLOT_INLINE ImPlotPoint operator()(I idx) const {
    type GetterOverrideY (line 598) | struct GetterOverrideY {
      method GetterOverrideY (line 599) | GetterOverrideY(_Getter getter, double y) : Getter(getter), Y(y), Co...
      method IMPLOT_INLINE (line 600) | IMPLOT_INLINE ImPlotPoint operator()(I idx) const {
    type GetterLoop (line 611) | struct GetterLoop {
      method GetterLoop (line 612) | GetterLoop(_Getter getter) : Getter(getter), Count(getter.Count + 1)...
      method IMPLOT_INLINE (line 613) | IMPLOT_INLINE ImPlotPoint operator()(I idx) const {
    type GetterError (line 622) | struct GetterError {
      method GetterError (line 623) | GetterError(const T* xs, const T* ys, const T* neg, const T* pos, in...
      method IMPLOT_INLINE (line 632) | IMPLOT_INLINE ImPlotPointError operator()(I idx) const {
    type Fitter1 (line 652) | struct Fitter1 {
      method Fitter1 (line 653) | Fitter1(const _Getter1& getter) : Getter(getter) { }
      method Fit (line 654) | void Fit(ImPlotAxis& x_axis, ImPlotAxis& y_axis) const {
    type FitterX (line 665) | struct FitterX {
      method FitterX (line 666) | FitterX(const _Getter1& getter) : Getter(getter) { }
      method Fit (line 667) | void Fit(ImPlotAxis& x_axis, ImPlotAxis&) const {
    type FitterY (line 677) | struct FitterY {
      method FitterY (line 678) | FitterY(const _Getter1& getter) : Getter(getter) { }
      method Fit (line 679) | void Fit(ImPlotAxis&, ImPlotAxis& y_axis) const {
    type Fitter2 (line 689) | struct Fitter2 {
      method Fitter2 (line 690) | Fitter2(const _Getter1& getter1, const _Getter2& getter2) : Getter1(...
      method Fit (line 691) | void Fit(ImPlotAxis& x_axis, ImPlotAxis& y_axis) const {
    type FitterBarV (line 708) | struct FitterBarV {
      method FitterBarV (line 709) | FitterBarV(const _Getter1& getter1, const _Getter2& getter2, double ...
      method Fit (line 714) | void Fit(ImPlotAxis& x_axis, ImPlotAxis& y_axis) const {
    type FitterBarH (line 731) | struct FitterBarH {
      method FitterBarH (line 732) | FitterBarH(const _Getter1& getter1, const _Getter2& getter2, double ...
      method Fit (line 737) | void Fit(ImPlotAxis& x_axis, ImPlotAxis& y_axis) const {
    type FitterRect (line 753) | struct FitterRect {
      method FitterRect (line 754) | FitterRect(const ImPlotPoint& pmin, const ImPlotPoint& pmax) :
      method FitterRect (line 758) | FitterRect(const ImPlotRect& rect) :
      method Fit (line 761) | void Fit(ImPlotAxis& x_axis, ImPlotAxis& y_axis) const {
    type Transformer1 (line 775) | struct Transformer1 {
      method Transformer1 (line 776) | Transformer1(double pixMin, double pltMin, double pltMax, double m, ...
      method IMPLOT_INLINE (line 787) | IMPLOT_INLINE float operator()(T p) const {
    type Transformer2 (line 801) | struct Transformer2 {
      method Transformer2 (line 802) | Transformer2(const ImPlotAxis& x_axis, const ImPlotAxis& y_axis) :
      method Transformer2 (line 821) | Transformer2(const ImPlotPlot& plot) :
      method Transformer2 (line 825) | Transformer2() :
      method IMPLOT_INLINE (line 829) | IMPLOT_INLINE ImVec2 operator()(const P& plt) const {
      method IMPLOT_INLINE (line 836) | IMPLOT_INLINE ImVec2 operator()(T x, T y) const {
    type RendererBase (line 851) | struct RendererBase {
      method RendererBase (line 852) | RendererBase(int prims, int idx_consumed, int vtx_consumed) :
    type RendererLineStrip (line 864) | struct RendererLineStrip : RendererBase {
      method RendererLineStrip (line 865) | RendererLineStrip(const _Getter& getter, ImU32 col, float weight) :
      method Init (line 873) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 876) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererLineStripSkip (line 895) | struct RendererLineStripSkip : RendererBase {
      method RendererLineStripSkip (line 896) | RendererLineStripSkip(const _Getter& getter, ImU32 col, float weight) :
      method Init (line 904) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 907) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererLineSegments1 (line 928) | struct RendererLineSegments1 : RendererBase {
      method RendererLineSegments1 (line 929) | RendererLineSegments1(const _Getter& getter, ImU32 col, float weight) :
      method Init (line 935) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 938) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererLineSegments2 (line 954) | struct RendererLineSegments2 : RendererBase {
      method RendererLineSegments2 (line 955) | RendererLineSegments2(const _Getter1& getter1, const _Getter2& gette...
      method Init (line 962) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 965) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererBarsFillV (line 982) | struct RendererBarsFillV : RendererBase {
      method RendererBarsFillV (line 983) | RendererBarsFillV(const _Getter1& getter1, const _Getter2& getter2, ...
      method Init (line 990) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 993) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererBarsFillH (line 1020) | struct RendererBarsFillH : RendererBase {
      method RendererBarsFillH (line 1021) | RendererBarsFillH(const _Getter1& getter1, const _Getter2& getter2, ...
      method Init (line 1028) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 1031) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererBarsLineV (line 1058) | struct RendererBarsLineV : RendererBase {
      method RendererBarsLineV (line 1059) | RendererBarsLineV(const _Getter1& getter1, const _Getter2& getter2, ...
      method Init (line 1067) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 1070) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererBarsLineH (line 1098) | struct RendererBarsLineH : RendererBase {
      method RendererBarsLineH (line 1099) | RendererBarsLineH(const _Getter1& getter1, const _Getter2& getter2, ...
      method Init (line 1107) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 1110) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererStairsPre (line 1139) | struct RendererStairsPre : RendererBase {
      method RendererStairsPre (line 1140) | RendererStairsPre(const _Getter& getter, ImU32 col, float weight) :
      method Init (line 1148) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 1151) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererStairsPost (line 1170) | struct RendererStairsPost : RendererBase {
      method RendererStairsPost (line 1171) | RendererStairsPost(const _Getter& getter, ImU32 col, float weight) :
      method Init (line 1179) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 1182) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererStairsPreShaded (line 1201) | struct RendererStairsPreShaded : RendererBase {
      method RendererStairsPreShaded (line 1202) | RendererStairsPreShaded(const _Getter& getter, ImU32 col) :
      method Init (line 1210) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 1213) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererStairsPostShaded (line 1233) | struct RendererStairsPostShaded : RendererBase {
      method RendererStairsPostShaded (line 1234) | RendererStairsPostShaded(const _Getter& getter, ImU32 col) :
      method Init (line 1242) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 1245) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererShaded (line 1267) | struct RendererShaded : RendererBase {
      method RendererShaded (line 1268) | RendererShaded(const _Getter1& getter1, const _Getter2& getter2, ImU...
      method Init (line 1277) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 1280) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RectC (line 1327) | struct RectC {
    type RendererRectC (line 1334) | struct RendererRectC : RendererBase {
      method RendererRectC (line 1335) | RendererRectC(const _Getter& getter) :
      method Init (line 1339) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 1342) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    function RenderPrimitivesEx (line 1361) | void RenderPrimitivesEx(const _Renderer& renderer, ImDrawList& draw_li...
    function RenderPrimitives1 (line 1400) | void RenderPrimitives1(const _Getter& getter, Args... args) {
    function RenderPrimitives2 (line 1407) | void RenderPrimitives2(const _Getter1& getter1, const _Getter2& getter...
    type RendererMarkersFill (line 1418) | struct RendererMarkersFill : RendererBase {
      method RendererMarkersFill (line 1419) | RendererMarkersFill(const _Getter& getter, const ImVec2* marker, int...
      method Init (line 1427) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 1430) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    type RendererMarkersLine (line 1461) | struct RendererMarkersLine : RendererBase {
      method RendererMarkersLine (line 1462) | RendererMarkersLine(const _Getter& getter, const ImVec2* marker, int...
      method Init (line 1471) | void Init(ImDrawList& draw_list) const {
      method IMPLOT_INLINE (line 1474) | IMPLOT_INLINE bool Render(ImDrawList& draw_list, const ImRect& cull_...
    function RenderMarkers (line 1537) | void RenderMarkers(const _Getter& getter, ImPlotMarker marker, float s...
    function PlotLineEx (line 1570) | void PlotLineEx(const char* label_id, const _Getter& getter, ImPlotLin...
    function PlotLine (line 1613) | void PlotLine(const char* label_id, const T* values, int count, double...
    function PlotLine (line 1619) | void PlotLine(const char* label_id, const T* xs, const T* ys, int coun...
    function PlotLineG (line 1631) | void PlotLineG(const char* label_id, ImPlotGetter getter_func, void* d...
    function PlotScatterEx (line 1641) | void PlotScatterEx(const char* label_id, const Getter& getter, ImPlotS...
    function PlotScatter (line 1659) | void PlotScatter(const char* label_id, const T* values, int count, dou...
    function PlotScatter (line 1665) | void PlotScatter(const char* label_id, const T* xs, const T* ys, int c...
    function PlotScatterG (line 1677) | void PlotScatterG(const char* label_id, ImPlotGetter getter_func, void...
    function PlotStairsEx (line 1687) | void PlotStairsEx(const char* label_id, const Getter& getter, ImPlotSt...
    function PlotStairs (line 1719) | void PlotStairs(const char* label_id, const T* values, int count, doub...
    function PlotStairs (line 1725) | void PlotStairs(const char* label_id, const T* xs, const T* ys, int co...
    function PlotStairsG (line 1737) | void PlotStairsG(const char* label_id, ImPlotGetter getter_func, void*...
    function PlotShadedEx (line 1747) | void PlotShadedEx(const char* label_id, const Getter1& getter1, const ...
    function PlotShaded (line 1759) | void PlotShaded(const char* label_id, const T* values, int count, doub...
    function PlotShaded (line 1770) | void PlotShaded(const char* label_id, const T* xs, const T* ys, int co...
    function PlotShaded (line 1782) | void PlotShaded(const char* label_id, const T* xs, const T* ys1, const...
    function PlotShadedG (line 1796) | void PlotShadedG(const char* label_id, ImPlotGetter getter_func1, void...
    function PlotBarsVEx (line 1807) | void PlotBarsVEx(const char* label_id, const Getter1& getter1, const G...
    function PlotBarsHEx (line 1827) | void PlotBarsHEx(const char* label_id, const Getter1& getter1, const G...
    function PlotBars (line 1847) | void PlotBars(const char* label_id, const T* values, int count, double...
    function PlotBars (line 1861) | void PlotBars(const char* label_id, const T* xs, const T* ys, int coun...
    function PlotBarsG (line 1880) | void PlotBarsG(const char* label_id, ImPlotGetter getter_func, void* d...
    function PlotBarGroups (line 1898) | void PlotBarGroups(const char* const label_ids[], const T* values, int...
    function PlotErrorBarsVEx (line 1983) | void PlotErrorBarsVEx(const char* label_id, const _GetterPos& getter_p...
    function PlotErrorBarsHEx (line 2004) | void PlotErrorBarsHEx(const char* label_id, const _GetterPos& getter_p...
    function PlotErrorBars (line 2025) | void PlotErrorBars(const char* label_id, const T* xs, const T* ys, con...
    function PlotErrorBars (line 2030) | void PlotErrorBars(const char* label_id, const T* xs, const T* ys, con...
    function PlotStemsEx (line 2063) | void PlotStemsEx(const char* label_id, const _GetterM& get_mark, const...
    function PlotStems (line 2084) | void PlotStems(const char* label_id, const T* values, int count, doubl...
    function PlotStems (line 2098) | void PlotStems(const char* label_id, const T* xs, const T* ys, int cou...
    function PlotInfLines (line 2123) | void PlotInfLines(const char* label_id, const T* values, int count, Im...
    function IMPLOT_INLINE (line 2156) | IMPLOT_INLINE void RenderPieSlice(ImDrawList& draw_list, const ImPlotP...
    function PlotPieChart (line 2175) | void PlotPieChart(const char* const label_ids[], const T* values, int ...
    type GetterHeatmapRowMaj (line 2234) | struct GetterHeatmapRowMaj {
      method GetterHeatmapRowMaj (line 2235) | GetterHeatmapRowMaj(const T* values, int rows, int cols, double scal...
      method IMPLOT_INLINE (line 2249) | IMPLOT_INLINE RectC operator()(I idx) const {
    type GetterHeatmapColMaj (line 2269) | struct GetterHeatmapColMaj {
      method GetterHeatmapColMaj (line 2270) | GetterHeatmapColMaj(const T* values, int rows, int cols, double scal...
      method IMPLOT_INLINE (line 2284) | IMPLOT_INLINE RectC operator()(I idx) const {
    function RenderHeatmap (line 2304) | void RenderHeatmap(ImDrawList& draw_list, const T* values, int rows, i...
    function PlotHeatmap (line 2376) | void PlotHeatmap(const char* label_id, const T* values, int rows, int ...
    function PlotHistogram (line 2393) | double PlotHistogram(const char* label_id, const T* values, int count,...
    function PlotHistogram2D (line 2479) | double PlotHistogram2D(const char* label_id, const T* xs, const T* ys,...
    function PlotDigitalEx (line 2559) | void PlotDigitalEx(const char* label_id, Getter getter, ImPlotDigitalF...
    function PlotDigital (line 2619) | void PlotDigital(const char* label_id, const T* xs, const T* ys, int c...
    function PlotDigitalG (line 2628) | void PlotDigitalG(const char* label_id, ImPlotGetter getter_func, void...
    function PlotImage (line 2637) | void PlotImage(const char* label_id, ImTextureID user_texture_id, cons...
    function PlotText (line 2655) | void PlotText(const char* text, double x, double y, const ImVec2& pixe...
    function PlotDummy (line 2687) | void PlotDummy(const char* label_id, ImPlotDummyFlags flags) {

FILE: Source/External/mustache/mustache.hpp
  type kainjow (line 46) | namespace kainjow {
    type mustache (line 47) | namespace mustache {
      function string_type (line 50) | string_type trim(const string_type& s) {
      function string_type (line 63) | string_type html_escape(const string_type& s) {
      function split (line 92) | std::vector<string_type> split(const string_type& s, typename string...
      class basic_renderer (line 103) | class basic_renderer {
        method string_type (line 108) | string_type operator()(const string_type& text) const {
        method string_type (line 112) | string_type operator()(const string_type& text, bool escaped) const {
        method basic_renderer (line 117) | basic_renderer(const type1& t1, const type2& t2)
      class basic_lambda_t (line 130) | class basic_lambda_t {
        method basic_lambda_t (line 135) | basic_lambda_t(const type1& t) : type1_(new type1(t)) {}
        method basic_lambda_t (line 136) | basic_lambda_t(const type2& t) : type2_(new type2(t)) {}
        method is_type1 (line 138) | bool is_type1() const { return static_cast<bool>(type1_); }
        method is_type2 (line 139) | bool is_type2() const { return static_cast<bool>(type2_); }
        method type1 (line 141) | const type1& type1_value() const { return *type1_; }
        method type2 (line 142) | const type2& type2_value() const { return *type2_; }
        method basic_lambda_t (line 145) | basic_lambda_t(const basic_lambda_t& l) {
        method string_type (line 153) | string_type operator()(const string_type& text) const {
        method string_type (line 157) | string_type operator()(const string_type& text, const basic_render...
      class basic_data (line 167) | class basic_data
        type type (line 182) | enum class type {
        method basic_data (line 195) | basic_data() : basic_data(type::object) {
        method basic_data (line 197) | basic_data(const string_type& string) : type_{type::string} {
        method basic_data (line 200) | basic_data(const typename string_type::value_type* string) : type_...
        method basic_data (line 203) | basic_data(const basic_object<string_type>& obj) : type_{type::obj...
        method basic_data (line 206) | basic_data(const basic_list<string_type>& l) : type_{type::list} {
        method basic_data (line 209) | basic_data(type t) : type_{t} {
        method basic_data (line 224) | basic_data(const string_type& name, const basic_data& var) : basic...
        method basic_data (line 227) | basic_data(const basic_partial<string_type>& p) : type_{type::part...
        method basic_data (line 230) | basic_data(const basic_lambda<string_type>& l) : type_{type::lambd...
        method basic_data (line 233) | basic_data(const basic_lambda2<string_type>& l) : type_{type::lamb...
        method basic_data (line 236) | basic_data(const basic_lambda_t<string_type>& l) {
        method basic_data (line 244) | basic_data(bool b) : type_{b ? type::bool_true : type::bool_false} {
        method basic_data (line 248) | basic_data(const basic_data& dat) : type_(dat.type_) {
        method basic_data (line 263) | basic_data(basic_data&& dat) : type_{dat.type_} {
        method basic_data (line 277) | basic_data& operator= (basic_data&& dat) {
        method is_object (line 302) | bool is_object() const {
        method is_string (line 305) | bool is_string() const {
        method is_list (line 308) | bool is_list() const {
        method is_bool (line 311) | bool is_bool() const {
        method is_true (line 314) | bool is_true() const {
        method is_false (line 317) | bool is_false() const {
        method is_partial (line 320) | bool is_partial() const {
        method is_lambda (line 323) | bool is_lambda() const {
        method is_lambda2 (line 326) | bool is_lambda2() const {
        method is_invalid (line 329) | bool is_invalid() const {
        method is_empty_object (line 334) | bool is_empty_object() const {
        method is_non_empty_object (line 337) | bool is_non_empty_object() const {
        method set (line 340) | void set(const string_type& name, const basic_data& var) {
        method basic_data (line 349) | const basic_data* get(const string_type& name) const {
        method push_back (line 361) | void push_back(const basic_data& var) {
        method is_empty_list (line 369) | bool is_empty_list() const {
        method is_non_empty_list (line 372) | bool is_non_empty_list() const {
        method basic_data (line 375) | basic_data& operator<< (const basic_data& data) {
        method string_type (line 381) | const string_type& string_value() const {
        method basic_data (line 385) | basic_data& operator[] (const string_type& key) {
      class basic_data (line 180) | class basic_data {
        type type (line 182) | enum class type {
        method basic_data (line 195) | basic_data() : basic_data(type::object) {
        method basic_data (line 197) | basic_data(const string_type& string) : type_{type::string} {
        method basic_data (line 200) | basic_data(const typename string_type::value_type* string) : type_...
        method basic_data (line 203) | basic_data(const basic_object<string_type>& obj) : type_{type::obj...
        method basic_data (line 206) | basic_data(const basic_list<string_type>& l) : type_{type::list} {
        method basic_data (line 209) | basic_data(type t) : type_{t} {
        method basic_data (line 224) | basic_data(const string_type& name, const basic_data& var) : basic...
        method basic_data (line 227) | basic_data(const basic_partial<string_type>& p) : type_{type::part...
        method basic_data (line 230) | basic_data(const basic_lambda<string_type>& l) : type_{type::lambd...
        method basic_data (line 233) | basic_data(const basic_lambda2<string_type>& l) : type_{type::lamb...
        method basic_data (line 236) | basic_data(const basic_lambda_t<string_type>& l) {
        method basic_data (line 244) | basic_data(bool b) : type_{b ? type::bool_true : type::bool_false} {
        method basic_data (line 248) | basic_data(const basic_data& dat) : type_(dat.type_) {
        method basic_data (line 263) | basic_data(basic_data&& dat) : type_{dat.type_} {
        method basic_data (line 277) | basic_data& operator= (basic_data&& dat) {
        method is_object (line 302) | bool is_object() const {
        method is_string (line 305) | bool is_string() const {
        method is_list (line 308) | bool is_list() const {
        method is_bool (line 311) | bool is_bool() const {
        method is_true (line 314) | bool is_true() const {
        method is_false (line 317) | bool is_false() const {
        method is_partial (line 320) | bool is_partial() const {
        method is_lambda (line 323) | bool is_lambda() const {
        method is_lambda2 (line 326) | bool is_lambda2() const {
        method is_invalid (line 329) | bool is_invalid() const {
        method is_empty_object (line 334) | bool is_empty_object() const {
        method is_non_empty_object (line 337) | bool is_non_empty_object() const {
        method set (line 340) | void set(const string_type& name, const basic_data& var) {
        method basic_data (line 349) | const basic_data* get(const string_type& name) const {
        method push_back (line 361) | void push_back(const basic_data& var) {
        method is_empty_list (line 369) | bool is_empty_list() const {
        method is_non_empty_list (line 372) | bool is_non_empty_list() const {
        method basic_data (line 375) | basic_data& operator<< (const basic_data& data) {
        method string_type (line 381) | const string_type& string_value() const {
        method basic_data (line 385) | basic_data& operator[] (const string_type& key) {
      class delimiter_set (line 411) | class delimiter_set {
        method delimiter_set (line 415) | delimiter_set()
        method is_default (line 419) | bool is_default() const { return begin == default_begin && end == ...
      class basic_context (line 430) | class basic_context {
      class context (line 441) | class context : public basic_context<string_type> {
        method context (line 443) | context(const basic_data<string_type>* data) {
        method context (line 447) | context() {
        method push (line 450) | virtual void push(const basic_data<string_type>* data) override {
        method pop (line 454) | virtual void pop() override {
        method context (line 500) | context(const context&) = delete;
        method context (line 501) | context& operator= (const context&) = delete;
      class line_buffer_state (line 508) | class line_buffer_state {
        method is_empty_or_contains_only_whitespace (line 513) | bool is_empty_or_contains_only_whitespace() const {
        method clear (line 523) | void clear() {
      class context_internal (line 530) | class context_internal {
        method context_internal (line 536) | context_internal(basic_context<string_type>& a_ctx)
      type tag_type (line 542) | enum class tag_type {
      class mstch_tag (line 555) | class mstch_tag /* gcc doesn't allow "tag tag;" so rename the class ...
        method is_section_begin (line 561) | bool is_section_begin() const {
        method is_section_end (line 564) | bool is_section_end() const {
      class context_pusher (line 570) | class context_pusher {
        method context_pusher (line 572) | context_pusher(context_internal<string_type>& ctx, const basic_dat...
        method context_pusher (line 580) | context_pusher(const context_pusher&) = delete;
        method context_pusher (line 581) | context_pusher& operator= (const context_pusher&) = delete;
      class component (line 587) | class component {
        type walk_control (line 597) | enum class walk_control {
        method component (line 604) | component() {}
        method component (line 605) | component(const string_type& t, string_size_type p) : text(t), pos...
        method is_text (line 607) | bool is_text() const {
        method is_newline (line 611) | bool is_newline() const {
        method is_non_newline_whitespace (line 616) | bool is_non_newline_whitespace() const {
        method walk_children (line 620) | void walk_children(const walk_callback& callback) {
        method walk_control (line 629) | walk_control walk(const walk_callback& callback) {
      class parser (line 647) | class parser {
        method parser (line 649) | parser(const string_type& input, context_internal<string_type>& ct...
        method parse (line 655) | void parse(const string_type& input, context_internal<string_type>...
        method is_set_delimiter_valid (line 804) | bool is_set_delimiter_valid(const string_type& delimiter) const {
        method parse_set_delimiter_tag (line 814) | bool parse_set_delimiter_tag(const string_type& contents, delimite...
        method parse_tag_contents (line 839) | void parse_tag_contents(bool is_unescaped_var, const string_type& ...
      class basic_mustache (line 882) | class basic_mustache {
        method basic_mustache (line 886) | basic_mustache(const string_type& input)
        method is_valid (line 893) | bool is_valid() const {
        method string_type (line 897) | const string_type& error_message() const {
        method set_custom_escape (line 902) | void set_custom_escape(const escape_handler& escape_fn) {
        method stream_type (line 907) | stream_type& render(const basic_data<string_type>& data, stream_ty...
        method string_type (line 914) | string_type render(const basic_data<string_type>& data) {
        method stream_type (line 920) | stream_type& render(basic_context<string_type>& ctx, stream_type& ...
        method string_type (line 928) | string_type render(basic_context<string_type>& ctx) {
        method render (line 934) | void render(const basic_data<string_type>& data, const render_hand...
        method basic_mustache (line 943) | basic_mustache()
        method basic_mustache (line 952) | basic_mustache(const string_type& input, context_internal<string_t...
        method string_type (line 957) | string_type render(context_internal<string_type>& ctx) {
        method render (line 965) | void render(const render_handler& handler, context_internal<string...
        method render_current_line (line 975) | void render_current_line(const render_handler& handler, context_in...
        method render_result (line 992) | void render_result(context_internal<string_type>& ctx, const strin...
        method render_component (line 996) | typename component<string_type>::walk_control render_component(con...
        type render_lambda_escape (line 1061) | enum class render_lambda_escape {
        method render_lambda (line 1067) | bool render_lambda(const render_handler& handler, const basic_data...
        method render_variable (line 1116) | bool render_variable(const render_handler& handler, const basic_da...
        method render_section (line 1133) | void render_section(const render_handler& handler, context_interna...

FILE: Source/External/slang/prelude/slang-cpp-prelude.h
  type SlangUUID (line 260) | struct SlangUUID
  type SlangResult (line 268) | typedef int32_t SlangResult;
  type ISlangUnknown (line 270) | struct ISlangUnknown

FILE: Source/External/slang/prelude/slang-cpp-scalar-intrinsics.h
  function namespace (line 14) | namespace SLANG_PRELUDE_NAMESPACE {

FILE: Source/External/slang/prelude/slang-cpp-types.h
  function namespace (line 50) | namespace SLANG_PRELUDE_NAMESPACE {
  type ITexture (line 479) | struct ITexture
  function GetDimensions (line 490) | void GetDimensions(uint32_t* outWidth) { *outWidth = texture->GetDimensi...
  function GetDimensions (line 491) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outN...
  function GetDimensions (line 498) | void GetDimensions(float* outWidth) { *outWidth = texture->GetDimensions...
  function GetDimensions (line 499) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outNumberO...
  function T (line 506) | T Load(const int2& loc) const { T out; texture->Load(&loc.x, &out, sizeo...
  function T (line 507) | T Sample(SamplerState samplerState, float loc) const { T out; texture->S...
  function T (line 508) | T SampleLevel(SamplerState samplerState, float loc, float level) { T out...
  function GetDimensions (line 516) | void GetDimensions(uint32_t* outWidth, uint32_t* outHeight)
  function GetDimensions (line 522) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outH...
  function GetDimensions (line 529) | void GetDimensions(float* outWidth, float* outHeight)
  function GetDimensions (line 535) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outHeight,...
  function T (line 543) | T Load(const int3& loc) const { T out; texture->Load(&loc.x, &out, sizeo...
  function T (line 544) | T Sample(SamplerState samplerState, const float2& loc) const { T out; te...
  function T (line 545) | T SampleLevel(SamplerState samplerState, const float2& loc, float level)...
  function GetDimensions (line 553) | void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* ou...
  function GetDimensions (line 560) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outH...
  function GetDimensions (line 568) | void GetDimensions(float* outWidth, float* outHeight, float* outDepth)
  function GetDimensions (line 575) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outHeight,...
  function T (line 584) | T Load(const int4& loc) const { T out; texture->Load(&loc.x, &out, sizeo...
  function T (line 585) | T Sample(SamplerState samplerState, const float3& loc) const { T out; te...
  function T (line 586) | T SampleLevel(SamplerState samplerState, const float3& loc, float level)...
  function GetDimensions (line 594) | void GetDimensions(uint32_t* outWidth, uint32_t* outHeight)
  function GetDimensions (line 600) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outH...
  function GetDimensions (line 607) | void GetDimensions(float* outWidth, float* outHeight)
  function GetDimensions (line 613) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outHeight,...
  function T (line 621) | T Sample(SamplerState samplerState, const float3& loc) const { T out; te...
  function T (line 622) | T SampleLevel(SamplerState samplerState, const float3& loc, float level)...
  function GetDimensions (line 630) | void GetDimensions(uint32_t* outWidth, uint32_t* outElements) { auto dim...
  function GetDimensions (line 631) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outE...
  function GetDimensions (line 638) | void GetDimensions(float* outWidth, float* outElements) { auto dims = te...
  function GetDimensions (line 639) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outElement...
  function T (line 647) | T Load(const int3& loc) const { T out; texture->Load(&loc.x, &out, sizeo...
  function T (line 648) | T Sample(SamplerState samplerState, const float2& loc) const { T out; te...
  function T (line 649) | T SampleLevel(SamplerState samplerState, const float2& loc, float level)...
  function GetDimensions (line 657) | void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* ou...
  function GetDimensions (line 664) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outH...
  function GetDimensions (line 673) | void GetDimensions(uint32_t* outWidth, float* outHeight, float* outEleme...
  function GetDimensions (line 680) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outHeight,...
  function T (line 689) | T Load(const int4& loc) const { T out; texture->Load(&loc.x, &out, sizeo...
  function T (line 690) | T Sample(SamplerState samplerState, const float3& loc) const { T out; te...
  function T (line 691) | T SampleLevel(SamplerState samplerState, const float3& loc, float level)...
  function GetDimensions (line 699) | void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* ou...
  function GetDimensions (line 706) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outH...
  function GetDimensions (line 715) | void GetDimensions(uint32_t* outWidth, float* outHeight, float* outEleme...
  function GetDimensions (line 722) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outHeight,...
  function T (line 731) | T Sample(SamplerState samplerState, const float4& loc) const { T out; te...
  function T (line 732) | T SampleLevel(SamplerState samplerState, const float4& loc, float level)...
  function ITexture (line 739) | struct IRWTexture : ITexture
  function GetDimensions (line 748) | void GetDimensions(uint32_t* outWidth) { *outWidth = texture->GetDimensi...
  function GetDimensions (line 749) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outN...
  function GetDimensions (line 751) | void GetDimensions(float* outWidth) { *outWidth = texture->GetDimensions...
  function GetDimensions (line 752) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outNumberO...
  function T (line 754) | T Load(int32_t loc) const { T out; texture->Load(&loc, &out, sizeof(out)...
  function GetDimensions (line 762) | void GetDimensions(uint32_t* outWidth, uint32_t* outHeight)
  function GetDimensions (line 768) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outH...
  function GetDimensions (line 775) | void GetDimensions(float* outWidth, float* outHeight)
  function GetDimensions (line 781) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outHeight,...
  function T (line 789) | T Load(const int2& loc) const { T out; texture->Load(&loc.x, &out, sizeo...
  function GetDimensions (line 797) | void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* ou...
  function GetDimensions (line 804) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outH...
  function GetDimensions (line 812) | void GetDimensions(float* outWidth, float* outHeight, float* outDepth)
  function GetDimensions (line 819) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outHeight,...
  function T (line 828) | T Load(const int3& loc) const { T out; texture->Load(&loc.x, &out, sizeo...
  function GetDimensions (line 837) | void GetDimensions(uint32_t* outWidth, uint32_t* outElements)
  function GetDimensions (line 843) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outE...
  function GetDimensions (line 850) | void GetDimensions(float* outWidth, float* outElements)
  function GetDimensions (line 856) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outElement...
  function T (line 864) | T Load(int2 loc) const { T out; texture->Load(&loc.x, &out, sizeof(out))...
  function GetDimensions (line 873) | void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* ou...
  function GetDimensions (line 880) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outH...
  function GetDimensions (line 888) | void GetDimensions(float* outWidth, float* outHeight, float* outElements)
  function GetDimensions (line 895) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outHeight,...
  function T (line 904) | T Load(const int3& loc) const { T out; texture->Load(&loc.x, &out, sizeo...
  type FeedbackType (line 912) | struct FeedbackType {}
  function FeedbackType (line 913) | struct SAMPLER_FEEDBACK_MIN_MIP : FeedbackType {}
  function FeedbackType (line 914) | struct SAMPLER_FEEDBACK_MIP_REGION_USED : FeedbackType {}
  type IFeedbackTexture (line 916) | struct IFeedbackTexture
  function GetDimensions (line 932) | void GetDimensions(uint32_t* outWidth, uint32_t* outHeight)
  function GetDimensions (line 938) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outH...
  function GetDimensions (line 945) | void GetDimensions(float* outWidth, float* outHeight)
  function GetDimensions (line 951) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outHeight,...
  function GetDimensions (line 989) | void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* ou...
  function GetDimensions (line 996) | void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outH...
  function GetDimensions (line 1004) | void GetDimensions(float* outWidth, float* outHeight, float* outElements)
  function GetDimensions (line 1011) | void GetDimensions(uint32_t mipLevel, float* outWidth, float* outHeight,...
  type ComputeThreadVaryingInput (line 1050) | struct ComputeThreadVaryingInput
  type ComputeVaryingInput (line 1056) | struct ComputeVaryingInput

FILE: Source/External/slang/prelude/slang-cuda-prelude.h
  type TypeInfo (line 106) | struct TypeInfo
  function SLANG_CUDA_CALL (line 114) | SLANG_CUDA_CALL const T& operator[](size_t index) const { SLANG_BOUND_CH...
  function SLANG_CUDA_CALL (line 115) | SLANG_CUDA_CALL T& operator[](size_t index) { SLANG_BOUND_CHECK_FIXED_AR...
  function SLANG_CUDA_CALL (line 125) | SLANG_CUDA_CALL const T& operator[](size_t index) const { SLANG_BOUND_CH...
  function SLANG_CUDA_CALL (line 126) | SLANG_CUDA_CALL T& operator[](size_t index) { SLANG_BOUND_CHECK(index, c...
  type CUtexObject (line 133) | typedef unsigned long long CUtexObject;
  type CUsurfObject (line 134) | typedef unsigned long long CUsurfObject;
  type SamplerStateUnused (line 140) | struct SamplerStateUnused
  type SamplerStateUnused (line 141) | typedef SamplerStateUnused* SamplerState;
  type NonUniformResourceIndex (line 146) | typedef size_t NonUniformResourceIndex;
  type bool1 (line 152) | typedef bool bool1;
  type int2 (line 153) | typedef int2 bool2;
  type int3 (line 154) | typedef int3 bool3;
  type int4 (line 155) | typedef int4 bool4;
  type longlong (line 168) | typedef long long longlong;
  type ulonglong (line 169) | typedef unsigned long long ulonglong;
  type uchar (line 171) | typedef unsigned char uchar;
  type ushort (line 172) | typedef unsigned short ushort;
  type uint (line 173) | typedef unsigned int uint;
  type __half3 (line 196) | struct __half3 { __half2 xy; __half z; }
  type __half4 (line 197) | struct __half4 { __half2 xy; __half2 zw; }
  function float2 (line 204) | float2 convert_float2(const __half2& v) { return __half22float2(v); }
  function __half2 (line 225) | __half2 convert___half2(const float2& v) { return __float22half2_rn(v); }
  function __half2 (line 237) | __half2 convert___half2(const double2& v) { return __float22half2_rn(flo...
  function __half2 (line 244) | __half2 make___half2(__half x, __half y) { return __halves2half2(x, y); }
  function __half4 (line 246) | __half4 make___half4(__half x, __half y, __half z, __half w) { return __...
  function __half2 (line 337) | __half2 __ushort_as_half(const ushort2& i) { return __halves2half2(__ush...
  function __half3 (line 338) | __half3 __ushort_as_half(const ushort3& i) { return __half3{__halves2hal...
  function SLANG_CUDA_CALL (line 533) | SLANG_CUDA_CALL float F32_ceil(float f) { return ::ceilf(f); }
  function SLANG_CUDA_CALL (line 534) | SLANG_CUDA_CALL float F32_floor(float f) { return ::floorf(f); }
  function SLANG_CUDA_CALL (line 535) | SLANG_CUDA_CALL float F32_round(float f) { return ::roundf(f); }
  function SLANG_CUDA_CALL (line 536) | SLANG_CUDA_CALL float F32_sin(float f) { return ::sinf(f); }
  function SLANG_CUDA_CALL (line 537) | SLANG_CUDA_CALL float F32_cos(float f) { return ::cosf(f); }
  function SLANG_CUDA_CALL (line 538) | SLANG_CUDA_CALL void F32_sincos(float f, float* s, float* c) { ::sincosf...
  function SLANG_CUDA_CALL (line 539) | SLANG_CUDA_CALL float F32_tan(float f) { return ::tanf(f); }
  function SLANG_CUDA_CALL (line 540) | SLANG_CUDA_CALL float F32_asin(float f) { return ::asinf(f); }
  function SLANG_CUDA_CALL (line 541) | SLANG_CUDA_CALL float F32_acos(float f) { return ::acosf(f); }
  function SLANG_CUDA_CALL (line 542) | SLANG_CUDA_CALL float F32_atan(float f) { return ::atanf(f); }
  function SLANG_CUDA_CALL (line 543) | SLANG_CUDA_CALL float F32_sinh(float f) { return ::sinhf(f); }
  function SLANG_CUDA_CALL (line 544) | SLANG_CUDA_CALL float F32_cosh(float f) { return ::coshf(f); }
  function SLANG_CUDA_CALL (line 545) | SLANG_CUDA_CALL float F32_tanh(float f) { return ::tanhf(f); }
  function SLANG_CUDA_CALL (line 546) | SLANG_CUDA_CALL float F32_log2(float f) { return ::log2f(f); }
  function SLANG_CUDA_CALL (line 547) | SLANG_CUDA_CALL float F32_log(float f) { return ::logf(f); }
  function SLANG_CUDA_CALL (line 548) | SLANG_CUDA_CALL float F32_log10(float f) { return ::log10f(f); }
  function SLANG_CUDA_CALL (line 549) | SLANG_CUDA_CALL float F32_exp2(float f) { return ::exp2f(f); }
  function SLANG_CUDA_CALL (line 550) | SLANG_CUDA_CALL float F32_exp(float f) { return ::expf(f); }
  function SLANG_CUDA_CALL (line 551) | SLANG_CUDA_CALL float F32_abs(float f) { return ::fabsf(f); }
  function SLANG_CUDA_CALL (line 552) | SLANG_CUDA_CALL float F32_trunc(float f) { return ::truncf(f); }
  function SLANG_CUDA_CALL (line 553) | SLANG_CUDA_CALL float F32_sqrt(float f) { return ::sqrtf(f); }
  function SLANG_CUDA_CALL (line 554) | SLANG_CUDA_CALL float F32_rsqrt(float f) { return ::rsqrtf(f); }
  function SLANG_CUDA_CALL (line 555) | SLANG_CUDA_CALL float F32_sign(float f) { return ( f == 0.0f) ? f : (( f...
  function SLANG_CUDA_CALL (line 556) | SLANG_CUDA_CALL float F32_frac(float f) { return f - F32_floor(f); }
  function SLANG_CUDA_CALL (line 558) | SLANG_CUDA_CALL bool F32_isnan(float f) { return isnan(f); }
  function SLANG_CUDA_CALL (line 559) | SLANG_CUDA_CALL bool F32_isfinite(float f) { return isfinite(f); }
  function SLANG_CUDA_CALL (line 560) | SLANG_CUDA_CALL bool F32_isinf(float f) { return isinf(f); }
  function SLANG_CUDA_CALL (line 563) | SLANG_CUDA_CALL float F32_min(float a, float b) { return ::fminf(a, b); }
  function SLANG_CUDA_CALL (line 564) | SLANG_CUDA_CALL float F32_max(float a, float b) { return ::fmaxf(a, b); }
  function SLANG_CUDA_CALL (line 565) | SLANG_CUDA_CALL float F32_pow(float a, float b) { return ::powf(a, b); }
  function SLANG_CUDA_CALL (line 566) | SLANG_CUDA_CALL float F32_fmod(float a, float b) { return ::fmodf(a, b); }
  function SLANG_CUDA_CALL (line 567) | SLANG_CUDA_CALL float F32_remainder(float a, float b) { return ::remaind...
  function SLANG_CUDA_CALL (line 568) | SLANG_CUDA_CALL float F32_atan2(float a, float b) { return float(::atan2...
  function SLANG_CUDA_CALL (line 570) | SLANG_CUDA_CALL float F32_frexp(float x, float* e)
  function SLANG_CUDA_CALL (line 577) | SLANG_CUDA_CALL float F32_modf(float x, float* ip)
  function SLANG_CUDA_CALL (line 582) | SLANG_CUDA_CALL uint32_t F32_asuint(float f) { Union32 u; u.f = f; retur...
  function SLANG_CUDA_CALL (line 583) | SLANG_CUDA_CALL int32_t F32_asint(float f) { Union32 u; u.f = f; return ...
  function SLANG_CUDA_CALL (line 586) | SLANG_CUDA_CALL float F32_fma(float a, float b, float c) { return ::fmaf...
  function SLANG_CUDA_CALL (line 592) | SLANG_CUDA_CALL double F64_ceil(double f) { return ::ceil(f); }
  function SLANG_CUDA_CALL (line 593) | SLANG_CUDA_CALL double F64_floor(double f) { return ::floor(f); }
  function SLANG_CUDA_CALL (line 594) | SLANG_CUDA_CALL double F64_round(double f) { return ::round(f); }
  function SLANG_CUDA_CALL (line 595) | SLANG_CUDA_CALL double F64_sin(double f) { return ::sin(f); }
  function SLANG_CUDA_CALL (line 596) | SLANG_CUDA_CALL double F64_cos(double f) { return ::cos(f); }
  function SLANG_CUDA_CALL (line 597) | SLANG_CUDA_CALL void F64_sincos(double f, double* s, double* c) { ::sinc...
  function SLANG_CUDA_CALL (line 598) | SLANG_CUDA_CALL double F64_tan(double f) { return ::tan(f); }
  function SLANG_CUDA_CALL (line 599) | SLANG_CUDA_CALL double F64_asin(double f) { return ::asin(f); }
  function SLANG_CUDA_CALL (line 600) | SLANG_CUDA_CALL double F64_acos(double f) { return ::acos(f); }
  function SLANG_CUDA_CALL (line 601) | SLANG_CUDA_CALL double F64_atan(double f) { return ::atan(f); }
  function SLANG_CUDA_CALL (line 602) | SLANG_CUDA_CALL double F64_sinh(double f) { return ::sinh(f); }
  function SLANG_CUDA_CALL (line 603) | SLANG_CUDA_CALL double F64_cosh(double f) { return ::cosh(f); }
  function SLANG_CUDA_CALL (line 604) | SLANG_CUDA_CALL double F64_tanh(double f) { return ::tanh(f); }
  function SLANG_CUDA_CALL (line 605) | SLANG_CUDA_CALL double F64_log2(double f) { return ::log2(f); }
  function SLANG_CUDA_CALL (line 606) | SLANG_CUDA_CALL double F64_log(double f) { return ::log(f); }
  function SLANG_CUDA_CALL (line 607) | SLANG_CUDA_CALL double F64_log10(float f) { return ::log10(f); }
  function SLANG_CUDA_CALL (line 608) | SLANG_CUDA_CALL double F64_exp2(double f) { return ::exp2(f); }
  function SLANG_CUDA_CALL (line 609) | SLANG_CUDA_CALL double F64_exp(double f) { return ::exp(f); }
  function SLANG_CUDA_CALL (line 610) | SLANG_CUDA_CALL double F64_abs(double f) { return ::fabs(f); }
  function SLANG_CUDA_CALL (line 611) | SLANG_CUDA_CALL double F64_trunc(double f) { return ::trunc(f); }
  function SLANG_CUDA_CALL (line 612) | SLANG_CUDA_CALL double F64_sqrt(double f) { return ::sqrt(f); }
  function SLANG_CUDA_CALL (line 613) | SLANG_CUDA_CALL double F64_rsqrt(double f) { return ::rsqrt(f); }
  function SLANG_CUDA_CALL (line 614) | SLANG_CUDA_CALL double F64_sign(double f) { return (f == 0.0) ? f : ((f ...
  function SLANG_CUDA_CALL (line 615) | SLANG_CUDA_CALL double F64_frac(double f) { return f - F64_floor(f); }
  function SLANG_CUDA_CALL (line 617) | SLANG_CUDA_CALL bool F64_isnan(double f) { return isnan(f); }
  function SLANG_CUDA_CALL (line 618) | SLANG_CUDA_CALL bool F64_isfinite(double f) { return isfinite(f); }
  function SLANG_CUDA_CALL (line 619) | SLANG_CUDA_CALL bool F64_isinf(double f) { return isinf(f); }
  function SLANG_CUDA_CALL (line 622) | SLANG_CUDA_CALL double F64_min(double a, double b) { return ::fmin(a, b); }
  function SLANG_CUDA_CALL (line 623) | SLANG_CUDA_CALL double F64_max(double a, double b) { return ::fmax(a, b); }
  function SLANG_CUDA_CALL (line 624) | SLANG_CUDA_CALL double F64_pow(double a, double b) { return ::pow(a, b); }
  function SLANG_CUDA_CALL (line 625) | SLANG_CUDA_CALL double F64_fmod(double a, double b) { return ::fmod(a, b...
  function SLANG_CUDA_CALL (line 626) | SLANG_CUDA_CALL double F64_remainder(double a, double b) { return ::rema...
  function SLANG_CUDA_CALL (line 627) | SLANG_CUDA_CALL double F64_atan2(double a, double b) { return ::atan2(a,...
  function SLANG_CUDA_CALL (line 629) | SLANG_CUDA_CALL double F64_frexp(double x, double* e)
  function SLANG_CUDA_CALL (line 636) | SLANG_CUDA_CALL double F64_modf(double x, double* ip)
  function SLANG_CUDA_CALL (line 641) | SLANG_CUDA_CALL void F64_asuint(double d, uint32_t* low, uint32_t* hi)
  function SLANG_CUDA_CALL (line 649) | SLANG_CUDA_CALL void F64_asint(double d, int32_t* low, int32_t* hi)
  function SLANG_CUDA_CALL (line 658) | SLANG_CUDA_CALL double F64_fma(double a, double b, double c) { return ::...
  function SLANG_CUDA_CALL (line 663) | SLANG_CUDA_CALL int32_t I32_abs(int32_t f) { return (f < 0) ? -f : f; }
  function SLANG_CUDA_CALL (line 666) | SLANG_CUDA_CALL int32_t I32_min(int32_t a, int32_t b) { return a < b ? a...
  function SLANG_CUDA_CALL (line 667) | SLANG_CUDA_CALL int32_t I32_max(int32_t a, int32_t b) { return a > b ? a...
  function SLANG_CUDA_CALL (line 669) | SLANG_CUDA_CALL float I32_asfloat(int32_t x) { Union32 u; u.i = x; retur...
  function SLANG_CUDA_CALL (line 670) | SLANG_CUDA_CALL uint32_t I32_asuint(int32_t x) { return uint32_t(x); }
  function SLANG_CUDA_CALL (line 671) | SLANG_CUDA_CALL double I32_asdouble(int32_t low, int32_t hi )
  function SLANG_CUDA_CALL (line 681) | SLANG_CUDA_CALL uint32_t U32_abs(uint32_t f) { return f; }
  function SLANG_CUDA_CALL (line 684) | SLANG_CUDA_CALL uint32_t U32_min(uint32_t a, uint32_t b) { return a < b ...
  function SLANG_CUDA_CALL (line 685) | SLANG_CUDA_CALL uint32_t U32_max(uint32_t a, uint32_t b) { return a > b ...
  function SLANG_CUDA_CALL (line 687) | SLANG_CUDA_CALL float U32_asfloat(uint32_t x) { Union32 u; u.u = x; retu...
  function SLANG_CUDA_CALL (line 688) | SLANG_CUDA_CALL uint32_t U32_asint(int32_t x) { return uint32_t(x); }
  function SLANG_CUDA_CALL (line 690) | SLANG_CUDA_CALL double U32_asdouble(uint32_t low, uint32_t hi)
  function SLANG_CUDA_CALL (line 697) | SLANG_CUDA_CALL uint32_t U32_countbits(uint32_t v)
  function SLANG_CUDA_CALL (line 706) | SLANG_CUDA_CALL int64_t I64_abs(int64_t f) { return (f < 0) ? -f : f; }
  function SLANG_CUDA_CALL (line 708) | SLANG_CUDA_CALL int64_t I64_min(int64_t a, int64_t b) { return a < b ? a...
  function SLANG_CUDA_CALL (line 709) | SLANG_CUDA_CALL int64_t I64_max(int64_t a, int64_t b) { return a > b ? a...
  function SLANG_CUDA_CALL (line 713) | SLANG_CUDA_CALL int64_t U64_abs(uint64_t f) { return f; }
  function SLANG_CUDA_CALL (line 715) | SLANG_CUDA_CALL int64_t U64_min(uint64_t a, uint64_t b) { return a < b ?...
  function SLANG_CUDA_CALL (line 716) | SLANG_CUDA_CALL int64_t U64_max(uint64_t a, uint64_t b) { return a > b ?...
  function SLANG_CUDA_CALL (line 718) | SLANG_CUDA_CALL uint32_t U64_countbits(uint64_t v)
  function SLANG_CUDA_CALL (line 734) | SLANG_CUDA_CALL const T& operator[](size_t index) const
  function SLANG_CUDA_CALL (line 742) | SLANG_CUDA_CALL const T& Load(size_t index) const
  function SLANG_CUDA_CALL (line 751) | SLANG_CUDA_CALL void GetDimensions(uint32_t* outNumStructs, uint32_t* ou...
  function SLANG_CUDA_CALL (line 763) | SLANG_CUDA_CALL T& operator[](size_t index) const
  type ByteAddressBuffer (line 773) | struct ByteAddressBuffer
  function Load (line 776) | uint32_t Load(size_t index) const
  function SLANG_CUDA_CALL (line 793) | SLANG_CUDA_CALL uint4 Load4(size_t index) const
  type RWByteAddressBuffer (line 813) | struct RWByteAddressBuffer
  function Load (line 817) | uint32_t Load(size_t index) const
  function SLANG_CUDA_CALL (line 828) | SLANG_CUDA_CALL uint3 Load3(size_t index) const
  function T (line 1104) | T _waveReduceScalar(WarpMask mask, T val)
  function _waveReduceMultiple (line 1136) | void _waveReduceMultiple(WarpMask mask, T* val)
  function _waveReduceMultiple (line 1178) | void _waveReduceMultiple(WarpMask mask, T* val)
  function __device__ (line 1185) | __device__  T _waveOr(WarpMask mask, T val) { return _waveReduceScalar<W...
  function __device__ (line 1188) | __device__ T _waveAnd(WarpMask mask, T val) { return _waveReduceScalar<W...
  function __device__ (line 1191) | __device__ T _waveXor(WarpMask mask, T val) { return _waveReduceScalar<W...
  function __device__ (line 1194) | __device__ T _waveProduct(WarpMask mask, T val) { return _waveReduceScal...
  function __device__ (line 1197) | __device__ T _waveSum(WarpMask mask, T val) { return _waveReduceScalar<W...
  function __device__ (line 1200) | __device__ T _waveMin(WarpMask mask, T val) { return _waveReduceScalar<W...
  function __device__ (line 1203) | __device__ T _waveMax(WarpMask mask, T val) { return _waveReduceScalar<W...
  function __device__ (line 1209) | __device__  T _waveOrMultiple(WarpMask mask, T val) { typedef typename E...
  function __device__ (line 1212) | __device__  T _waveAndMultiple(WarpMask mask, T val) { typedef typename ...
  function __device__ (line 1215) | __device__  T _waveXorMultiple(WarpMask mask, T val) { typedef typename ...
  function __device__ (line 1218) | __device__  T _waveProductMultiple(WarpMask mask, T val) { typedef typen...
  function __device__ (line 1221) | __device__  T _waveSumMultiple(WarpMask mask, T val) { typedef typename ...
  function __device__ (line 1224) | __device__  T _waveMinMultiple(WarpMask mask, T val) { typedef typename ...
  function __device__ (line 1227) | __device__  T _waveMaxMultiple(WarpMask mask, T val) { typedef typename ...
  function _waveAllEqual (line 1231) | bool _waveAllEqual(WarpMask mask, T val)
  function _waveAllEqualMultiple (line 1239) | bool _waveAllEqualMultiple(WarpMask mask, T inVal)
  function __device__ (line 1257) | __device__ T _waveReadFirst(WarpMask mask, T val)
  function __device__ (line 1264) | __device__ T _waveReadFirstMultiple(WarpMask mask, T inVal)
  function __device__ (line 1280) | __device__ T _waveShuffleMultiple(WarpMask mask, T inVal, int lane)
  function T (line 1299) | T _wavePrefixInvertableScalar(WarpMask mask, T val)
  function T (line 1349) | T _wavePrefixScalar(WarpMask mask, T val)
  function T (line 1396) | T _waveOpCopy(T* dst, const T* src)
  function T (line 1406) | T _waveOpDoInverse(T* inOut, const T* val)
  function T (line 1415) | T _waveOpSetInitial(T* out, const T* val)
  function T (line 1424) | T _wavePrefixInvertableMultiple(WarpMask mask, T* val)
  function T (line 1482) | T _wavePrefixMultiple(WarpMask mask, T* val)
  function __device__ (line 1538) | __device__ T _wavePrefixProduct(WarpMask mask, T val) { return _wavePref...
  function __device__ (line 1541) | __device__ T _wavePrefixSum(WarpMask mask, T val) { return _wavePrefixIn...
  function __device__ (line 1544) | __device__ T _wavePrefixXor(WarpMask mask, T val) { return _wavePrefixIn...
  function __device__ (line 1547) | __device__ T _wavePrefixOr(WarpMask mask, T val) { return _wavePrefixSca...
  function __device__ (line 1550) | __device__ T _wavePrefixAnd(WarpMask mask, T val) { return _wavePrefixSc...
  function __device__ (line 1554) | __device__ T _wavePrefixProductMultiple(WarpMask mask, T val)
  function __device__ (line 1562) | __device__ T _wavePrefixSumMultiple(WarpMask mask, T val)
  function __device__ (line 1570) | __device__ T _wavePrefixXorMultiple(WarpMask mask, T val)
  function __device__ (line 1578) | __device__ T _wavePrefixOrMultiple(WarpMask mask, T val)
  function __device__ (line 1586) | __device__ T _wavePrefixAndMultiple(WarpMask mask, T val)
  function __device__ (line 1594) | __device__ uint4 _waveMatchScalar(WarpMask mask, T val)
  function __device__ (line 1601) | __device__ uint4 _waveMatchMultiple(WarpMask mask, const T& inVal)
  function __device__ (line 1615) | __device__ uint getAt(dim3 a,  int b)
  function __device__ (line 1630) | __device__ TResult slang_bit_cast(TInput val)
  type UniformEntryPointParams (line 1641) | struct UniformEntryPointParams
  type UniformState (line 1642) | struct UniformState
  type RayDesc (line 1646) | struct RayDesc
  function packOptiXRayPayloadPointer (line 1663) | void  packOptiXRayPayloadPointer(void* ptr, uint32_t& i0, uint32_t& i1)

FILE: Source/External/slang/prelude/slang-llvm.h
  type __PTRDIFF_TYPE__ (line 24) | typedef __PTRDIFF_TYPE__ ptrdiff_t;
  type __SIZE_TYPE__ (line 25) | typedef __SIZE_TYPE__ size_t;
  type __SIZE_TYPE__ (line 26) | typedef __SIZE_TYPE__ rsize_t;
  function namespace (line 43) | namespace std { typedef decltype(nullptr) nullptr_t; }
  type __INT64_TYPE__ (line 59) | typedef __INT64_TYPE__ int64_t;
  type __UINT64_TYPE__ (line 61) | typedef __UINT64_TYPE__ uint64_t;
  type __int_least64_t (line 67) | typedef __int_least64_t int_least64_t;
  type __uint_least64_t (line 68) | typedef __uint_least64_t uint_least64_t;
  type __int_least64_t (line 69) | typedef __int_least64_t int_fast64_t;
  type __uint_least64_t (line 70) | typedef __uint_least64_t uint_fast64_t;
  type __INT32_TYPE__ (line 76) | typedef __INT32_TYPE__ int32_t;
  type __UINT32_TYPE__ (line 81) | typedef __UINT32_TYPE__ uint32_t;
  type __int_least32_t (line 89) | typedef __int_least32_t int_least32_t;
  type __uint_least32_t (line 90) | typedef __uint_least32_t uint_least32_t;
  type __int_least32_t (line 91) | typedef __int_least32_t int_fast32_t;
  type __uint_least32_t (line 92) | typedef __uint_least32_t uint_fast32_t;
  type __INT16_TYPE__ (line 97) | typedef __INT16_TYPE__ int16_t;
  type __UINT16_TYPE__ (line 99) | typedef __UINT16_TYPE__ uint16_t;
  type __int_least16_t (line 105) | typedef __int_least16_t int_least16_t;
  type __uint_least16_t (line 106) | typedef __uint_least16_t uint_least16_t;
  type __int_least16_t (line 107) | typedef __int_least16_t int_fast16_t;
  type __uint_least16_t (line 108) | typedef __uint_least16_t uint_fast16_t;
  type __INT8_TYPE__ (line 113) | typedef __INT8_TYPE__ int8_t;
  type __UINT8_TYPE__ (line 115) | typedef __UINT8_TYPE__ uint8_t;
  type __int_least8_t (line 121) | typedef __int_least8_t int_least8_t;
  type __uint_least8_t (line 122) | typedef __uint_least8_t uint_least8_t;
  type __int_least8_t (line 123) | typedef __int_least8_t int_fast8_t;
  type __uint_least8_t (line 124) | typedef __uint_least8_t uint_fast8_t;
  type __INTPTR_TYPE__ (line 138) | typedef __INTPTR_TYPE__ intptr_t;
  type __UINTPTR_TYPE__ (line 145) | typedef __UINTPTR_TYPE__ uintptr_t;
  type __INTMAX_TYPE__ (line 151) | typedef __INTMAX_TYPE__  intmax_t;
  type __UINTMAX_TYPE__ (line 152) | typedef __UINTMAX_TYPE__ uintmax_t;

FILE: Source/External/slang/slang-com-helper.h
  function namespace (line 34) | namespace Slang {
  type CmpType (line 49) | typedef uint32_t CmpType;

FILE: Source/External/slang/slang-com-ptr.h
  type InitAttach (line 42) | enum InitAttach
  type ComPtr (line 52) | typedef ComPtr ThisType;
  type ISlangUnknown (line 53) | typedef ISlangUnknown* Ptr;
  function SLANG_FORCE_INLINE (line 58) | SLANG_FORCE_INLINE ComPtr(std::nullptr_t) : m_ptr(nullptr) {}
  function SLANG_FORCE_INLINE (line 60) | SLANG_FORCE_INLINE explicit ComPtr(T* ptr) :m_ptr(ptr) { if (ptr) ((Ptr)...
  function SLANG_FORCE_INLINE (line 62) | SLANG_FORCE_INLINE ComPtr(const ThisType& rhs) : m_ptr(rhs.m_ptr) { if (...
  function SLANG_FORCE_INLINE (line 65) | SLANG_FORCE_INLINE explicit ComPtr(InitAttach, T* ptr) :m_ptr(ptr) { }
  function SLANG_FORCE_INLINE (line 67) | SLANG_FORCE_INLINE ComPtr(InitAttach, const ThisType& rhs) : m_ptr(rhs.m...
  function SLANG_FORCE_INLINE (line 71) | SLANG_FORCE_INLINE ComPtr(ThisType&& rhs) : m_ptr(rhs.m_ptr) { rhs.m_ptr...
  function SLANG_FORCE_INLINE (line 77) | SLANG_FORCE_INLINE ~ComPtr() { if (m_ptr) ((Ptr)m_ptr)->release(); }

FILE: Source/External/slang/slang-gfx.h
  type SlangResult (line 44) | typedef SlangResult Result;
  type SlangInt (line 47) | typedef SlangInt Int;
  type SlangUInt (line 48) | typedef SlangUInt UInt;
  type DeviceAddress (line 49) | typedef uint64_t DeviceAddress;
  type GfxIndex (line 50) | typedef int GfxIndex;
  type GfxCount (line 51) | typedef int GfxCount;
  type Size (line 52) | typedef size_t Size;
  type Offset (line 53) | typedef size_t Offset;
  type class (line 57) | enum class
  type class (line 63) | enum class
  type class (line 84) | enum class
  type class (line 98) | enum class
  type class (line 109) | enum class
  type class (line 121) | enum class
  type class (line 133) | enum class
  type class (line 145) | enum class
  type Desc (line 155) | struct Desc
  type CreateDesc2 (line 174) | struct CreateDesc2
  type class (line 303) | enum class
  type FormatInfo (line 416) | struct FormatInfo
  type class (line 427) | enum class
  type InputElementDesc (line 432) | struct InputElementDesc
  type VertexStreamDesc (line 441) | struct VertexStreamDesc
  type class (line 448) | enum class
  function PrimitiveTopology (line 453) | enum class PrimitiveTopology
  type class (line 519) | enum class
  type class (line 526) | enum class
  type InteropHandle (line 538) | struct InteropHandle
  function class (line 545) | class IInputLayout : public ISlangUnknown
  function class (line 561) | class IResource: public ISlangUnknown
  type MemoryRange (line 601) | struct MemoryRange
  function class (line 608) | class IBufferResource: public IResource
  type DepthStencilClearValue (line 628) | struct DepthStencilClearValue
  type ClearValue (line 638) | struct ClearValue
  type BufferRange (line 644) | struct BufferRange
  type class (line 651) | enum class
  type SubresourceRange (line 665) | struct SubresourceRange
  function class (line 674) | class ITextureResource: public IResource
  type class (line 765) | enum class
  type class (line 777) | enum class
  type class (line 783) | enum class
  type class (line 792) | enum class
  function class (line 800) | class ISamplerState : public ISlangUnknown
  type class (line 833) | enum class
  type RenderTargetDesc (line 846) | struct RenderTargetDesc
  type Desc (line 852) | struct Desc
  type class (line 883) | enum class
  type BuildFlags (line 889) | struct BuildFlags
  function GeometryType (line 905) | enum class GeometryType
  function class (line 1041) | class IFence : public ISlangUnknown
  type ShaderOffset (line 1064) | struct ShaderOffset
  type class (line 1100) | enum class
  function class (line 1105) | class IShaderObject : public ISlangUnknown
  type class (line 1164) | enum class
  type class (line 1176) | enum class
  type class (line 1182) | enum class
  type class (line 1189) | enum class
  type DepthStencilOpDesc (line 1195) | struct DepthStencilOpDesc
  type DepthStencilDesc (line 1203) | struct DepthStencilDesc
  type RasterizerDesc (line 1218) | struct RasterizerDesc
  function LogicOp (line 1234) | enum class LogicOp
  type class (line 1239) | enum class
  function BlendFactor (line 1248) | enum class BlendFactor
  type FaceMask (line 1480) | struct FaceMask
  type class (line 1491) | enum class
  function TargetStoreOp (line 1495) | enum class TargetStoreOp
  function QueryType (line 1521) | enum class QueryType
  function class (line 1761) | class IComputeCommandEncoder : public IResourceCommandEncoder
  type class (line 1787) | enum class
  type AccelerationStructureQueryDesc (line 1792) | struct AccelerationStructureQueryDesc
  function class (line 1801) | class IRayTracingCommandEncoder : public IResourceCommandEncoder
  function class (line 1839) | class ICommandBuffer : public ISlangUnknown
  function class (line 1895) | class ICommandBufferD3D12 : public ICommandBuffer
  function class (line 1906) | class ICommandQueue : public ISlangUnknown
  function class (line 1947) | class ITransientResourceHeap : public ISlangUnknown
  function class (line 1998) | class ITransientResourceHeapD3D12 : public ISlangUnknown
  type AdapterInfo (line 2091) | struct AdapterInfo
  function class (line 2106) | class AdapterList
  type DeviceLimits (line 2125) | struct DeviceLimits
  type DeviceInfo (line 2165) | struct DeviceInfo
  function DebugMessageType (line 2189) | enum class DebugMessageType
  function ComPtr (line 2368) | inline ComPtr<ISamplerState> createSamplerState(ISamplerState::Desc cons...
  function ComPtr (line 2378) | inline ComPtr<IResourceView> createTextureView(ITextureResource* texture...
  function ComPtr (line 2391) | inline ComPtr<IResourceView> createBufferView(
  function ComPtr (line 2401) | inline ComPtr<IFramebufferLayout> createFramebufferLayout(IFramebufferLa...
  function ComPtr (line 2410) | inline ComPtr<IFramebuffer> createFramebuffer(IFramebuffer::Desc const& ...
  function ComPtr (line 2420) | inline ComPtr<IRenderPassLayout> createRenderPassLayout(const IRenderPas...
  function ComPtr (line 2429) | inline ComPtr<ISwapchain> createSwapchain(ISwapchain::Desc const& desc, ...
  function ComPtr (line 2439) | inline ComPtr<IInputLayout> createInputLayout(IInputLayout::Desc const& ...
  function Result (line 2446) | inline Result createInputLayout(Size vertexSize, InputElementDesc const*...
  function ComPtr (line 2458) | inline ComPtr<IInputLayout> createInputLayout(Size vertexSize, InputElem...
  function ComPtr (line 2467) | inline ComPtr<ICommandQueue> createCommandQueue(const ICommandQueue::Des...
  function ComPtr (line 2479) | inline ComPtr<IShaderObject> createShaderObject(slang::TypeReflection* t...
  function ComPtr (line 2509) | inline ComPtr<IShaderProgram> createProgram(const IShaderProgram::Desc& ...
  function ComPtr (line 2525) | inline ComPtr<IPipelineState> createGraphicsPipelineState(
  function ComPtr (line 2537) | inline ComPtr<IPipelineState> createComputePipelineState(
  function DeviceInfo (line 2563) | const DeviceInfo& SLANG_MCALL getDeviceInfo() const = 0;

FILE: Source/External/slang/slang.h
  type SlangUInt32 (line 491) | typedef uint32_t    SlangUInt32;
  type SlangInt32 (line 492) | typedef int32_t     SlangInt32;
  type SlangInt (line 501) | typedef int64_t    SlangInt;
  type SlangUInt (line 502) | typedef uint64_t   SlangUInt;
  type SlangSizeT (line 504) | typedef uint64_t   SlangSizeT;
  type SlangInt (line 506) | typedef int32_t    SlangInt;
  type SlangUInt (line 507) | typedef uint32_t   SlangUInt;
  type SlangSizeT (line 509) | typedef uint32_t   SlangSizeT;
  type SlangBool (line 512) | typedef bool SlangBool;
  type SlangSeverityIntegral (line 521) | typedef int SlangSeverityIntegral;
  type SlangSeverity (line 522) | enum SlangSeverity
  type SlangDiagnosticFlags (line 532) | typedef int SlangDiagnosticFlags;
  type SlangBindableResourceIntegral (line 539) | typedef int SlangBindableResourceIntegral;
  type SlangBindableResourceType (line 540) | enum SlangBindableResourceType
  type SlangCompileTargetIntegral (line 549) | typedef int SlangCompileTargetIntegral;
  type SlangCompileTarget (line 550) | enum SlangCompileTarget
  type SlangContainerFormatIntegral (line 580) | typedef int SlangContainerFormatIntegral;
  type SlangContainerFormat (line 581) | enum SlangContainerFormat : SlangContainerFormatIntegral
  type SlangPassThroughIntegral (line 591) | typedef int SlangPassThroughIntegral;
  type SlangPassThrough (line 592) | enum SlangPassThrough
  type SlangArchiveTypeIntegral (line 608) | typedef int SlangArchiveTypeIntegral;
  type SlangArchiveType (line 609) | enum SlangArchiveType
  type SlangCompileFlags (line 622) | typedef unsigned int SlangCompileFlags;
  type SlangTargetFlags (line 643) | typedef unsigned int SlangTargetFlags;
  type SlangFloatingPointModeIntegral (line 669) | typedef unsigned int SlangFloatingPointModeIntegral;
  type SlangFloatingPointMode (line 670) | enum SlangFloatingPointMode
  type SlangLineDirectiveModeIntegral (line 680) | typedef unsigned int SlangLineDirectiveModeIntegral;
  type SlangLineDirectiveMode (line 681) | enum SlangLineDirectiveMode
  type SlangSourceLanguageIntegral (line 689) | typedef int SlangSourceLanguageIntegral;
  type SlangSourceLanguage (line 690) | enum SlangSourceLanguage
  type SlangProfileIDIntegral (line 702) | typedef unsigned int SlangProfileIDIntegral;
  type SlangProfileID (line 703) | enum SlangProfileID : SlangProfileIDIntegral
  type SlangInt32 (line 709) | typedef SlangInt32 SlangCapabilityIDIntegral;
  type SlangCapabilityID (line 710) | enum SlangCapabilityID : SlangCapabilityIDIntegral
  type SlangMatrixLayoutModeIntegral (line 715) | typedef unsigned int SlangMatrixLayoutModeIntegral;
  type SlangMatrixLayoutMode (line 716) | enum SlangMatrixLayoutMode
  type SlangUInt32 (line 723) | typedef SlangUInt32 SlangStageIntegral;
  type SlangStage (line 724) | enum SlangStage
  type SlangUInt32 (line 746) | typedef SlangUInt32 SlangDebugInfoLevelIntegral;
  function SlangDebugInfoLevelIntegral (line 747) | enum SlangDebugInfoLevel : SlangDebugInfoLevelIntegral
  function ISlangCastable (line 1003) | struct ISlangFileSystem : public ISlangCastable
  function ISlangUnknown (line 1032) | struct ISlangSharedLibrary_Dep1: public ISlangUnknown
  function ISlangCastable (line 1043) | struct ISlangSharedLibrary : public ISlangCastable
  function ISlangUnknown (line 1061) | struct ISlangSharedLibraryLoader: public ISlangUnknown
  type SlangPathTypeIntegral (line 1077) | typedef unsigned int SlangPathTypeIntegral;
  type SlangPathType (line 1078) | enum SlangPathType : SlangPathTypeIntegral
  type class (line 1089) | enum class
  type class (line 1097) | enum class
  function ISlangFileSystem (line 1136) | struct ISlangFileSystemExt : public ISlangFileSystem
  function ISlangFileSystemExt (line 1234) | struct ISlangMutableFileSystem : public ISlangFileSystemExt
  type SlangWriterChannelIntegral (line 1289) | typedef unsigned int SlangWriterChannelIntegral;
  type SlangWriterChannel (line 1290) | enum SlangWriterChannel : SlangWriterChannelIntegral
  type SlangWriterModeIntegral (line 1298) | typedef unsigned int SlangWriterModeIntegral;
  type SlangWriterMode (line 1299) | enum SlangWriterMode : SlangWriterModeIntegral
  function ISlangUnknown (line 1307) | struct ISlangWriter : public ISlangUnknown
  function namespace (line 1340) | namespace slang {
  type slang (line 1349) | typedef slang::IGlobalSession SlangSession;
  type SlangProgramLayout (line 1352) | typedef struct SlangProgramLayout SlangProgramLayout;
  type SlangCompileRequest (line 1357) | typedef struct slang::ICompileRequest SlangCompileRequest;
  type SlangProgramLayout (line 1829) | typedef struct SlangProgramLayout SlangProgramLayout;
  type SlangEntryPoint (line 1830) | typedef struct SlangEntryPoint SlangEntryPoint;
  type SlangEntryPointLayout (line 1831) | typedef struct SlangEntryPointLayout SlangEntryPointLayout;
  type SlangReflectionModifier (line 1833) | typedef struct SlangReflectionModifier          SlangReflectionModifier;
  type SlangReflectionType (line 1834) | typedef struct SlangReflectionType              SlangReflectionType;
  type SlangReflectionTypeLayout (line 1835) | typedef struct SlangReflectionTypeLayout        SlangReflectionTypeLayout;
  type SlangReflectionVariable (line 1836) | typedef struct SlangReflectionVariable          SlangReflectionVariable;
  type SlangReflectionVariableLayout (line 1837) | typedef struct SlangReflectionVariableLayout    SlangReflectionVariableL...
  type SlangReflectionTypeParameter (line 1838) | typedef struct SlangReflectionTypeParameter     SlangReflectionTypeParam...
  type SlangReflectionUserAttribute (line 1839) | typedef struct SlangReflectionUserAttribute     SlangReflectionUserAttri...
  type SlangProgramLayout (line 1844) | typedef SlangProgramLayout SlangReflection;
  type SlangEntryPointLayout (line 1845) | typedef SlangEntryPointLayout SlangReflectionEntryPoint;
  type SlangTypeKindIntegral (line 1853) | typedef unsigned int SlangTypeKindIntegral;
  type SlangTypeKind (line 1854) | enum SlangTypeKind
  type SlangScalarTypeIntegral (line 1877) | typedef unsigned int SlangScalarTypeIntegral;
  type SlangScalarType (line 1878) | enum SlangScalarType
  type SlangResourceShapeIntegral (line 1900) | typedef unsigned int SlangResourceShapeIntegral;
  type SlangResourceShape (line 1901) | enum SlangResourceShape
  type SlangResourceAccessIntegral (line 1932) | typedef unsigned int SlangResourceAccessIntegral;
  type SlangResourceAccess (line 1933) | enum SlangResourceAccess
  type SlangParameterCategoryIntegral (line 1944) | typedef unsigned int SlangParameterCategoryIntegral;
  type SlangParameterCategory (line 1945) | enum SlangParameterCategory
  type SlangUInt32 (line 2045) | typedef SlangUInt32 SlangBindingTypeIntegral;
  type SlangBindingType (line 2046) | enum SlangBindingType
  type SlangUInt32 (line 2077) | typedef SlangUInt32 SlangLayoutRulesIntegral;
  type SlangLayoutRules (line 2078) | enum SlangLayoutRules : SlangLayoutRulesIntegral
  type SlangUInt32 (line 2083) | typedef SlangUInt32 SlangModifierIDIntegral;
  type SlangModifierID (line 2084) | enum SlangModifierID : SlangModifierIDIntegral
  type SlangReflectionVariableLayout (line 2243) | typedef SlangReflectionVariableLayout SlangReflectionParameter;
  function namespace (line 2350) | namespace slang
  type TypeReflection (line 2386) | struct TypeReflection
  function getFieldCount (line 2433) | int getFieldCount()
  function VariableReflection (line 2438) | VariableReflection* getFieldByIndex(unsigned int index)
  function isArray (line 2443) | bool isArray() { return getKind() == TypeReflection::Kind::Array; }
  function TypeReflection (line 2445) | TypeReflection* unwrapArray()
  function getElementCount (line 2456) | size_t getElementCount()
  function getTotalArrayElementCount (line 2461) | size_t getTotalArrayElementCount()
  function TypeReflection (line 2476) | TypeReflection* getElementType()
  function getRowCount (line 2481) | unsigned getRowCount()
  function getColumnCount (line 2486) | unsigned getColumnCount()
  function ScalarType (line 2491) | ScalarType getScalarType()
  function TypeReflection (line 2496) | TypeReflection* getResourceResultType()
  function SlangResourceShape (line 2501) | SlangResourceShape getResourceShape()
  function SlangResourceAccess (line 2506) | SlangResourceAccess getResourceAccess()
  function getUserAttributeCount (line 2516) | unsigned int getUserAttributeCount()
  function UserAttribute (line 2520) | UserAttribute* getUserAttributeByIndex(unsigned int index)
  function UserAttribute (line 2524) | UserAttribute* findUserAttributeByName(char const* name)
  function SlangParameterCategoryIntegral (line 2530) | enum ParameterCategory : SlangParameterCategoryIntegral
  type Modifier (line 2907) | struct Modifier
  type VariableReflection (line 2915) | struct VariableReflection
  function getUserAttributeCount (line 2932) | unsigned int getUserAttributeCount()
  function UserAttribute (line 2936) | UserAttribute* getUserAttributeByIndex(unsigned int index)
  function UserAttribute (line 2940) | UserAttribute* findUserAttributeByName(SlangSession* session, char const...
  type VariableLayoutReflection (line 2946) | struct VariableLayoutReflection
  function TypeLayoutReflection (line 2963) | TypeLayoutReflection* getTypeLayout()
  function ParameterCategory (line 2968) | ParameterCategory getCategory()
  function getCategoryCount (line 2973) | unsigned int getCategoryCount()
  function ParameterCategory (line 2978) | ParameterCategory getCategoryByIndex(unsigned int index)
  function getOffset (line 2984) | size_t getOffset(SlangParameterCategory category = SLANG_PARAMETER_CATEG...
  function TypeReflection (line 2989) | TypeReflection* getType()
  function getBindingIndex (line 2994) | unsigned getBindingIndex()
  function getBindingSpace (line 2999) | unsigned getBindingSpace()
  function getBindingSpace (line 3004) | size_t getBindingSpace(SlangParameterCategory category)
  function getSemanticIndex (line 3014) | size_t getSemanticIndex()
  function SlangStage (line 3019) | SlangStage getStage()
  function VariableLayoutReflection (line 3024) | VariableLayoutReflection* getPendingDataLayout()
  type EntryPointReflection (line 3030) | struct EntryPointReflection
  function getParameterCount (line 3042) | unsigned getParameterCount()
  function VariableLayoutReflection (line 3047) | VariableLayoutReflection* getParameterByIndex(unsigned index)
  function SlangStage (line 3052) | SlangStage getStage()
  function getComputeThreadGroupSize (line 3057) | void getComputeThreadGroupSize(
  function usesAnySampleRateInput (line 3064) | bool usesAnySampleRateInput()
  function VariableLayoutReflection (line 3069) | VariableLayoutReflection* getVarLayout()
  function TypeLayoutReflection (line 3074) | TypeLayoutReflection* getTypeLayout()
  function VariableLayoutReflection (line 3079) | VariableLayoutReflection* getResultVarLayout()
  function hasDefaultConstantBuffer (line 3084) | bool hasDefaultConstantBuffer()
  type EntryPointReflection (line 3089) | typedef EntryPointReflection EntryPointLayout;
  function getIndex (line 3091) | struct TypeParameterReflection
  function getConstraintCount (line 3101) | unsigned getConstraintCount()
  function TypeReflection (line 3105) | TypeReflection* getConstraintByIndex(int index)
  function SlangLayoutRulesIntegral (line 3111) | enum class LayoutRules : SlangLayoutRulesIntegral
  type ProgramLayout (line 3116) | typedef struct ShaderReflection ProgramLayout;
  function getTypeParameterCount (line 3118) | struct ShaderReflection
  function TypeParameterReflection (line 3130) | TypeParameterReflection* getTypeParameterByIndex(unsigned index)
  function TypeParameterReflection (line 3135) | TypeParameterReflection* findTypeParameter(char const* name)
  function VariableLayoutReflection (line 3140) | VariableLayoutReflection* getParameterByIndex(unsigned index)
  function ProgramLayout (line 3145) | static ProgramLayout* get(SlangCompileRequest* request)
  function SlangUInt (line 3150) | SlangUInt getEntryPointCount()
  function EntryPointReflection (line 3155) | EntryPointReflection* getEntryPointByIndex(SlangUInt index)
  function SlangUInt (line 3160) | SlangUInt getGlobalConstantBufferBinding()
  function getGlobalConstantBufferSize (line 3165) | size_t getGlobalConstantBufferSize()
  function TypeReflection (line 3170) | TypeReflection* findTypeByName(const char* name)
  type CompileStdLibFlags (line 3226) | typedef uint32_t CompileStdLibFlags;
  type CompileStdLibFlag (line 3227) | struct CompileStdLibFlag
  type ISlangBlob (line 3235) | typedef ISlangBlob IBlob;
  type IComponentType (line 3237) | struct IComponentType
  type ITypeConformance (line 3238) | struct ITypeConformance
  type IGlobalSession (line 3239) | struct IGlobalSession
  type IModule (line 3240) | struct IModule
  type ISession (line 3241) | struct ISession
  type SessionDesc (line 3243) | struct SessionDesc
  type SpecializationArg (line 3244) | struct SpecializationArg
  type TargetDesc (line 3245) | struct TargetDesc
  function ISlangUnknown (line 3257) | struct IGlobalSession : public ISlangUnknown
  function ISlangUnknown (line 3457) | struct ICompileRequest : public ISlangUnknown
  type TargetDesc (line 4050) | struct TargetDesc
  type SessionFlags (line 4084) | typedef uint32_t SessionFlags;
  type PreprocessorMacroDesc (line 4100) | struct PreprocessorMacroDesc
  type SessionDesc (line 4106) | struct SessionDesc
  function ContainerType (line 4136) | enum class ContainerType
  function ISlangUnknown (line 4186) | struct ISession : public ISlangUnknown
  function ISlangUnknown (line 4393) | struct IComponentType : public ISlangUnknown
  type IEntryPoint (line 4539) | struct IEntryPoint
  function IComponentType (line 4546) | struct ITypeConformance : public IComponentType
  function namespace (line 4643) | namespace slang

FILE: Source/Plugin/Editor/AnimationEditor.cpp
  class AnimationEditor (line 13) | class AnimationEditor : public Widget
    type UniformBlock (line 16) | struct UniformBlock
    type BoneVertex (line 21) | struct BoneVertex
    method AnimationEditor (line 28) | AnimationEditor(Editor *editor) :
    method Tick (line 60) | virtual void Tick() override
    method UpdateVertexBuffer (line 207) | void UpdateVertexBuffer(std::vector<BoneVertex> &vertices, const Hiera...
    method DrawHierarchy (line 233) | void DrawHierarchy(Resource<ResourceType::Animation> *resource, const ...
    method CalculateBound (line 257) | void CalculateBound(Resource<ResourceType::Animation> *resource, const...
    method CalculateBoneTransform (line 279) | void CalculateBoneTransform(float time, Resource<ResourceType::Animati...
    method UpdateBuffer (line 303) | void UpdateBuffer(float time)
    method UpdateCamera (line 322) | void UpdateCamera(float width, float height)
    method Render (line 350) | void Render(uint32_t width, uint32_t height)
  function EXPORT_API (line 474) | EXPORT_API AnimationEditor *Create(Editor *editor, ImGuiContext *context)

FILE: Source/Plugin/Editor/Hierarchy.cpp
  class Hierarchy (line 12) | class Hierarchy : public Widget
    method Hierarchy (line 15) | Hierarchy(Editor *editor) :
    method Tick (line 22) | virtual void Tick() override
    method DrawNode (line 56) | void DrawNode(Node *node)
  function Hierarchy (line 148) | __declspec(dllexport) Hierarchy *Create(Editor *editor, ImGuiContext *co...
    method Hierarchy (line 15) | Hierarchy(Editor *editor) :
    method Tick (line 22) | virtual void Tick() override
    method DrawNode (line 56) | void DrawNode(Node *node)

FILE: Source/Plugin/Editor/Inspector.cpp
  class Inspector (line 14) | class Inspector : public Widget
    method Inspector (line 17) | Inspector(Editor *editor) :
    method Tick (line 24) | virtual void Tick() override
    method DrawNodeInspector (line 47) | void DrawNodeInspector(Node *node)
    method DrawRendererInspector (line 82) | void DrawRendererInspector()
  function EXPORT_API (line 200) | EXPORT_API Inspector *Create(Editor *editor, ImGuiContext *context)

FILE: Source/Plugin/Editor/MainMenu.cpp
  class MainMenu (line 15) | class MainMenu : public Widget
    method MainMenu (line 18) | MainMenu(Editor *editor) :
    method Tick (line 25) | virtual void Tick() override
  function EXPORT_API (line 105) | EXPORT_API MainMenu *Create(Editor *editor, ImGuiContext *context)

FILE: Source/Plugin/Editor/MaterialGraphEditor.cpp
  class MaterialGraphEditor (line 20) | class MaterialGraphEditor : public Widget
    method MaterialGraphEditor (line 23) | MaterialGraphEditor(Editor *editor) :
    method Tick (line 101) | virtual void Tick() override
    method SetMaterial (line 177) | void SetMaterial(Resource<ResourceType::Material> *resource, ResourceM...
    method DragDropResource (line 206) | void DragDropResource()
    method MenuBar (line 232) | void MenuBar()
    method PopupWindow (line 292) | void PopupWindow(Resource<ResourceType::Material> *resource)
    method EditMaterialNodePin (line 321) | void EditMaterialNodePin(const MaterialNodePin &pin)
    method DrawNodes (line 342) | void DrawNodes(Resource<ResourceType::Material> *resource)
    method HandleSelection (line 399) | void HandleSelection()
    method DrawEdges (line 417) | void DrawEdges(Resource<ResourceType::Material> *resource)
    method AddEdge (line 432) | void AddEdge(Resource<ResourceType::Material> *resource)
    method UpdateCamera (line 441) | void UpdateCamera()
    method Render (line 460) | void Render(Resource<ResourceType::Material> *resource)
    method Reset (line 526) | void Reset()
    method Update
Condensed preview — 546 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,979K chars).
[
  {
    "path": ".clang-format",
    "chars": 3082,
    "preview": "---\nLanguage:        Cpp\n# BasedOnStyle:  LLVM\nAccessModifierOffset: -2\nAlignAfterOpenBracket: Align\nAlignConsecutiveAss"
  },
  {
    "path": ".clang-tidy",
    "chars": 7276,
    "preview": "Checks: '-*,\n    misc-throw-by-value-catch-by-reference,\n    misc-misplaced-const,\n    misc-unconventional-assign-operat"
  },
  {
    "path": ".github/workflows/windows_dev.yml",
    "chars": 597,
    "preview": "name: Windows_dev\n\non:\n  pull_request:\n    types: [dev]\n  push:\n    branches: [dev]\n\njobs:\n  build:\n    runs-on: \"window"
  },
  {
    "path": ".github/workflows/windows_main.yml",
    "chars": 600,
    "preview": "name: Windows_main\n\non:\n  pull_request:\n    types: [main]\n  push:\n    branches: [main]\n\njobs:\n  build:\n    runs-on: \"win"
  },
  {
    "path": ".gitignore",
    "chars": 369,
    "preview": "# Prerequisites\n*.d\n\n# Compiled Object files\n*.slo\n*.lo\n*.o\n\n# Precompiled Headers\n*.gch\n*.pch\n\n# Compiled Dynamic libra"
  },
  {
    "path": ".gitmodules",
    "chars": 116,
    "preview": "[submodule \"Source/Dependencies\"]\n\tpath = Source/Dependencies\n\turl = https://github.com/Chaf-Libraries/Dependencies\n"
  },
  {
    "path": "Asset/Meta/README.md",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "Asset/MustacheTemplate/Reflection.mustache",
    "chars": 1908,
    "preview": "{{#Header}}\n{{&Include}}\n{{/Header}}\n\nnamespace Ilum_{{Hash}}\n{\nRTTR_REGISTRATION\n{\n    {{#Enum}}\n    rttr::registration"
  },
  {
    "path": "Asset/NRD_Data/Sample/blur_buffer.csv",
    "chars": 1493,
    "preview": "gViewToClip,\"[1.0000, 0.0000, 0.0000, 0.0000]\n[0.0000, 1.7778, 0.0000, 0.0000]\n[-0.0000, -0.0000, 1.0000, 1.0000]\n[0.00"
  },
  {
    "path": "Asset/NRD_Data/Sample/history_fix_buffer.csv",
    "chars": 1476,
    "preview": "gViewToClip,\"[1.0000, 0.0000, 0.0000, 0.0000]\n[0.0000, 1.7778, 0.0000, 0.0000]\n[-0.0000, -0.0000, 1.0000, 1.0000]\n[0.00"
  },
  {
    "path": "Asset/NRD_Data/Sample/post_blur_buffer.csv",
    "chars": 1495,
    "preview": "gViewToClip,gViewToWorld,gFrustum,gHitDistParams,gViewVectorWorld,gViewVectorWorldPrev,gInvScreenSize,gScreenSize,gInvR"
  },
  {
    "path": "Asset/NRD_Data/Sample/temporal_accumulate_buffer.csv",
    "chars": 2409,
    "preview": "gViewToClip,\"[1.0000, 0.0000, 0.0000, 0.0000]\n[0.0000, 1.7778, 0.0000, 0.0000]\n[-0.0000, -0.0000, 1.0000, 1.0000]\n[0.00"
  },
  {
    "path": "Asset/SPD/metals/Ag.eta.spd",
    "chars": 1120,
    "preview": "298.757050 1.519000\n302.400421 1.496000\n306.133759 1.432500\n309.960449 1.323000\n313.884003 1.142062\n317.908142 0.932000\n"
  },
  {
    "path": "Asset/SPD/metals/Ag.k.spd",
    "chars": 1120,
    "preview": "298.757050 1.080000\n302.400421 0.882000\n306.133759 0.761063\n309.960449 0.647000\n313.884003 0.550875\n317.908142 0.504000\n"
  },
  {
    "path": "Asset/SPD/metals/Al.eta.spd",
    "chars": 1120,
    "preview": "298.757050 0.273375\n302.400421 0.280000\n306.133759 0.286813\n309.960449 0.294000\n313.884003 0.301875\n317.908142 0.310000\n"
  },
  {
    "path": "Asset/SPD/metals/Al.k.spd",
    "chars": 1120,
    "preview": "298.757050 3.593750\n302.400421 3.640000\n306.133759 3.689375\n309.960449 3.740000\n313.884003 3.789375\n317.908142 3.840000\n"
  },
  {
    "path": "Asset/SPD/metals/AlAs.eta.spd",
    "chars": 1067,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for cubic AlAs\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of "
  },
  {
    "path": "Asset/SPD/metals/AlAs.k.spd",
    "chars": 1067,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for cubic AlAs\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of "
  },
  {
    "path": "Asset/SPD/metals/AlSb.eta.spd",
    "chars": 727,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for cubic AlSb\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of "
  },
  {
    "path": "Asset/SPD/metals/AlSb.k.spd",
    "chars": 727,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for cubic AlSb\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of "
  },
  {
    "path": "Asset/SPD/metals/Au.eta.spd",
    "chars": 1120,
    "preview": "298.757050 1.795000\n302.400421 1.812000\n306.133759 1.822625\n309.960449 1.830000\n313.884003 1.837125\n317.908142 1.840000\n"
  },
  {
    "path": "Asset/SPD/metals/Au.k.spd",
    "chars": 1120,
    "preview": "298.757050 1.920375\n302.400421 1.920000\n306.133759 1.918875\n309.960449 1.916000\n313.884003 1.911375\n317.908142 1.904000\n"
  },
  {
    "path": "Asset/SPD/metals/Be.eta.spd",
    "chars": 522,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for polycrystalline Be\n# ;  \n# ;  Concatenation of:\n# ;  \n# ;"
  },
  {
    "path": "Asset/SPD/metals/Be.k.spd",
    "chars": 522,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for polycrystalline Be\n# ;  \n# ;  Concatenation of:\n# ;  \n# ;"
  },
  {
    "path": "Asset/SPD/metals/Cr.eta.spd",
    "chars": 786,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Cr\n# ;  \n# ;  Concatenation of:\n# ;  \n# ;  Cr_llnl_cxro +"
  },
  {
    "path": "Asset/SPD/metals/Cr.k.spd",
    "chars": 786,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Cr\n# ;  \n# ;  Concatenation of:\n# ;  \n# ;  Cr_llnl_cxro +"
  },
  {
    "path": "Asset/SPD/metals/CsI.eta.spd",
    "chars": 1329,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for CsI\n# ;  \n# ;  Concatenation of:\n# ;  \n# ;  CsI_llnl_cxro"
  },
  {
    "path": "Asset/SPD/metals/CsI.k.spd",
    "chars": 1329,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for CsI\n# ;  \n# ;  Concatenation of:\n# ;  \n# ;  CsI_llnl_cxro"
  },
  {
    "path": "Asset/SPD/metals/Cu.eta.spd",
    "chars": 1120,
    "preview": "298.757050 1.400313\n302.400421 1.380000\n306.133759 1.358438\n309.960449 1.340000\n313.884003 1.329063\n317.908142 1.325000\n"
  },
  {
    "path": "Asset/SPD/metals/Cu.k.spd",
    "chars": 1120,
    "preview": "298.757050 1.662125\n302.400421 1.687000\n306.133759 1.703313\n309.960449 1.720000\n313.884003 1.744563\n317.908142 1.770000\n"
  },
  {
    "path": "Asset/SPD/metals/Cu2O.eta.spd",
    "chars": 470,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Cu2O\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Cu2O_llnl_cxro"
  },
  {
    "path": "Asset/SPD/metals/Cu2O.k.spd",
    "chars": 470,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Cu2O\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Cu2O_llnl_cxro"
  },
  {
    "path": "Asset/SPD/metals/CuO.eta.spd",
    "chars": 469,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for CuO\n# ;  \n# ;  Concatenation of:\n# ;  \n# ;  CuO_llnl_cxro"
  },
  {
    "path": "Asset/SPD/metals/CuO.k.spd",
    "chars": 469,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for CuO\n# ;  \n# ;  Concatenation of:\n# ;  \n# ;  CuO_llnl_cxro"
  },
  {
    "path": "Asset/SPD/metals/Hg.eta.spd",
    "chars": 501,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Hg\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Hg_llnl_cxro + H"
  },
  {
    "path": "Asset/SPD/metals/Hg.k.spd",
    "chars": 501,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Hg\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Hg_llnl_cxro + H"
  },
  {
    "path": "Asset/SPD/metals/HgTe.eta.spd",
    "chars": 3221,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for HgTe\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of Optica"
  },
  {
    "path": "Asset/SPD/metals/HgTe.k.spd",
    "chars": 3221,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for HgTe\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of Optica"
  },
  {
    "path": "Asset/SPD/metals/Ir.eta.spd",
    "chars": 781,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Ir\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Ir_llnl_cxro + I"
  },
  {
    "path": "Asset/SPD/metals/Ir.k.spd",
    "chars": 781,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Ir\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Ir_llnl_cxro + I"
  },
  {
    "path": "Asset/SPD/metals/K.eta.spd",
    "chars": 614,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for polycrystalline K\n# ; \n# ;   taken from:\n# ;\n# ;   'Handb"
  },
  {
    "path": "Asset/SPD/metals/K.k.spd",
    "chars": 614,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for polycrystalline K\n# ; \n# ;   taken from:\n# ;\n# ;   'Handb"
  },
  {
    "path": "Asset/SPD/metals/KBr.eta.spd",
    "chars": 1006,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for cubic KBr\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of O"
  },
  {
    "path": "Asset/SPD/metals/KBr.k.spd",
    "chars": 1006,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for cubic KBr\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of O"
  },
  {
    "path": "Asset/SPD/metals/KCl.eta.spd",
    "chars": 997,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for KCl\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of Optical"
  },
  {
    "path": "Asset/SPD/metals/KCl.k.spd",
    "chars": 997,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for KCl\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of Optical"
  },
  {
    "path": "Asset/SPD/metals/Li.eta.spd",
    "chars": 479,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Li\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of Optical "
  },
  {
    "path": "Asset/SPD/metals/Li.k.spd",
    "chars": 479,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Li\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of Optical "
  },
  {
    "path": "Asset/SPD/metals/MgO.eta.spd",
    "chars": 824,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for MgO\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  MgO_llnl_cxro +"
  },
  {
    "path": "Asset/SPD/metals/MgO.k.spd",
    "chars": 824,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for MgO\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  MgO_llnl_cxro +"
  },
  {
    "path": "Asset/SPD/metals/Mo.eta.spd",
    "chars": 779,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for \n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Mo_llnl_cxro + Mo_"
  },
  {
    "path": "Asset/SPD/metals/Mo.k.spd",
    "chars": 779,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for \n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Mo_llnl_cxro + Mo_"
  },
  {
    "path": "Asset/SPD/metals/NaCl.eta.spd",
    "chars": 898,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for NaCl\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of Optica"
  },
  {
    "path": "Asset/SPD/metals/NaCl.k.spd",
    "chars": 898,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for NaCl\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of Optica"
  },
  {
    "path": "Asset/SPD/metals/Nb.eta.spd",
    "chars": 741,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Nb\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Nb_llnl_cxro + N"
  },
  {
    "path": "Asset/SPD/metals/Nb.k.spd",
    "chars": 741,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Nb\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Nb_llnl_cxro + N"
  },
  {
    "path": "Asset/SPD/metals/Rh.eta.spd",
    "chars": 761,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Rh\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Rh_llnl_cxro + R"
  },
  {
    "path": "Asset/SPD/metals/Rh.k.spd",
    "chars": 761,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Rh\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Rh_llnl_cxro + R"
  },
  {
    "path": "Asset/SPD/metals/Se-e.eta.spd",
    "chars": 518,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Se, extraordinary ray\n# ; \n# ;   taken from:\n# ;\n# ;   'H"
  },
  {
    "path": "Asset/SPD/metals/Se-e.k.spd",
    "chars": 518,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Se, extraordinary ray\n# ; \n# ;   taken from:\n# ;\n# ;   'H"
  },
  {
    "path": "Asset/SPD/metals/Se.eta.spd",
    "chars": 553,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Se, ordinary ray\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbo"
  },
  {
    "path": "Asset/SPD/metals/Se.k.spd",
    "chars": 553,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Se, ordinary ray\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbo"
  },
  {
    "path": "Asset/SPD/metals/SiC.eta.spd",
    "chars": 756,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for crystalline SiC\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  SiC"
  },
  {
    "path": "Asset/SPD/metals/SiC.k.spd",
    "chars": 756,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for crystalline SiC\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  SiC"
  },
  {
    "path": "Asset/SPD/metals/SiO.eta.spd",
    "chars": 504,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for SiO\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  SiO_llnl_cxro +"
  },
  {
    "path": "Asset/SPD/metals/SiO.k.spd",
    "chars": 504,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for SiO\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  SiO_llnl_cxro +"
  },
  {
    "path": "Asset/SPD/metals/SnTe.eta.spd",
    "chars": 721,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for SnTe\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of Optica"
  },
  {
    "path": "Asset/SPD/metals/SnTe.k.spd",
    "chars": 721,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for SnTe\n# ; \n# ;   taken from:\n# ;\n# ;   'Handbook of Optica"
  },
  {
    "path": "Asset/SPD/metals/Ta.eta.spd",
    "chars": 661,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Ta\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Ta_llnl_cxro + T"
  },
  {
    "path": "Asset/SPD/metals/Ta.k.spd",
    "chars": 661,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for Ta\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  Ta_llnl_cxro + T"
  },
  {
    "path": "Asset/SPD/metals/Te-e.eta.spd",
    "chars": 1187,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for trigonal Te, extraordinary ray\n# ; \n# ;   taken from:\n# ;"
  },
  {
    "path": "Asset/SPD/metals/Te-e.k.spd",
    "chars": 1187,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for trigonal Te, extraordinary ray\n# ; \n# ;   taken from:\n# ;"
  },
  {
    "path": "Asset/SPD/metals/Te.eta.spd",
    "chars": 1181,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for trigonal Te,ordinary ray\n# ; \n# ;   taken from:\n# ;\n# ;  "
  },
  {
    "path": "Asset/SPD/metals/Te.k.spd",
    "chars": 1181,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for trigonal Te,ordinary ray\n# ; \n# ;   taken from:\n# ;\n# ;  "
  },
  {
    "path": "Asset/SPD/metals/ThF4.eta.spd",
    "chars": 1017,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for polycrystalline ThF4\n# ; \n# ;   taken from:\n# ;\n# ;   'Ha"
  },
  {
    "path": "Asset/SPD/metals/ThF4.k.spd",
    "chars": 1017,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for polycrystalline ThF4\n# ; \n# ;   taken from:\n# ;\n# ;   'Ha"
  },
  {
    "path": "Asset/SPD/metals/TiC.eta.spd",
    "chars": 344,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for TiC\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  TiC_llnl_cxro +"
  },
  {
    "path": "Asset/SPD/metals/TiC.k.spd",
    "chars": 344,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for TiC\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  TiC_llnl_cxro +"
  },
  {
    "path": "Asset/SPD/metals/TiN.eta.spd",
    "chars": 344,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for TiN\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  TiN_llnl_cxro +"
  },
  {
    "path": "Asset/SPD/metals/TiN.k.spd",
    "chars": 344,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for TiN\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  TiN_llnl_cxro +"
  },
  {
    "path": "Asset/SPD/metals/TiO2-e.eta.spd",
    "chars": 988,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for tetragonal TiO2, extraordinary ray\n# ; \n# ;   taken from:"
  },
  {
    "path": "Asset/SPD/metals/TiO2-e.k.spd",
    "chars": 988,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for tetragonal TiO2, extraordinary ray\n# ; \n# ;   taken from:"
  },
  {
    "path": "Asset/SPD/metals/TiO2.eta.spd",
    "chars": 932,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for tetragonal TiO2, ordinary ray\n# ;  \n# ;  Concatenation of"
  },
  {
    "path": "Asset/SPD/metals/TiO2.k.spd",
    "chars": 932,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for tetragonal TiO2, ordinary ray\n# ;  \n# ;  Concatenation of"
  },
  {
    "path": "Asset/SPD/metals/VC.eta.spd",
    "chars": 341,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for VC\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  VC_llnl_cxro + V"
  },
  {
    "path": "Asset/SPD/metals/VC.k.spd",
    "chars": 341,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for VC\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  VC_llnl_cxro + V"
  },
  {
    "path": "Asset/SPD/metals/VN.eta.spd",
    "chars": 341,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for VN\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  VN_llnl_cxro + V"
  },
  {
    "path": "Asset/SPD/metals/VN.k.spd",
    "chars": 341,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for VN\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  VN_llnl_cxro + V"
  },
  {
    "path": "Asset/SPD/metals/W.eta.spd",
    "chars": 1298,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for W\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  W_llnl_cxro + W_p"
  },
  {
    "path": "Asset/SPD/metals/W.k.spd",
    "chars": 1298,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for W\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  W_llnl_cxro + W_p"
  },
  {
    "path": "Asset/SPD/metals/a-C.eta.spd",
    "chars": 540,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for amorphous carbon\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  a-"
  },
  {
    "path": "Asset/SPD/metals/a-C.k.spd",
    "chars": 540,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for amorphous carbon\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  a-"
  },
  {
    "path": "Asset/SPD/metals/a-SiH.eta.spd",
    "chars": 487,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for a-Si:H, amorphous glow-discharge Si onto\n# ;  400 C subst"
  },
  {
    "path": "Asset/SPD/metals/a-SiH.k.spd",
    "chars": 487,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for a-Si:H, amorphous glow-discharge Si onto\n# ;  400 C subst"
  },
  {
    "path": "Asset/SPD/metals/d-C.eta.spd",
    "chars": 431,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for diamond\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  d-C_llnl_cx"
  },
  {
    "path": "Asset/SPD/metals/d-C.k.spd",
    "chars": 431,
    "preview": "# data from www.luxpop.com database\n# ;  Optical constants for diamond\n# ;  \n# ;  Concatenation of:\n# ;\n# ;  d-C_llnl_cx"
  },
  {
    "path": "Doc/Material.drawio",
    "chars": 4354,
    "preview": "<mxfile host=\"65bd71144e\">\n    <diagram id=\"Oj6RUKoLF9Hl1Nya2uuC\" name=\"第 1 页\">\n        <mxGraphModel dx=\"1064\" dy=\"674\""
  },
  {
    "path": "Doc/RHI.drawio",
    "chars": 5961,
    "preview": "<mxfile host=\"65bd71144e\">\n    <diagram id=\"qQwCbRc1wy9BN8YB_Oij\" name=\"第 1 页\">\n        <mxGraphModel dx=\"1064\" dy=\"674\""
  },
  {
    "path": "Doc/RenderGraph.drawio",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "Doc/Resource.drawio",
    "chars": 10536,
    "preview": "<mxfile host=\"65bd71144e\">\n    <diagram id=\"B0Vu0QsbAyju_w0uTxer\" name=\"第 1 页\">\n        <mxGraphModel dx=\"2317\" dy=\"944\""
  },
  {
    "path": "Doc/Scene.drawio",
    "chars": 8421,
    "preview": "<mxfile host=\"65bd71144e\">\n    <diagram id=\"DN1jI_-sQySN9qRA725S\" name=\"第 1 页\">\n        <mxGraphModel dx=\"1973\" dy=\"944\""
  },
  {
    "path": "Doc/Shader.drawio",
    "chars": 7809,
    "preview": "<mxfile host=\"65bd71144e\" pages=\"1\">\n    <diagram id=\"FqTtuIh2T_jkB8yKotZ9\" name=\"第 1 页\">\n        <mxGraphModel dx=\"1146"
  },
  {
    "path": "LICENSE.txt",
    "chars": 1070,
    "preview": "MIT License\n\nCopyright (c) 2021 Chaf-Graphics\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
  },
  {
    "path": "README.md",
    "chars": 4624,
    "preview": "# Ilum(WIP)\n\n[![Windows](https://github.com/Chaf-Libraries/Ilum/actions/workflows/windows_main.yml/badge.svg)](https://g"
  },
  {
    "path": "Source/Editor/Editor.cpp",
    "chars": 2205,
    "preview": "#include \"Editor.hpp\"\n#include \"ImGui/ImGuiContext.hpp\"\n#include \"Widget.hpp\"\n\n#include <Core/Plugin.hpp>\n#include <Scen"
  },
  {
    "path": "Source/Editor/Editor.hpp",
    "chars": 738,
    "preview": "#pragma once\n\n#include <Core/Core.hpp>\n\n#include <memory>\n#include <vector>\n\nnamespace Ilum\n{\nclass Window;\nclass RHICon"
  },
  {
    "path": "Source/Editor/ImGui/ImGuiContext.cpp",
    "chars": 25816,
    "preview": "#include \"ImGuiContext.hpp\"\n\n#include <Core/Path.hpp>\n#include <ShaderCompiler/ShaderCompiler.hpp>\n\n#include <imgui.h>\n#"
  },
  {
    "path": "Source/Editor/ImGui/ImGuiContext.hpp",
    "chars": 855,
    "preview": "#pragma once\n\n#include <RHI/RHIContext.hpp>\n\nnamespace Ilum\n{\nclass GuiContext\n{\n  public:\n\tGuiContext(RHIContext *conte"
  },
  {
    "path": "Source/Editor/Precompile.hpp",
    "chars": 39,
    "preview": "#pragma once\n\n#include <Core/Core.hpp>\n"
  },
  {
    "path": "Source/Editor/Widget.hpp",
    "chars": 471,
    "preview": "#pragma once\n\n#include <string>\n\nnamespace Ilum\n{\nclass Editor;\n\nclass Widget\n{\n  public:\n\tWidget(const std::string &nam"
  },
  {
    "path": "Source/Engine/Engine.cpp",
    "chars": 1721,
    "preview": "#include \"Engine.hpp\"\n\n#include <Core/Path.hpp>\n#include <Core/Window.hpp>\n#include <Editor/Editor.hpp>\n#include <RHI/RH"
  },
  {
    "path": "Source/Engine/Engine.hpp",
    "chars": 598,
    "preview": "#pragma once\n\n#include <Core/Time.hpp>\n\nnamespace Ilum\n{\nclass Window;\nclass RHIContext;\nclass Editor;\nclass ResourceMan"
  },
  {
    "path": "Source/Engine/Precompile.hpp",
    "chars": 38,
    "preview": "#pragma once\n\n#include <Core/Core.hpp>"
  },
  {
    "path": "Source/Engine/main.cpp",
    "chars": 175,
    "preview": "#include \"Engine.hpp\"\n\n#include <ShaderCompiler/ShaderCompiler.hpp> \n\nint main()\n{\n\tIlum::Engine engine;\n\t//Ilum::Shader"
  },
  {
    "path": "Source/External/dxc/inc/d3d12shader.h",
    "chars": 27161,
    "preview": "//////////////////////////////////////////////////////////////////////////////\n//\n//  Copyright (c) Microsoft Corporatio"
  },
  {
    "path": "Source/External/dxc/inc/dxcapi.h",
    "chars": 36971,
    "preview": "\n///////////////////////////////////////////////////////////////////////////////\n//                                     "
  },
  {
    "path": "Source/External/dxc/inc/dxcerrors.h",
    "chars": 1306,
    "preview": "///////////////////////////////////////////////////////////////////////////////\n//                                      "
  },
  {
    "path": "Source/External/dxc/inc/dxcisense.h",
    "chars": 39847,
    "preview": "///////////////////////////////////////////////////////////////////////////////\n//                                      "
  },
  {
    "path": "Source/External/imgui_tools/IconsFontAwesome/IconsFontAwesome5.h",
    "chars": 52345,
    "preview": "// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and"
  },
  {
    "path": "Source/External/imgui_tools/imgui_impl_glfw.cpp",
    "chars": 62235,
    "preview": "// dear imgui: Platform Backend for GLFW\n// This needs to be used along with a Renderer (e.g. OpenGL3, Vulkan, WebGPU..)"
  },
  {
    "path": "Source/External/imgui_tools/imgui_impl_glfw.h",
    "chars": 3627,
    "preview": "// dear imgui: Platform Backend for GLFW\n// This needs to be used along with a Renderer (e.g. OpenGL3, Vulkan, WebGPU..)"
  },
  {
    "path": "Source/External/imgui_tools/imguizmo/GraphEditor.cpp",
    "chars": 44890,
    "preview": "// https://github.com/CedricGuillemet/ImGuizmo\n// v 1.89 WIP\n//\n// The MIT License(MIT)\n//\n// Copyright(c) 2021 Cedric G"
  },
  {
    "path": "Source/External/imgui_tools/imguizmo/GraphEditor.h",
    "chars": 5951,
    "preview": "// https://github.com/CedricGuillemet/ImGuizmo\n// v 1.89 WIP\n//\n// The MIT License(MIT)\n//\n// Copyright(c) 2021 Cedric G"
  },
  {
    "path": "Source/External/imgui_tools/imguizmo/ImCurveEdit.cpp",
    "chars": 15665,
    "preview": "// https://github.com/CedricGuillemet/ImGuizmo\n// v 1.89 WIP\n//\n// The MIT License(MIT)\n//\n// Copyright(c) 2021 Cedric G"
  },
  {
    "path": "Source/External/imgui_tools/imguizmo/ImCurveEdit.h",
    "chars": 2805,
    "preview": "// https://github.com/CedricGuillemet/ImGuizmo\n// v 1.89 WIP\n//\n// The MIT License(MIT)\n//\n// Copyright(c) 2021 Cedric G"
  },
  {
    "path": "Source/External/imgui_tools/imguizmo/ImGradient.cpp",
    "chars": 4458,
    "preview": "// https://github.com/CedricGuillemet/ImGuizmo\n// v 1.89 WIP\n//\n// The MIT License(MIT)\n//\n// Copyright(c) 2021 Cedric G"
  },
  {
    "path": "Source/External/imgui_tools/imguizmo/ImGradient.h",
    "chars": 1633,
    "preview": "// https://github.com/CedricGuillemet/ImGuizmo\n// v 1.89 WIP\n//\n// The MIT License(MIT)\n//\n// Copyright(c) 2021 Cedric G"
  },
  {
    "path": "Source/External/imgui_tools/imguizmo/ImGuizmo.cpp",
    "chars": 114243,
    "preview": "// https://github.com/CedricGuillemet/ImGuizmo\n// v 1.89 WIP\n//\n// The MIT License(MIT)\n//\n// Copyright(c) 2021 Cedric G"
  },
  {
    "path": "Source/External/imgui_tools/imguizmo/ImGuizmo.h",
    "chars": 11606,
    "preview": "// https://github.com/CedricGuillemet/ImGuizmo\n// v 1.89 WIP\n//\n// The MIT License(MIT)\n//\n// Copyright(c) 2021 Cedric G"
  },
  {
    "path": "Source/External/imgui_tools/imguizmo/ImSequencer.cpp",
    "chars": 30680,
    "preview": "// https://github.com/CedricGuillemet/ImGuizmo\n// v 1.89 WIP\n//\n// The MIT License(MIT)\n//\n// Copyright(c) 2021 Cedric G"
  },
  {
    "path": "Source/External/imgui_tools/imguizmo/ImSequencer.h",
    "chars": 3115,
    "preview": "// https://github.com/CedricGuillemet/ImGuizmo\n// v 1.89 WIP\n//\n// The MIT License(MIT)\n//\n// Copyright(c) 2021 Cedric G"
  },
  {
    "path": "Source/External/imgui_tools/imguizmo/ImZoomSlider.h",
    "chars": 10440,
    "preview": "// https://github.com/CedricGuillemet/ImGuizmo\n// v 1.89 WIP\n//\n// The MIT License(MIT)\n//\n// Copyright(c) 2021 Cedric G"
  },
  {
    "path": "Source/External/imgui_tools/imnodes/imnodes.cpp",
    "chars": 114226,
    "preview": "// the structure of this file:\n//\n// [SECTION] bezier curve helpers\n// [SECTION] draw list helper\n// [SECTION] ui state "
  },
  {
    "path": "Source/External/imgui_tools/imnodes/imnodes.h",
    "chars": 18234,
    "preview": "#pragma once\n\n#include <stddef.h>\n#include <imgui.h>\n\n#ifdef IMNODES_USER_CONFIG\n#include IMNODES_USER_CONFIG\n#endif\n\n#i"
  },
  {
    "path": "Source/External/imgui_tools/imnodes/imnodes_internal.h",
    "chars": 12908,
    "preview": "#pragma once\n\n#define IMGUI_DEFINE_MATH_OPERATORS\n#include \"imnodes.h\"\n\n#include <imgui.h>\n#include <imgui_internal.h>\n\n"
  },
  {
    "path": "Source/External/imgui_tools/implot/implot.cpp",
    "chars": 265937,
    "preview": "// MIT License\n\n// Copyright (c) 2022 Evan Pezent\n\n// Permission is hereby granted, free of charge, to any person obtain"
  },
  {
    "path": "Source/External/imgui_tools/implot/implot.h",
    "chars": 78768,
    "preview": "// MIT License\n\n// Copyright (c) 2022 Evan Pezent\n\n// Permission is hereby granted, free of charge, to any person obtain"
  },
  {
    "path": "Source/External/imgui_tools/implot/implot_demo.cpp",
    "chars": 112220,
    "preview": "// MIT License\n\n// Copyright (c) 2022 Evan Pezent\n\n// Permission is hereby granted, free of charge, to any person obtain"
  },
  {
    "path": "Source/External/imgui_tools/implot/implot_internal.h",
    "chars": 67227,
    "preview": "// MIT License\n\n// Copyright (c) 2022 Evan Pezent\n\n// Permission is hereby granted, free of charge, to any person obtain"
  },
  {
    "path": "Source/External/imgui_tools/implot/implot_items.cpp",
    "chars": 118965,
    "preview": "// MIT License\n\n// Copyright (c) 2020 Evan Pezent\n\n// Permission is hereby granted, free of charge, to any person obtain"
  },
  {
    "path": "Source/External/imgui_tools/xmake.lua",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "Source/External/mustache/mustache.hpp",
    "chars": 41327,
    "preview": "/*\n * Boost Software License - Version 1.0\n *\n * Mustache\n * Copyright 2015-2020 Kevin Wojniak\n *\n * Permission is hereb"
  },
  {
    "path": "Source/External/slang/docs/64bit-type-support.md",
    "chars": 7721,
    "preview": "Slang 64-bit Type Support\n=========================\n\n## Summary\n\n* Not all targets support 64 bit types, or all 64 bit t"
  },
  {
    "path": "Source/External/slang/docs/README.md",
    "chars": 2228,
    "preview": "Slang Documentation\n===================\n\nThis directory contains documentation for the Slang system.\nSome of the documen"
  },
  {
    "path": "Source/External/slang/docs/api-users-guide.md",
    "chars": 22236,
    "preview": "Slang API User's Guide\n======================\n\nThis document is intended to guide user's who want to integrate Slang int"
  },
  {
    "path": "Source/External/slang/docs/building.md",
    "chars": 9337,
    "preview": "# Building Slang From Source\n\n## Get the Source Code \n\nClone [this](https://github.com/shader-slang/slang) repository, a"
  },
  {
    "path": "Source/External/slang/docs/command-line-slangc.md",
    "chars": 14498,
    "preview": "Using the `slangc` Command-Line Compiler\n========================================\n\nThe `slangc` command-line tool is use"
  },
  {
    "path": "Source/External/slang/docs/cpu-target.md",
    "chars": 35690,
    "preview": "Slang CPU Target Support\n========================\n\nSlang has preliminary support for producing CPU source and binaries. "
  },
  {
    "path": "Source/External/slang/docs/cuda-target.md",
    "chars": 19561,
    "preview": "Slang CUDA Target Support\n=========================\n\nSlang has preliminary support for producing CUDA source, and PTX bi"
  },
  {
    "path": "Source/External/slang/docs/doc-system.md",
    "chars": 3567,
    "preview": "Slang Doc System \n================\n\nSlang contains a rudimentary documentation generation system. The mechanism used to "
  },
  {
    "path": "Source/External/slang/docs/faq.md",
    "chars": 2919,
    "preview": "Frequently Asked Questions\n==========================\n\n### How did this project start?\n\nThe Slang project forked off fro"
  },
  {
    "path": "Source/External/slang/docs/language-guide.md",
    "chars": 10351,
    "preview": "Slang Language Guide\n====================\n\nThis document will try to describe the main characteristis of the Slang langu"
  },
  {
    "path": "Source/External/slang/docs/layout.md",
    "chars": 12722,
    "preview": "Parameter Layout Rules\n======================\n\nAn important goal of the Slang project is that the rules for how shader p"
  },
  {
    "path": "Source/External/slang/docs/linking.md",
    "chars": 11113,
    "preview": "Slang Linking\n=============\n\nThe Slang feature around libraries and linking are a *work in progress*. Future versions of"
  },
  {
    "path": "Source/External/slang/docs/nvapi-support.md",
    "chars": 5571,
    "preview": "NVAPI Support\n=============\n\nSlang provides support for [NVAPI](https://developer.nvidia.com/nvapi) in several ways\n\n* S"
  },
  {
    "path": "Source/External/slang/docs/repro.md",
    "chars": 11304,
    "preview": "Slang Compilation Reproduction\n==============================\n\nSlang has both API and command line support for reproduci"
  },
  {
    "path": "Source/External/slang/docs/shader-playground.md",
    "chars": 1175,
    "preview": "Using Slang on Shader Playground\n================================\n\nA fast and simple way to try out Slang is by using th"
  },
  {
    "path": "Source/External/slang/docs/stdlib-doc.md",
    "chars": 1491246,
    "preview": "--------------------------------------------------------------------------------\n# `__BuiltinArithmeticType.init`\n\n## Si"
  },
  {
    "path": "Source/External/slang/docs/target-compatibility.md",
    "chars": 14971,
    "preview": "Slang Target Compatibility \n==========================\n\nShader Model (SM) numbers are D3D Shader Model versions, unless "
  },
  {
    "path": "Source/External/slang/docs/wave-intrinsics.md",
    "chars": 13145,
    "preview": "Wave Intrinsics\n===============\n\nSlang has support for Wave intrinsics introduced to HLSL in [SM6.0](https://docs.micros"
  },
  {
    "path": "Source/External/slang/prelude/slang-cpp-host-prelude.h",
    "chars": 801,
    "preview": "#ifndef SLANG_CPP_HOST_PRELUDE_H\n#define SLANG_CPP_HOST_PRELUDE_H\n\n#include <cstdio>\n#include <cmath>\n#include <cstring>"
  },
  {
    "path": "Source/External/slang/prelude/slang-cpp-prelude.h",
    "chars": 8639,
    "preview": "#ifndef SLANG_CPP_PRELUDE_H\n#define SLANG_CPP_PRELUDE_H\n\n// Because the signiture of isnan, isfinite, and is isinf chang"
  },
  {
    "path": "Source/External/slang/prelude/slang-cpp-scalar-intrinsics.h",
    "chars": 16413,
    "preview": "#ifndef SLANG_PRELUDE_SCALAR_INTRINSICS_H\n#define SLANG_PRELUDE_SCALAR_INTRINSICS_H\n\n#if !defined(SLANG_LLVM) && SLANG_P"
  },
  {
    "path": "Source/External/slang/prelude/slang-cpp-types.h",
    "chars": 39164,
    "preview": "#ifndef SLANG_PRELUDE_CPP_TYPES_H\n#define SLANG_PRELUDE_CPP_TYPES_H\n\n#ifndef SLANG_PRELUDE_ASSERT\n#   ifdef SLANG_PRELUD"
  },
  {
    "path": "Source/External/slang/prelude/slang-cuda-prelude.h",
    "chars": 71135,
    "preview": "// Define SLANG_CUDA_ENABLE_HALF to use the cuda_fp16 include to add half support. \n// For this to work NVRTC needs to h"
  },
  {
    "path": "Source/External/slang/prelude/slang-hlsl-prelude.h",
    "chars": 94,
    "preview": "#ifdef SLANG_HLSL_ENABLE_NVAPI\n#include \"nvHLSLExtns.h\"\n#endif\n#pragma warning(disable: 3557)\n"
  },
  {
    "path": "Source/External/slang/prelude/slang-llvm.h",
    "chars": 12337,
    "preview": "#ifndef SLANG_LLVM_H\n#define SLANG_LLVM_H\n\n// TODO(JS): \n// Disable exception declspecs, as not supported on LLVM withou"
  },
  {
    "path": "Source/External/slang/slang-com-helper.h",
    "chars": 4973,
    "preview": "#ifndef SLANG_COM_HELPER_H\n#define SLANG_COM_HELPER_H\n\n/** \\file slang-com-helper.h\n*/\n\n#include \"slang.h\"\n#include <ato"
  },
  {
    "path": "Source/External/slang/slang-com-ptr.h",
    "chars": 5093,
    "preview": "#ifndef SLANG_COM_PTR_H\n#define SLANG_COM_PTR_H\n\n#include \"slang-com-helper.h\"\n\n#include <assert.h>\n#include <cstddef>\n\n"
  },
  {
    "path": "Source/External/slang/slang-gfx.h",
    "chars": 88852,
    "preview": "// render.h\n#pragma once\n\n#include <float.h>\n#include <assert.h>\n\n#include \"slang.h\"\n#include \"slang-com-ptr.h\"\n\n\n#if de"
  },
  {
    "path": "Source/External/slang/slang-tag-version.h",
    "chars": 38,
    "preview": "#define SLANG_TAG_VERSION \"v0.24.45\" \n"
  },
  {
    "path": "Source/External/slang/slang.h",
    "chars": 197724,
    "preview": "#ifndef SLANG_H\n#define SLANG_H\n\n/** \\file slang.h\n\nThe Slang API provides services to compile, reflect, and specialize "
  },
  {
    "path": "Source/External/xmake.lua",
    "chars": 2031,
    "preview": "add_requires(\"cereal\")\nadd_requires(\"glfw\", {configs = {shared = true}})\nadd_requires(\"spdlog\")\nadd_requires(\"stb\")\nadd_"
  },
  {
    "path": "Source/Plugin/Editor/AnimationEditor.cpp",
    "chars": 16348,
    "preview": "#include <Editor/Editor.hpp>\n#include <Editor/Widget.hpp>\n#include <Renderer/Renderer.hpp>\n#include <Resource/Resource/A"
  },
  {
    "path": "Source/Plugin/Editor/Console.cpp",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "Source/Plugin/Editor/Hierarchy.cpp",
    "chars": 3398,
    "preview": "#include <Scene/Components/AllComponents.hpp>\n#include <Editor/Editor.hpp>\n#include <Editor/Widget.hpp>\n#include <Render"
  },
  {
    "path": "Source/Plugin/Editor/Inspector.cpp",
    "chars": 6084,
    "preview": "#include <Editor/Editor.hpp>\n#include <Editor/Widget.hpp>\n#include <RHI/RHIContext.hpp>\n#include <RenderGraph/RenderGrap"
  },
  {
    "path": "Source/Plugin/Editor/MainMenu.cpp",
    "chars": 3073,
    "preview": "#include <Scene/Components/AllComponents.hpp>\n#include <Editor/Editor.hpp>\n#include <Editor/Widget.hpp>\n#include <Render"
  },
  {
    "path": "Source/Plugin/Editor/MaterialGraphEditor.cpp",
    "chars": 19522,
    "preview": "#include <Editor/Editor.hpp>\n#include <Editor/Widget.hpp>\n#include <Material/MaterialData.hpp>\n#include <Material/Materi"
  },
  {
    "path": "Source/Plugin/Editor/MeshEditor.cpp",
    "chars": 18263,
    "preview": "#include <Editor/Editor.hpp>\n#include <Editor/Widget.hpp>\n#include <Geometry/Mesh/Mesh.hpp>\n#include <Geometry/MeshProce"
  },
  {
    "path": "Source/Plugin/Editor/RenderGraphEditor.cpp",
    "chars": 11466,
    "preview": "#include <Editor/Editor.hpp>\n#include <Editor/Widget.hpp>\n#include <RenderGraph/RenderGraph.hpp>\n#include <RenderGraph/R"
  },
  {
    "path": "Source/Plugin/Editor/ResourceBrowser.cpp",
    "chars": 5931,
    "preview": "#include <Editor/Editor.hpp>\n#include <Editor/Widget.hpp>\n#include <Renderer/Renderer.hpp>\n#include <Resource/Resource.h"
  },
  {
    "path": "Source/Plugin/Editor/SceneView.cpp",
    "chars": 19255,
    "preview": "#pragma once\n\n#include <Core/Window.hpp>\n#include <Editor/Editor.hpp>\n#include <Editor/Widget.hpp>\n#include <RenderGraph"
  },
  {
    "path": "Source/Plugin/Editor/ShaderToy.cpp",
    "chars": 750,
    "preview": "#include <Editor/Editor.hpp>\n#include <Editor/Widget.hpp>\n#include <Renderer/Renderer.hpp>\n\n#include <imgui.h>\n#include "
  },
  {
    "path": "Source/Plugin/Editor/xmake.lua",
    "chars": 1110,
    "preview": "function add_editor_plugin(name, deps, pkgs)\n    target(string.format(\"Editor.%s\", name))\n\n    set_kind(\"shared\")\n    se"
  },
  {
    "path": "Source/Plugin/Geometry/Parameterization/MinimumSurface.cpp",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "Source/Plugin/Geometry/Parameterization/Tutte.cpp",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "Source/Plugin/Geometry/Subdivision/Loop.cpp",
    "chars": 4952,
    "preview": "#include <Geometry/MeshProcess.hpp>\n\nusing namespace Ilum;\n\nclass LoopSubdivision : public Subdivision\n{\n  public:\n\tvirt"
  },
  {
    "path": "Source/Plugin/Geometry/xmake.lua",
    "chars": 448,
    "preview": "function add_geometry_plugin(category, name)\n    target(string.format(\"Geometry.%s.%s\", category, name))\n\n    set_kind(\""
  },
  {
    "path": "Source/Plugin/Importer/Assimp.cpp",
    "chars": 34685,
    "preview": "#include <Resource/Importer.hpp>\n#include <Resource/Resource/Animation.hpp>\n#include <Resource/Resource/Material.hpp>\n#i"
  },
  {
    "path": "Source/Plugin/Importer/DDS.cpp",
    "chars": 18864,
    "preview": "#include <RHI/RHITexture.hpp>\n#include <Resource/Importer.hpp>\n#include <Resource/Resource/Texture2D.hpp>\n#include <Reso"
  },
  {
    "path": "Source/Plugin/Importer/STB.cpp",
    "chars": 2526,
    "preview": "#include <RHI/RHITexture.hpp>\n#include <Resource/Importer.hpp>\n#include <Resource/Resource/Texture2D.hpp>\n#include <Reso"
  },
  {
    "path": "Source/Plugin/Importer/xmake.lua",
    "chars": 559,
    "preview": "function add_importer_plugin(name, deps, pkgs)\n    target(string.format(\"Importer.%s\", name))\n\n    set_kind(\"shared\")\n  "
  },
  {
    "path": "Source/Plugin/MaterialNode/BSDF/ConductorMaterial.cpp",
    "chars": 3447,
    "preview": "#include \"IMaterialNode.hpp\"\n#include \"Utils/SPDLoader.hpp\"\n\nusing namespace Ilum;\n\nclass ConductorMaterial : public Mat"
  },
  {
    "path": "Source/Plugin/MaterialNode/BSDF/DielectricMaterial.cpp",
    "chars": 2787,
    "preview": "#include \"IMaterialNode.hpp\"\n\nusing namespace Ilum;\n\nclass DielectricMaterial : public MaterialNode<DielectricMaterial>\n"
  },
  {
    "path": "Source/Plugin/MaterialNode/BSDF/DiffuseMaterial.cpp",
    "chars": 1770,
    "preview": "#include \"IMaterialNode.hpp\"\n\nusing namespace Ilum;\n\nclass DiffuseMaterial : public MaterialNode<DiffuseMaterial>\n{\n  pu"
  },
  {
    "path": "Source/Plugin/MaterialNode/BSDF/DisneyMaterial.cpp",
    "chars": 6196,
    "preview": "#include \"IMaterialNode.hpp\"\n\nusing namespace Ilum;\n\nclass DisneyMaterial : public MaterialNode<DisneyMaterial>\n{\n  publ"
  },
  {
    "path": "Source/Plugin/MaterialNode/BSDF/MaskedMaterial.cpp",
    "chars": 2408,
    "preview": "#include \"IMaterialNode.hpp\"\n\nusing namespace Ilum;\n\nclass MaskedMaterial : public MaterialNode<MaskedMaterial>\n{\n  publ"
  },
  {
    "path": "Source/Plugin/MaterialNode/BSDF/MixMaterial.cpp",
    "chars": 2741,
    "preview": "#include \"IMaterialNode.hpp\"\n\nusing namespace Ilum;\n\nclass MixMaterial : public MaterialNode<MixMaterial>\n{\n  public:\n\tv"
  },
  {
    "path": "Source/Plugin/MaterialNode/BSDF/PrincipledMaterial.cpp",
    "chars": 6212,
    "preview": "#include \"IMaterialNode.hpp\"\n\nusing namespace Ilum;\n\nclass PrincipledMaterial : public MaterialNode<PrincipledMaterial>\n"
  }
]

// ... and 346 more files (download for full content)

About this extraction

This page contains the full source code of the Chaf-Libraries/Ilum GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 546 files (5.4 MB), approximately 1.5M tokens, and a symbol index with 3779 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!