Skip to content

Commit 8af45e6

Browse files
committed
Initial commit
Initial commit
0 parents  commit 8af45e6

File tree

2,726 files changed

+1110230
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,726 files changed

+1110230
-0
lines changed

.gitattributes

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Set the default behavior, in case people don't have core.autocrlf set.
2+
* text=auto
3+
4+
# Explicitly declare text files you want to always be normalized and converted
5+
# to native line endings on checkout.
6+
*.c text
7+
*.cpp text
8+
*.h text
9+
*.inl text
10+
*.txt text
11+
12+
# Declare files that will always have CRLF line endings on checkout.
13+
*.sln text eol=crlf
14+
*.vcxproj text eol=crlf
15+
*.vcxproj.filters text eol=crlf
16+
17+
# Denote all files that are truly binary and should not be modified.
18+
*.tga binary
19+
*.jpg binary
20+
*.png binary

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
.vs
2+
.idea
3+
Binary/*
4+
External/*
5+
cmake-build-*
6+

CMakeLists.txt

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#////////////////////////////////////////////////////////////////////////////////////////////////////
2+
#// Copyright (c) 2019 - 2022 RacoonStudios
3+
#//
4+
#// Permission is hereby granted, free of charge, to any person obtaining a copy of this
5+
#// software and associated documentation files (the "Software"), to deal in the Software
6+
#// without restriction, including without limitation the rights to use, copy, modify, merge,
7+
#// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
8+
#// to whom the Software is furnished to do so, subject to the following conditions:
9+
#//
10+
#// The above copyright notice and this permission notice shall be included in all copies or
11+
#// substantial portions of the Software.
12+
#//
13+
#// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
14+
#// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
15+
#// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
16+
#// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
17+
#// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18+
#// DEALINGS IN THE SOFTWARE.
19+
#////////////////////////////////////////////////////////////////////////////////////////////////////
20+
21+
##################################################
22+
## CMake
23+
##################################################
24+
cmake_minimum_required(VERSION 3.20.0)
25+
26+
##################################################
27+
## Global options
28+
##################################################
29+
set(CMAKE_CXX_STANDARD 20)
30+
set(CMAKE_C_STANDARD 11)
31+
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
32+
#set(CMAKE_UNITY_BUILD TRUE)
33+
34+
##################################################
35+
## Project
36+
##################################################
37+
project(RacoonEngine)
38+
39+
##################################################
40+
## Includes
41+
##################################################
42+
include(cmake/PAL.cmake)
43+
include(cmake/Utils.cmake)
44+
include(cmake/Platform.cmake)
45+
include(cmake/Externals.cmake)
46+
include(cmake/Modules/GetGitRevisionDescription.cmake)
47+
48+
##################################################
49+
## Prerequisites
50+
##################################################
51+
52+
set(PL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin/${PL_TARGET_ARCHBITSIZE}")
53+
set(PL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib/${PL_TARGET_ARCHBITSIZE}")
54+
set(PL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include")
55+
set(PL_DOC_DIR "${CMAKE_INSTALL_PREFIX}/docs")
56+
set(PL_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
57+
58+
find_library(STD_CPP_FS stdc++fs)
59+
find_package(Qt5 COMPONENTS Core Widgets REQUIRED)
60+
#find_package(LibClang)
61+
find_package(LLVM REQUIRED CONFIG)
62+
include(cmake/Config.cmake)
63+
include(cmake/Build.cmake)
64+
include(cmake/Project.cmake)
65+
include(cmake/Target.cmake)
66+
67+
68+
pl_split()
69+
pl_message("RacoonEngine Build")
70+
pl_newline()
71+
pl_message("Version:\t${PL_PROJECT_NAME} ${PL_PROJECT_VERSION_MAJOR}.${PL_PROJECT_VERSION_MINOR}.${PL_PROJECT_VERSION_PATCH}-${PL_PROJECT_VERSION_SUFFIX} (${PL_PROJECT_VERSION_RELEASE})")
72+
pl_message("Platform:\t${PL_SUPPORTED_PLATFORMS} ${PL_TARGET_ARCHBITSIZE}")
73+
pl_message("Compiler:\t${CMAKE_CXX_COMPILER_ID}")
74+
pl_newline()
75+
pl_print_configuration()
76+
pl_newline()
77+
pl_split()
78+
79+
##################################################
80+
## Target
81+
##################################################
82+
add_subdirectory(Engine)
83+
add_subdirectory(Tutorial)
84+
#add_subdirectory(Documentation)

Documentation/screen00.png

3.59 MB
Loading

Documentation/screen01.png

2.13 MB
Loading

Engine/CMakeLists.txt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#////////////////////////////////////////////////////////////////////////////////////////////////////
2+
#// Copyright (c) 2019 - 2022 RacoonStudios
3+
#//
4+
#// Permission is hereby granted, free of charge, to any person obtaining a copy of this
5+
#// software and associated documentation files (the "Software"), to deal in the Software
6+
#// without restriction, including without limitation the rights to use, copy, modify, merge,
7+
#// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
8+
#// to whom the Software is furnished to do so, subject to the following conditions:
9+
#//
10+
#// The above copyright notice and this permission notice shall be included in all copies or
11+
#// substantial portions of the Software.
12+
#//
13+
#// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
14+
#// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
15+
#// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
16+
#// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
17+
#// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18+
#// DEALINGS IN THE SOFTWARE.
19+
#////////////////////////////////////////////////////////////////////////////////////////////////////
20+
21+
################################################################################
22+
# Current package
23+
################################################################################
24+
pl_add_subdirectory(Source)
25+
pl_add_subdirectory(Samples)
26+
pl_add_subdirectory(Tools)

Engine/Samples/CMakeLists.txt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#////////////////////////////////////////////////////////////////////////////////////////////////////
2+
#// Copyright (c) 2019 - 2022 RacoonStudios
3+
#//
4+
#// Permission is hereby granted, free of charge, to any person obtaining a copy of this
5+
#// software and associated documentation files (the "Software"), to deal in the Software
6+
#// without restriction, including without limitation the rights to use, copy, modify, merge,
7+
#// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
8+
#// to whom the Software is furnished to do so, subject to the following conditions:
9+
#//
10+
#// The above copyright notice and this permission notice shall be included in all copies or
11+
#// substantial portions of the Software.
12+
#//
13+
#// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
14+
#// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
15+
#// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
16+
#// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
17+
#// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18+
#// DEALINGS IN THE SOFTWARE.
19+
#////////////////////////////////////////////////////////////////////////////////////////////////////
20+
21+
################################################################################
22+
# Current package
23+
################################################################################
24+
pl_add_subdirectory(Examples)
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#////////////////////////////////////////////////////////////////////////////////////////////////////
2+
#// Copyright (c) 2021 RacoonStudios
3+
#//
4+
#// Permission is hereby granted, free of charge, to any person obtaining a copy of this
5+
#// software and associated documentation files (the "Software"), to deal in the Software
6+
#// without restriction, including without limitation the rights to use, copy, modify, merge,
7+
#// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
8+
#// to whom the Software is furnished to do so, subject to the following conditions:
9+
#//
10+
#// The above copyright notice and this permission notice shall be included in all copies or
11+
#// substantial portions of the Software.
12+
#//
13+
#// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
14+
#// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
15+
#// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
16+
#// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
17+
#// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18+
#// DEALINGS IN THE SOFTWARE.
19+
#////////////////////////////////////////////////////////////////////////////////////////////////////
20+
21+
22+
##################################################
23+
## Project
24+
##################################################
25+
pl_add_target(
26+
NAME Examples EXECUTABLE
27+
NAMESPACE RE
28+
FILES_CMAKE
29+
${CMAKE_CURRENT_SOURCE_DIR}/Examples_files.cmake
30+
${CMAKE_CURRENT_SOURCE_DIR}/Examples_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
31+
PLATFORM_INCLUDE_FILES
32+
${CMAKE_CURRENT_SOURCE_DIR}/Examples_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
33+
INCLUDE_DIRECTORIES
34+
PUBLIC
35+
${PL_CONFIG_FILE_LOCATION}
36+
${CMAKE_CURRENT_SOURCE_DIR}/Public
37+
${CMAKE_CURRENT_SOURCE_DIR}/Private
38+
/usr/include/dbus-1.0
39+
/usr/lib/dbus-1.0/include
40+
BUILD_DEPENDENCIES
41+
PUBLIC
42+
RECore
43+
RERHI
44+
#RERHIOpenGLStatic
45+
#RERHIVulkanStatic
46+
RERenderer
47+
RERendererToolkit
48+
REInput
49+
External::physfs
50+
#EXTERNAL_DEPENDENCIES
51+
#PUBLIC
52+
RUNTIME_DEPENDENCIES
53+
PUBLIC
54+
External::zlib
55+
External::rapidjson
56+
External::mojoshader
57+
External::crunch
58+
External::ies
59+
External::assimp
60+
External::meshoptimizer
61+
External::mikktspace
62+
COMPILE_DEFINITIONS
63+
PUBLIC
64+
${${PAL_PLATFORM_NAME_UPPERCASE}_COMPILE_DEFS}
65+
${PAL_PLATFORM_NAME_UPPERCASE}
66+
RENDERER
67+
RHI_OPENGL
68+
RHI_VULKAN
69+
EXAMPLES_MIMALLOC
70+
SHARED_LIBRARIES
71+
#RHI_OPENGL_GLSLTOSPIRV
72+
TARGET_PROPERTIES
73+
-fPIC
74+
)
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
////////////////////////////////////////////////////////////////////////////////////////////////////
2+
// Copyright (c) 2019 - 2022 RacoonStudios
3+
//
4+
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
5+
// software and associated documentation files (the "Software"), to deal in the Software
6+
// without restriction, including without limitation the rights to use, copy, modify, merge,
7+
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
8+
// to whom the Software is furnished to do so, subject to the following conditions:
9+
//
10+
// The above copyright notice and this permission notice shall be included in all copies or
11+
// substantial portions of the Software.
12+
//
13+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
14+
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
15+
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
16+
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
17+
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18+
// DEALINGS IN THE SOFTWARE.
19+
////////////////////////////////////////////////////////////////////////////////////////////////////
20+
21+
22+
// Amalgamated/unity build
23+
24+
// Recommended example order
25+
26+
// Basics
27+
#include "Private/Basics/Triangle/Triangle.cpp"
28+
#include "Private/Basics/IndirectBuffer/IndirectBuffer.cpp"
29+
#include "Private/Basics/Queries/Queries.cpp"
30+
#include "Private/Basics/VertexBuffer/VertexBuffer.cpp"
31+
#include "Private/Basics/Texture/Texture.cpp"
32+
#include "Private/Basics/CubeTexture/CubeTexture.cpp"
33+
#include "Private/Basics/RenderToTexture/RenderToTexture.cpp"
34+
#include "Private/Basics/MultipleRenderTargets/MultipleRenderTargets.cpp"
35+
#ifndef __ANDROID__
36+
#include "Private/Basics/MultipleSwapChains/MultipleSwapChains.cpp"
37+
#endif
38+
#include "Private/Basics/Instancing/Instancing.cpp"
39+
#include "Private/Basics/GeometryShader/GeometryShader.cpp"
40+
#include "Private/Basics/TessellationShader/TessellationShader.cpp"
41+
#include "Private/Basics/ComputeShader/ComputeShader.cpp"
42+
#include "Private/Basics/MeshShader/MeshShader.cpp"
43+
44+
// Advanced
45+
#include "Private/Advanced/Gpgpu/Gpgpu.cpp"
46+
#include "Private/Advanced/InstancedCubes/CubeRendererDrawInstanced/BatchDrawInstanced.cpp"
47+
#include "Private/Advanced/InstancedCubes/CubeRendererDrawInstanced/CubeRendererDrawInstanced.cpp"
48+
#include "Private/Advanced/InstancedCubes/CubeRendererInstancedArrays/BatchInstancedArrays.cpp"
49+
#include "Private/Advanced/InstancedCubes/CubeRendererInstancedArrays/CubeRendererInstancedArrays.cpp"
50+
#include "Private/Advanced/InstancedCubes/InstancedCubes.cpp"
51+
#include "Private/Advanced/IcosahedronTessellation/IcosahedronTessellation.cpp"
52+
53+
// Renderer
54+
#ifdef RENDERER
55+
#ifdef RENDERER_IMGUI
56+
#include "Private/Renderer/ImGuiExampleSelector/ImGuiExampleSelector.cpp"
57+
#endif
58+
#include "Private/Renderer/Mesh/Mesh.cpp"
59+
#include "Private/Renderer/Compositor/Compositor.cpp"
60+
#include "Private/Renderer/Compositor/CompositorInstancePass.cpp"
61+
#include "Private/Renderer/Compositor/CompositorPassFactory.cpp"
62+
#include "Private/Renderer/Scene/Scene.cpp"
63+
#include "Private/Renderer/Scene/FreeCameraController.cpp"
64+
#ifdef RENDERER_OPENVR
65+
#include "Private/Renderer/Scene/VrController.cpp"
66+
#endif
67+
#endif
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
2+
set(FILES
3+
Private/Main.cpp
4+
Private/ExampleRunner.cpp
5+
#Private/Framework/ApplicationImplSdl2.cpp
6+
Private/Framework/ExampleBase.cpp
7+
Private/Framework/IApplication.cpp
8+
Private/Framework/IApplicationRenderer.cpp
9+
Private/Framework/IApplicationRhi.cpp
10+
11+
Private/Basics/Texture/Texture.cpp
12+
Private/Basics/GeometryShader/GeometryShader.cpp
13+
Private/Basics/ComputeShader/ComputeShader.cpp
14+
Private/Basics/CubeTexture/CubeTexture.cpp
15+
Private/Basics/IndirectBuffer/IndirectBuffer.cpp
16+
Private/Basics/Instancing/Instancing.cpp
17+
Private/Basics/MeshShader/MeshShader.cpp
18+
Private/Basics/MultipleRenderTargets/MultipleRenderTargets.cpp
19+
Private/Basics/MultipleSwapChains/MultipleSwapChains.cpp
20+
Private/Basics/Queries/Queries.cpp
21+
Private/Basics/RenderToTexture/RenderToTexture.cpp
22+
Private/Basics/EnhancedRenderToTexture/RenderToTexture.cpp
23+
Private/Basics/TessellationShader/TessellationShader.cpp
24+
Private/Basics/Triangle/Triangle.cpp
25+
Private/Basics/VertexBuffer/VertexBuffer.cpp
26+
27+
Private/Advanced/Gpgpu/Gpgpu.cpp
28+
Private/Advanced/IcosahedronTessellation/IcosahedronTessellation.cpp
29+
Private/Advanced/InstancedCubes/InstancedCubes.cpp
30+
Private/Advanced/InstancedCubes/CubeRendererDrawInstanced/BatchDrawInstanced.cpp
31+
Private/Advanced/InstancedCubes/CubeRendererDrawInstanced/CubeRendererDrawInstanced.cpp
32+
Private/Advanced/InstancedCubes/CubeRendererInstancedArrays/BatchInstancedArrays.cpp
33+
Private/Advanced/InstancedCubes/CubeRendererInstancedArrays/CubeRendererInstancedArrays.cpp
34+
35+
Private/Renderer/Mesh/Mesh.cpp
36+
Private/Renderer/Scene/FreeCameraController.cpp
37+
Private/Renderer/Scene/Scene.cpp
38+
Private/Renderer/Scene/VrController.cpp
39+
Private/Renderer/Compositor/CompositorPassFactory.cpp
40+
Private/Renderer/Compositor/Compositor.cpp
41+
Private/Renderer/Compositor/CompositorInstancePass.cpp
42+
Private/Renderer/ImGuiExampleSelector/ImGuiExampleSelector.cpp
43+
Private/Renderer/Gui/Gui.cpp
44+
Private/Renderer/Gui/SceneView.cpp
45+
Private/Renderer/Gui/ImGuizmo.cpp
46+
)

0 commit comments

Comments
 (0)