gitextract_oar47vq7/ ├── .gitignore ├── CMakeLists.txt ├── LICENSE ├── README.md ├── compile.md ├── src/ │ ├── CMakeLists.txt │ └── engine/ │ ├── CMakeLists.txt │ ├── Vec3.h │ ├── group/ │ │ ├── DynamicPolytope.cpp │ │ ├── DynamicPolytope.h │ │ ├── Group.cpp │ │ ├── Group.h │ │ ├── Polytope.cpp │ │ ├── Polytope.h │ │ ├── Scene.cpp │ │ └── Scene.h │ ├── lighting/ │ │ ├── DirectionalLight.cpp │ │ ├── DirectionalLight.h │ │ ├── Light.cpp │ │ ├── Light.h │ │ ├── Material.h │ │ ├── PBRMaterial.h │ │ ├── PhongMaterial.h │ │ ├── PointLight.cpp │ │ └── PointLight.h │ ├── model/ │ │ ├── Model.cpp │ │ └── Model.h │ ├── opengl/ │ │ ├── buffer/ │ │ │ ├── Buffer.h │ │ │ ├── FrameBuffer.cpp │ │ │ ├── FrameBuffer.h │ │ │ ├── IndexBuffer.cpp │ │ │ ├── IndexBuffer.h │ │ │ ├── MultiSampleRenderBuffer.cpp │ │ │ ├── MultiSampleRenderBuffer.h │ │ │ ├── RenderBuffer.cpp │ │ │ ├── RenderBuffer.h │ │ │ ├── VertexArray.cpp │ │ │ ├── VertexArray.h │ │ │ ├── VertexBuffer.cpp │ │ │ └── VertexBuffer.h │ │ ├── glsl/ │ │ │ ├── BlinnPhong.frag │ │ │ ├── BlinnPhong.vert │ │ │ ├── Default.frag │ │ │ ├── Default.vert │ │ │ ├── HDR.frag │ │ │ ├── HDR.vert │ │ │ ├── PBR.frag │ │ │ ├── PBR.vert │ │ │ ├── Selection.frag │ │ │ ├── Selection.vert │ │ │ ├── SimpleDepth.frag │ │ │ ├── SimpleDepth.vert │ │ │ ├── SkyBox.frag │ │ │ ├── SkyBox.vert │ │ │ ├── TexturedQuad.frag │ │ │ └── TexturedQuad.vert │ │ └── shader/ │ │ ├── Shader.cpp │ │ └── Shader.h │ ├── ptr.h │ ├── renderer/ │ │ ├── Camera.cpp │ │ ├── Camera.h │ │ ├── FPSCamera.cpp │ │ ├── FPSCamera.h │ │ ├── FrameCapturer.h │ │ ├── MouseRayCasting.cpp │ │ ├── MouseRayCasting.h │ │ ├── Renderer.cpp │ │ ├── Renderer.h │ │ ├── SkyBox.cpp │ │ ├── SkyBox.h │ │ ├── TrackballCamera.cpp │ │ └── TrackballCamera.h │ ├── shapes/ │ │ ├── Cube.cpp │ │ ├── Cube.h │ │ ├── Shape.cpp │ │ ├── Shape.h │ │ ├── Sphere.cpp │ │ └── Sphere.h │ └── texture/ │ ├── ColorBufferTexture.cpp │ ├── ColorBufferTexture.h │ ├── CubeMapTexture.cpp │ ├── CubeMapTexture.h │ ├── DepthTexture.cpp │ ├── DepthTexture.h │ ├── MultiSampleTexture.cpp │ ├── MultiSampleTexture.h │ ├── Texture.cpp │ ├── Texture.h │ └── vendor/ │ └── stb_image.h ├── test/ │ ├── CMakeLists.txt │ ├── testCube/ │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ └── src/ │ │ └── main.cpp │ ├── testHDRI/ │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ └── src/ │ │ ├── ImguiStyles.h │ │ └── main.cpp │ ├── testImGuiGLFW/ │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── imgui.ini │ │ └── src/ │ │ ├── ImguiStyles.h │ │ └── main.cpp │ ├── testLighting/ │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ └── src/ │ │ └── main.cpp │ ├── testModelPBR/ │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ └── src/ │ │ ├── ImguiStyles.h │ │ └── main.cpp │ ├── testPBR/ │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ └── src/ │ │ └── main.cpp │ ├── testPointCloud/ │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ └── src/ │ │ ├── ImguiStyles.h │ │ └── main.cpp │ └── third_party/ │ └── imgui/ │ ├── .editorconfig │ ├── .gitattributes │ ├── .gitignore │ ├── LICENSE.txt │ ├── backends/ │ │ ├── imgui_impl_glfw.cpp │ │ ├── imgui_impl_glfw.h │ │ ├── imgui_impl_opengl3.cpp │ │ ├── imgui_impl_opengl3.h │ │ ├── imgui_impl_opengl3_loader.h │ │ ├── imgui_impl_vulkan.cpp │ │ ├── imgui_impl_vulkan.h │ │ └── vulkan/ │ │ ├── generate_spv.sh │ │ ├── glsl_shader.frag │ │ └── glsl_shader.vert │ ├── imconfig.h │ ├── imgui.cpp │ ├── imgui.h │ ├── imgui_demo.cpp │ ├── imgui_draw.cpp │ ├── imgui_internal.h │ ├── imgui_tables.cpp │ ├── imgui_widgets.cpp │ ├── imstb_rectpack.h │ ├── imstb_textedit.h │ ├── imstb_truetype.h │ └── misc/ │ ├── README.txt │ ├── cpp/ │ │ ├── README.txt │ │ ├── imgui_stdlib.cpp │ │ └── imgui_stdlib.h │ ├── debuggers/ │ │ ├── README.txt │ │ ├── imgui.gdb │ │ ├── imgui.natstepfilter │ │ └── imgui.natvis │ ├── fonts/ │ │ └── binary_to_compressed_c.cpp │ ├── freetype/ │ │ ├── README.md │ │ ├── imgui_freetype.cpp │ │ └── imgui_freetype.h │ └── single_file/ │ └── imgui_single_file.h └── third_party/ ├── CMakeLists.txt └── glm/ ├── CMakeLists.txt ├── common.hpp ├── detail/ │ ├── _features.hpp │ ├── _fixes.hpp │ ├── _noise.hpp │ ├── _swizzle.hpp │ ├── _swizzle_func.hpp │ ├── _vectorize.hpp │ ├── compute_common.hpp │ ├── compute_vector_relational.hpp │ ├── func_common.inl │ ├── func_common_simd.inl │ ├── func_exponential.inl │ ├── func_exponential_simd.inl │ ├── func_geometric.inl │ ├── func_geometric_simd.inl │ ├── func_integer.inl │ ├── func_integer_simd.inl │ ├── func_matrix.inl │ ├── func_matrix_simd.inl │ ├── func_packing.inl │ ├── func_packing_simd.inl │ ├── func_trigonometric.inl │ ├── func_trigonometric_simd.inl │ ├── func_vector_relational.inl │ ├── func_vector_relational_simd.inl │ ├── glm.cpp │ ├── qualifier.hpp │ ├── setup.hpp │ ├── type_float.hpp │ ├── type_half.hpp │ ├── type_half.inl │ ├── type_mat2x2.hpp │ ├── type_mat2x2.inl │ ├── type_mat2x3.hpp │ ├── type_mat2x3.inl │ ├── type_mat2x4.hpp │ ├── type_mat2x4.inl │ ├── type_mat3x2.hpp │ ├── type_mat3x2.inl │ ├── type_mat3x3.hpp │ ├── type_mat3x3.inl │ ├── type_mat3x4.hpp │ ├── type_mat3x4.inl │ ├── type_mat4x2.hpp │ ├── type_mat4x2.inl │ ├── type_mat4x3.hpp │ ├── type_mat4x3.inl │ ├── type_mat4x4.hpp │ ├── type_mat4x4.inl │ ├── type_mat4x4_simd.inl │ ├── type_quat.hpp │ ├── type_quat.inl │ ├── type_quat_simd.inl │ ├── type_vec1.hpp │ ├── type_vec1.inl │ ├── type_vec2.hpp │ ├── type_vec2.inl │ ├── type_vec3.hpp │ ├── type_vec3.inl │ ├── type_vec4.hpp │ ├── type_vec4.inl │ └── type_vec4_simd.inl ├── exponential.hpp ├── ext/ │ ├── matrix_clip_space.hpp │ ├── matrix_clip_space.inl │ ├── matrix_common.hpp │ ├── matrix_common.inl │ ├── matrix_double2x2.hpp │ ├── matrix_double2x2_precision.hpp │ ├── matrix_double2x3.hpp │ ├── matrix_double2x3_precision.hpp │ ├── matrix_double2x4.hpp │ ├── matrix_double2x4_precision.hpp │ ├── matrix_double3x2.hpp │ ├── matrix_double3x2_precision.hpp │ ├── matrix_double3x3.hpp │ ├── matrix_double3x3_precision.hpp │ ├── matrix_double3x4.hpp │ ├── matrix_double3x4_precision.hpp │ ├── matrix_double4x2.hpp │ ├── matrix_double4x2_precision.hpp │ ├── matrix_double4x3.hpp │ ├── matrix_double4x3_precision.hpp │ ├── matrix_double4x4.hpp │ ├── matrix_double4x4_precision.hpp │ ├── matrix_float2x2.hpp │ ├── matrix_float2x2_precision.hpp │ ├── matrix_float2x3.hpp │ ├── matrix_float2x3_precision.hpp │ ├── matrix_float2x4.hpp │ ├── matrix_float2x4_precision.hpp │ ├── matrix_float3x2.hpp │ ├── matrix_float3x2_precision.hpp │ ├── matrix_float3x3.hpp │ ├── matrix_float3x3_precision.hpp │ ├── matrix_float3x4.hpp │ ├── matrix_float3x4_precision.hpp │ ├── matrix_float4x2.hpp │ ├── matrix_float4x2_precision.hpp │ ├── matrix_float4x3.hpp │ ├── matrix_float4x3_precision.hpp │ ├── matrix_float4x4.hpp │ ├── matrix_float4x4_precision.hpp │ ├── matrix_int2x2.hpp │ ├── matrix_int2x2_sized.hpp │ ├── matrix_int2x3.hpp │ ├── matrix_int2x3_sized.hpp │ ├── matrix_int2x4.hpp │ ├── matrix_int2x4_sized.hpp │ ├── matrix_int3x2.hpp │ ├── matrix_int3x2_sized.hpp │ ├── matrix_int3x3.hpp │ ├── matrix_int3x3_sized.hpp │ ├── matrix_int3x4.hpp │ ├── matrix_int3x4_sized.hpp │ ├── matrix_int4x2.hpp │ ├── matrix_int4x2_sized.hpp │ ├── matrix_int4x3.hpp │ ├── matrix_int4x3_sized.hpp │ ├── matrix_int4x4.hpp │ ├── matrix_int4x4_sized.hpp │ ├── matrix_projection.hpp │ ├── matrix_projection.inl │ ├── matrix_relational.hpp │ ├── matrix_relational.inl │ ├── matrix_transform.hpp │ ├── matrix_transform.inl │ ├── matrix_uint2x2.hpp │ ├── matrix_uint2x2_sized.hpp │ ├── matrix_uint2x3.hpp │ ├── matrix_uint2x3_sized.hpp │ ├── matrix_uint2x4.hpp │ ├── matrix_uint2x4_sized.hpp │ ├── matrix_uint3x2.hpp │ ├── matrix_uint3x2_sized.hpp │ ├── matrix_uint3x3.hpp │ ├── matrix_uint3x3_sized.hpp │ ├── matrix_uint3x4.hpp │ ├── matrix_uint3x4_sized.hpp │ ├── matrix_uint4x2.hpp │ ├── matrix_uint4x2_sized.hpp │ ├── matrix_uint4x3.hpp │ ├── matrix_uint4x3_sized.hpp │ ├── matrix_uint4x4.hpp │ ├── matrix_uint4x4_sized.hpp │ ├── quaternion_common.hpp │ ├── quaternion_common.inl │ ├── quaternion_common_simd.inl │ ├── quaternion_double.hpp │ ├── quaternion_double_precision.hpp │ ├── quaternion_exponential.hpp │ ├── quaternion_exponential.inl │ ├── quaternion_float.hpp │ ├── quaternion_float_precision.hpp │ ├── quaternion_geometric.hpp │ ├── quaternion_geometric.inl │ ├── quaternion_relational.hpp │ ├── quaternion_relational.inl │ ├── quaternion_transform.hpp │ ├── quaternion_transform.inl │ ├── quaternion_trigonometric.hpp │ ├── quaternion_trigonometric.inl │ ├── scalar_common.hpp │ ├── scalar_common.inl │ ├── scalar_constants.hpp │ ├── scalar_constants.inl │ ├── scalar_int_sized.hpp │ ├── scalar_integer.hpp │ ├── scalar_integer.inl │ ├── scalar_packing.hpp │ ├── scalar_packing.inl │ ├── scalar_relational.hpp │ ├── scalar_relational.inl │ ├── scalar_uint_sized.hpp │ ├── scalar_ulp.hpp │ ├── scalar_ulp.inl │ ├── vector_bool1.hpp │ ├── vector_bool1_precision.hpp │ ├── vector_bool2.hpp │ ├── vector_bool2_precision.hpp │ ├── vector_bool3.hpp │ ├── vector_bool3_precision.hpp │ ├── vector_bool4.hpp │ ├── vector_bool4_precision.hpp │ ├── vector_common.hpp │ ├── vector_common.inl │ ├── vector_double1.hpp │ ├── vector_double1_precision.hpp │ ├── vector_double2.hpp │ ├── vector_double2_precision.hpp │ ├── vector_double3.hpp │ ├── vector_double3_precision.hpp │ ├── vector_double4.hpp │ ├── vector_double4_precision.hpp │ ├── vector_float1.hpp │ ├── vector_float1_precision.hpp │ ├── vector_float2.hpp │ ├── vector_float2_precision.hpp │ ├── vector_float3.hpp │ ├── vector_float3_precision.hpp │ ├── vector_float4.hpp │ ├── vector_float4_precision.hpp │ ├── vector_int1.hpp │ ├── vector_int1_sized.hpp │ ├── vector_int2.hpp │ ├── vector_int2_sized.hpp │ ├── vector_int3.hpp │ ├── vector_int3_sized.hpp │ ├── vector_int4.hpp │ ├── vector_int4_sized.hpp │ ├── vector_integer.hpp │ ├── vector_integer.inl │ ├── vector_packing.hpp │ ├── vector_packing.inl │ ├── vector_relational.hpp │ ├── vector_relational.inl │ ├── vector_uint1.hpp │ ├── vector_uint1_sized.hpp │ ├── vector_uint2.hpp │ ├── vector_uint2_sized.hpp │ ├── vector_uint3.hpp │ ├── vector_uint3_sized.hpp │ ├── vector_uint4.hpp │ ├── vector_uint4_sized.hpp │ ├── vector_ulp.hpp │ └── vector_ulp.inl ├── ext.hpp ├── fwd.hpp ├── geometric.hpp ├── glm.hpp ├── gtc/ │ ├── bitfield.hpp │ ├── bitfield.inl │ ├── color_space.hpp │ ├── color_space.inl │ ├── constants.hpp │ ├── constants.inl │ ├── epsilon.hpp │ ├── epsilon.inl │ ├── integer.hpp │ ├── integer.inl │ ├── matrix_access.hpp │ ├── matrix_access.inl │ ├── matrix_integer.hpp │ ├── matrix_inverse.hpp │ ├── matrix_inverse.inl │ ├── matrix_transform.hpp │ ├── matrix_transform.inl │ ├── noise.hpp │ ├── noise.inl │ ├── packing.hpp │ ├── packing.inl │ ├── quaternion.hpp │ ├── quaternion.inl │ ├── quaternion_simd.inl │ ├── random.hpp │ ├── random.inl │ ├── reciprocal.hpp │ ├── reciprocal.inl │ ├── round.hpp │ ├── round.inl │ ├── type_aligned.hpp │ ├── type_precision.hpp │ ├── type_precision.inl │ ├── type_ptr.hpp │ ├── type_ptr.inl │ ├── ulp.hpp │ ├── ulp.inl │ └── vec1.hpp ├── gtx/ │ ├── associated_min_max.hpp │ ├── associated_min_max.inl │ ├── bit.hpp │ ├── bit.inl │ ├── closest_point.hpp │ ├── closest_point.inl │ ├── color_encoding.hpp │ ├── color_encoding.inl │ ├── color_space.hpp │ ├── color_space.inl │ ├── color_space_YCoCg.hpp │ ├── color_space_YCoCg.inl │ ├── common.hpp │ ├── common.inl │ ├── compatibility.hpp │ ├── compatibility.inl │ ├── component_wise.hpp │ ├── component_wise.inl │ ├── dual_quaternion.hpp │ ├── dual_quaternion.inl │ ├── easing.hpp │ ├── easing.inl │ ├── euler_angles.hpp │ ├── euler_angles.inl │ ├── extend.hpp │ ├── extend.inl │ ├── extended_min_max.hpp │ ├── extended_min_max.inl │ ├── exterior_product.hpp │ ├── exterior_product.inl │ ├── fast_exponential.hpp │ ├── fast_exponential.inl │ ├── fast_square_root.hpp │ ├── fast_square_root.inl │ ├── fast_trigonometry.hpp │ ├── fast_trigonometry.inl │ ├── float_notmalize.inl │ ├── functions.hpp │ ├── functions.inl │ ├── gradient_paint.hpp │ ├── gradient_paint.inl │ ├── handed_coordinate_space.hpp │ ├── handed_coordinate_space.inl │ ├── hash.hpp │ ├── hash.inl │ ├── integer.hpp │ ├── integer.inl │ ├── intersect.hpp │ ├── intersect.inl │ ├── io.hpp │ ├── io.inl │ ├── log_base.hpp │ ├── log_base.inl │ ├── matrix_cross_product.hpp │ ├── matrix_cross_product.inl │ ├── matrix_decompose.hpp │ ├── matrix_decompose.inl │ ├── matrix_factorisation.hpp │ ├── matrix_factorisation.inl │ ├── matrix_interpolation.hpp │ ├── matrix_interpolation.inl │ ├── matrix_major_storage.hpp │ ├── matrix_major_storage.inl │ ├── matrix_operation.hpp │ ├── matrix_operation.inl │ ├── matrix_query.hpp │ ├── matrix_query.inl │ ├── matrix_transform_2d.hpp │ ├── matrix_transform_2d.inl │ ├── mixed_product.hpp │ ├── mixed_product.inl │ ├── norm.hpp │ ├── norm.inl │ ├── normal.hpp │ ├── normal.inl │ ├── normalize_dot.hpp │ ├── normalize_dot.inl │ ├── number_precision.hpp │ ├── number_precision.inl │ ├── optimum_pow.hpp │ ├── optimum_pow.inl │ ├── orthonormalize.hpp │ ├── orthonormalize.inl │ ├── perpendicular.hpp │ ├── perpendicular.inl │ ├── polar_coordinates.hpp │ ├── polar_coordinates.inl │ ├── projection.hpp │ ├── projection.inl │ ├── quaternion.hpp │ ├── quaternion.inl │ ├── range.hpp │ ├── raw_data.hpp │ ├── raw_data.inl │ ├── rotate_normalized_axis.hpp │ ├── rotate_normalized_axis.inl │ ├── rotate_vector.hpp │ ├── rotate_vector.inl │ ├── scalar_multiplication.hpp │ ├── scalar_relational.hpp │ ├── scalar_relational.inl │ ├── spline.hpp │ ├── spline.inl │ ├── std_based_type.hpp │ ├── std_based_type.inl │ ├── string_cast.hpp │ ├── string_cast.inl │ ├── texture.hpp │ ├── texture.inl │ ├── transform.hpp │ ├── transform.inl │ ├── transform2.hpp │ ├── transform2.inl │ ├── type_aligned.hpp │ ├── type_aligned.inl │ ├── type_trait.hpp │ ├── type_trait.inl │ ├── vec_swizzle.hpp │ ├── vector_angle.hpp │ ├── vector_angle.inl │ ├── vector_query.hpp │ ├── vector_query.inl │ ├── wrap.hpp │ └── wrap.inl ├── integer.hpp ├── mat2x2.hpp ├── mat2x3.hpp ├── mat2x4.hpp ├── mat3x2.hpp ├── mat3x3.hpp ├── mat3x4.hpp ├── mat4x2.hpp ├── mat4x3.hpp ├── mat4x4.hpp ├── matrix.hpp ├── packing.hpp ├── simd/ │ ├── common.h │ ├── exponential.h │ ├── geometric.h │ ├── integer.h │ ├── matrix.h │ ├── neon.h │ ├── packing.h │ ├── platform.h │ ├── trigonometric.h │ └── vector_relational.h ├── trigonometric.hpp ├── vec2.hpp ├── vec3.hpp ├── vec4.hpp └── vector_relational.hpp