Adding skeleton
This commit is contained in:
+244
@@ -0,0 +1,244 @@
|
||||
# BasedOnStyle: LLVM
|
||||
AccessModifierOffset: -2
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignArrayOfStructures: None
|
||||
AlignConsecutiveAssignments:
|
||||
Enabled: false
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCompound: false
|
||||
AlignFunctionPointers: false
|
||||
PadOperators: true
|
||||
AlignConsecutiveBitFields:
|
||||
Enabled: false
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCompound: false
|
||||
AlignFunctionPointers: false
|
||||
PadOperators: false
|
||||
AlignConsecutiveDeclarations:
|
||||
Enabled: false
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCompound: false
|
||||
AlignFunctionPointers: false
|
||||
PadOperators: false
|
||||
AlignConsecutiveMacros:
|
||||
Enabled: false
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCompound: false
|
||||
AlignFunctionPointers: false
|
||||
PadOperators: false
|
||||
AlignConsecutiveShortCaseStatements:
|
||||
Enabled: false
|
||||
AcrossEmptyLines: false
|
||||
AcrossComments: false
|
||||
AlignCaseColons: false
|
||||
AlignEscapedNewlines: Right
|
||||
AlignOperands: Align
|
||||
AlignTrailingComments:
|
||||
Kind: Always
|
||||
OverEmptyLines: 0
|
||||
AllowAllArgumentsOnNextLine: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowBreakBeforeNoexceptSpecifier: Never
|
||||
AllowShortBlocksOnASingleLine: Never
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortCompoundRequirementOnASingleLine: true
|
||||
AllowShortEnumsOnASingleLine: true
|
||||
AllowShortFunctionsOnASingleLine: All
|
||||
AllowShortIfStatementsOnASingleLine: Never
|
||||
AllowShortLambdasOnASingleLine: All
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
AlwaysBreakTemplateDeclarations: MultiLine
|
||||
AttributeMacros:
|
||||
- __capability
|
||||
BinPackArguments: true
|
||||
BinPackParameters: true
|
||||
BitFieldColonSpacing: Both
|
||||
BraceWrapping:
|
||||
AfterCaseLabel: false
|
||||
AfterClass: false
|
||||
AfterControlStatement: Never
|
||||
AfterEnum: false
|
||||
AfterExternBlock: false
|
||||
AfterFunction: false
|
||||
AfterNamespace: false
|
||||
AfterObjCDeclaration: false
|
||||
AfterStruct: false
|
||||
AfterUnion: false
|
||||
BeforeCatch: false
|
||||
BeforeElse: false
|
||||
BeforeLambdaBody: false
|
||||
BeforeWhile: false
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: true
|
||||
SplitEmptyRecord: true
|
||||
SplitEmptyNamespace: true
|
||||
BreakAdjacentStringLiterals: true
|
||||
BreakAfterAttributes: Leave
|
||||
BreakAfterJavaFieldAnnotations: false
|
||||
BreakArrays: true
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeConceptDeclarations: Always
|
||||
BreakBeforeBraces: Attach
|
||||
BreakBeforeInlineASMColon: OnlyMultiline
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializers: BeforeColon
|
||||
BreakInheritanceList: BeforeColon
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 120
|
||||
CommentPragmas: '^ IWYU pragma:'
|
||||
CompactNamespaces: false
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: true
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false
|
||||
EmptyLineAfterAccessModifier: Never
|
||||
EmptyLineBeforeAccessModifier: LogicalBlock
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
FixNamespaceComments: true
|
||||
ForEachMacros:
|
||||
- foreach
|
||||
- Q_FOREACH
|
||||
- BOOST_FOREACH
|
||||
IfMacros:
|
||||
- KJ_IF_MAYBE
|
||||
IncludeBlocks: Preserve
|
||||
IncludeCategories:
|
||||
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||
Priority: 2
|
||||
SortPriority: 0
|
||||
CaseSensitive: false
|
||||
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
|
||||
Priority: 3
|
||||
SortPriority: 0
|
||||
CaseSensitive: false
|
||||
- Regex: '.*'
|
||||
Priority: 1
|
||||
SortPriority: 0
|
||||
CaseSensitive: false
|
||||
IncludeIsMainRegex: '(Test)?$'
|
||||
IncludeIsMainSourceRegex: ''
|
||||
IndentAccessModifiers: false
|
||||
IndentCaseBlocks: false
|
||||
IndentCaseLabels: false
|
||||
IndentExternBlock: AfterExternBlock
|
||||
IndentGotoLabels: true
|
||||
IndentPPDirectives: None
|
||||
IndentRequiresClause: true
|
||||
IndentWidth: 2
|
||||
IndentWrappedFunctionNames: false
|
||||
InsertBraces: false
|
||||
InsertNewlineAtEOF: false
|
||||
InsertTrailingCommas: None
|
||||
IntegerLiteralSeparator:
|
||||
Binary: 0
|
||||
BinaryMinDigits: 0
|
||||
Decimal: 0
|
||||
DecimalMinDigits: 0
|
||||
Hex: 0
|
||||
HexMinDigits: 0
|
||||
JavaScriptQuotes: Leave
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
KeepEmptyLinesAtEOF: false
|
||||
LambdaBodyIndentation: Signature
|
||||
LineEnding: DeriveLF
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: None
|
||||
ObjCBinPackProtocolList: Auto
|
||||
ObjCBlockIndentWidth: 2
|
||||
ObjCBreakBeforeNestedBlockParam: true
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: true
|
||||
PackConstructorInitializers: BinPack
|
||||
PenaltyBreakAssignment: 2
|
||||
PenaltyBreakBeforeFirstCallParameter: 19
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakOpenParenthesis: 0
|
||||
PenaltyBreakScopeResolution: 500
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyBreakTemplateDeclaration: 10
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyIndentedWhitespace: 0
|
||||
PenaltyReturnTypeOnItsOwnLine: 60
|
||||
PointerAlignment: Left
|
||||
PPIndentWidth: -1
|
||||
QualifierAlignment: Leave
|
||||
ReferenceAlignment: Pointer
|
||||
ReflowComments: true
|
||||
RemoveBracesLLVM: false
|
||||
RemoveParentheses: Leave
|
||||
RemoveSemicolon: false
|
||||
RequiresClausePosition: OwnLine
|
||||
RequiresExpressionIndentation: OuterScope
|
||||
SeparateDefinitionBlocks: Leave
|
||||
ShortNamespaceLines: 1
|
||||
SkipMacroDefinitionBody: false
|
||||
SortIncludes: CaseSensitive
|
||||
SortJavaStaticImport: Before
|
||||
SortUsingDeclarations: LexicographicNumeric
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceAfterLogicalNot: false
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceAroundPointerQualifiers: Default
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeCaseColon: false
|
||||
SpaceBeforeCpp11BracedList: false
|
||||
SpaceBeforeCtorInitializerColon: true
|
||||
SpaceBeforeInheritanceColon: true
|
||||
SpaceBeforeJsonColon: false
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeParensOptions:
|
||||
AfterControlStatements: true
|
||||
AfterForeachMacros: true
|
||||
AfterFunctionDefinitionName: false
|
||||
AfterFunctionDeclarationName: false
|
||||
AfterIfMacros: true
|
||||
AfterOverloadedOperator: false
|
||||
AfterPlacementOperator: true
|
||||
AfterRequiresInClause: false
|
||||
AfterRequiresInExpression: false
|
||||
BeforeNonEmptyParentheses: false
|
||||
SpaceBeforeRangeBasedForLoopColon: true
|
||||
SpaceBeforeSquareBrackets: false
|
||||
SpaceInEmptyBlock: false
|
||||
SpacesBeforeTrailingComments: 1
|
||||
SpacesInAngles: Never
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInLineCommentPrefix:
|
||||
Minimum: 1
|
||||
Maximum: -1
|
||||
SpacesInParens: Never
|
||||
SpacesInParensOptions:
|
||||
InCStyleCasts: false
|
||||
InConditionalStatements: false
|
||||
InEmptyParentheses: false
|
||||
Other: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Latest
|
||||
StatementAttributeLikeMacros:
|
||||
- Q_EMIT
|
||||
StatementMacros:
|
||||
- Q_UNUSED
|
||||
- QT_REQUIRE_VERSION
|
||||
TabWidth: 8
|
||||
UseTab: Never
|
||||
VerilogBreakBetweenInstancePorts: true
|
||||
WhitespaceSensitiveMacros:
|
||||
- BOOST_PP_STRINGIZE
|
||||
- CF_SWIFT_NAME
|
||||
- NS_SWIFT_NAME
|
||||
- PP_STRINGIZE
|
||||
- STRINGIZE
|
||||
...
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[submodule "vcpkg"]
|
||||
path = vcpkg
|
||||
url = https://github.com/Microsoft/vcpkg.git
|
||||
+11
-1
@@ -4,6 +4,9 @@ if(${CMAKE_VERSION} VERSION_LESS 3.12)
|
||||
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
|
||||
endif()
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(VCPKG_INSTALL_OPTIONS "--allow-unsupported")
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake)
|
||||
|
||||
project(MeshShadingDemo)
|
||||
|
||||
@@ -24,7 +27,14 @@ find_package(Ktx CONFIG REQUIRED)
|
||||
find_package(nlohmann_json CONFIG REQUIRED)
|
||||
find_package(fmt CONFIG REQUIRED)
|
||||
find_package(VulkanMemoryAllocator CONFIG REQUIRED)
|
||||
find_package(glslang CONFIG REQUIRED)
|
||||
find_package(Seele REQUIRED)
|
||||
|
||||
add_library(MeshShadingDemo main.cpp)
|
||||
add_library(MeshShadingDemo SHARED "")
|
||||
target_link_libraries(MeshShadingDemo PUBLIC Seele::Engine)
|
||||
|
||||
target_include_directories(MeshShadingDemo PRIVATE src/)
|
||||
|
||||
target_compile_definitions(MeshShadingDemo PRIVATE BUILD_DLL)
|
||||
|
||||
add_subdirectory(src/)
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"code": [
|
||||
{
|
||||
"exp": "Const",
|
||||
"value": "input.vertexColor.xyz"
|
||||
},
|
||||
{
|
||||
"exp": "Const",
|
||||
"value": "float3(0, 0, 1)"
|
||||
},
|
||||
{
|
||||
"exp": "BRDF",
|
||||
"profile": "CelShading",
|
||||
"values": {
|
||||
"baseColor": 0,
|
||||
"normal": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"name": "cubeMaterial0",
|
||||
"profile": "CelShading"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
target_sources(MeshShadingDemo
|
||||
PUBLIC
|
||||
FlyCam.h
|
||||
FlyCam.cpp)
|
||||
@@ -0,0 +1,21 @@
|
||||
#include "FlyCam.h"
|
||||
|
||||
FlyCam::FlyCam(PScene scene)
|
||||
: Actor(scene)
|
||||
{
|
||||
attachComponent<Component::Camera>().mainCamera = true;
|
||||
attachComponent<Component::KeyboardInput>();
|
||||
}
|
||||
|
||||
FlyCam::~FlyCam()
|
||||
{}
|
||||
|
||||
Component::Camera& FlyCam::getCamera()
|
||||
{
|
||||
return accessComponent<Component::Camera>();
|
||||
}
|
||||
|
||||
Component::KeyboardInput& FlyCam::getKeyboardInput()
|
||||
{
|
||||
return accessComponent<Component::KeyboardInput>();
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
#include "Define.h"
|
||||
#include "Seele/MinimalEngine.h"
|
||||
#include <Seele/Actor/Actor.h>
|
||||
#include <Seele/Component/KeyboardInput.h>
|
||||
#include <Seele/Component/Camera.h>
|
||||
|
||||
class FlyCam : public Actor
|
||||
{
|
||||
public:
|
||||
FlyCam(PScene scene);
|
||||
virtual ~FlyCam();
|
||||
Component::KeyboardInput& getKeyboardInput();
|
||||
Component::Camera& getCamera();
|
||||
private:
|
||||
};
|
||||
DEFINE_REF(FlyCam)
|
||||
@@ -0,0 +1,8 @@
|
||||
target_sources(MeshShadingDemo
|
||||
PUBLIC
|
||||
Define.h
|
||||
MeshShadingDemoGame.h
|
||||
MeshShadingDemoGame.cpp)
|
||||
|
||||
add_subdirectory(Actor/)
|
||||
add_subdirectory(System/)
|
||||
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
#include "Seele/MinimalEngine.h"
|
||||
|
||||
using namespace Seele;
|
||||
|
||||
#ifdef WIN32
|
||||
#ifdef BUILD_DLL
|
||||
#define MESHSHADINGDEMO_API __declspec(dllexport)
|
||||
#else
|
||||
#define MESHSHADINGDEMO_API __declspec(dllimport)
|
||||
#endif
|
||||
#else
|
||||
#define MESHSHADINGDEMO_API
|
||||
#endif
|
||||
@@ -0,0 +1,32 @@
|
||||
#include "MeshShadingDemoGame.h"
|
||||
#include "Actor/FlyCam.h"
|
||||
#include "Seele/Asset/AssetRegistry.h"
|
||||
#include "Seele/Component/Transform.h"
|
||||
#include "System/FlyCamSystem.h"
|
||||
|
||||
MeshShadingDemoGame::MeshShadingDemoGame()
|
||||
{
|
||||
}
|
||||
|
||||
MeshShadingDemoGame::~MeshShadingDemoGame()
|
||||
{
|
||||
}
|
||||
|
||||
void MeshShadingDemoGame::setupScene(PScene scene, PSystemGraph graph)
|
||||
{
|
||||
cube = new StaticMeshActor(scene, AssetRegistry::findMesh("cube"));
|
||||
// cube->accessComponent<Component::Transform>().setScale(Vector(50, 50, 50));
|
||||
camera = new FlyCam(scene);
|
||||
light = new DirectionalLightActor(scene, Vector4(1, 1, 1, 1), Vector(0, -1, 0));
|
||||
graph->addSystem(new FlyCamSystem(scene));
|
||||
}
|
||||
|
||||
Game* createInstance()
|
||||
{
|
||||
return new MeshShadingDemoGame();
|
||||
}
|
||||
|
||||
void destroyInstance(Game *game)
|
||||
{
|
||||
delete game;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
#include "Actor/FlyCam.h"
|
||||
#include "Define.h"
|
||||
#include <Seele/Actor/StaticMeshActor.h>
|
||||
#include <Seele/Actor/DirectionalLightActor.h>
|
||||
#include <Seele/Game.h>
|
||||
|
||||
class MESHSHADINGDEMO_API MeshShadingDemoGame : public Game {
|
||||
public:
|
||||
MeshShadingDemoGame();
|
||||
virtual ~MeshShadingDemoGame();
|
||||
virtual void setupScene(PScene scene, PSystemGraph graph) override;
|
||||
|
||||
private:
|
||||
OStaticMeshActor cube;
|
||||
OFlyCam camera;
|
||||
ODirectionalLightActor light;
|
||||
};
|
||||
|
||||
extern "C" MESHSHADINGDEMO_API Game *createInstance();
|
||||
extern "C" MESHSHADINGDEMO_API void destroyInstance(Game *game);
|
||||
@@ -0,0 +1,4 @@
|
||||
target_sources(MeshShadingDemo
|
||||
PUBLIC
|
||||
FlyCamSystem.h
|
||||
FlyCamSystem.cpp)
|
||||
@@ -0,0 +1,48 @@
|
||||
#include "FlyCamSystem.h"
|
||||
#include "Seele/System/ComponentSystem.h"
|
||||
|
||||
FlyCamSystem::FlyCamSystem(PScene scene)
|
||||
: System::ComponentSystem<Component::KeyboardInput, Component::Camera, Component::Transform>(scene) {}
|
||||
|
||||
FlyCamSystem::~FlyCamSystem() {}
|
||||
|
||||
void FlyCamSystem::update(Component::KeyboardInput& input, Component::Camera& camera, Component::Transform& transform) {
|
||||
float cameraMove = static_cast<float>(deltaTime);
|
||||
if(input.keys[KeyCode::KEY_LEFT_SHIFT])
|
||||
{
|
||||
cameraMove *= 100;
|
||||
}
|
||||
Vector forward = transform.getForward();
|
||||
Vector side = transform.getRight();
|
||||
Vector moveVector = Vector();
|
||||
|
||||
if(input.keys[KeyCode::KEY_W])
|
||||
{
|
||||
moveVector += forward * cameraMove;
|
||||
}
|
||||
if(input.keys[KeyCode::KEY_S])
|
||||
{
|
||||
moveVector += forward * -cameraMove;
|
||||
}
|
||||
if(input.keys[KeyCode::KEY_A])
|
||||
{
|
||||
moveVector += side * cameraMove;
|
||||
}
|
||||
if(input.keys[KeyCode::KEY_D])
|
||||
{
|
||||
moveVector += side * -cameraMove;
|
||||
}
|
||||
if(input.keys[KeyCode::KEY_E])
|
||||
{
|
||||
moveVector += Vector(0, cameraMove, 0);
|
||||
}
|
||||
if(input.keys[KeyCode::KEY_Q])
|
||||
{
|
||||
moveVector += Vector(0, -cameraMove, 0);
|
||||
}
|
||||
transform.translate(moveVector);
|
||||
if(input.mouse2)
|
||||
{
|
||||
camera.mouseMove(input.deltaX, input.deltaY);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#pragma once
|
||||
#include "Define.h"
|
||||
#include "Seele/MinimalEngine.h"
|
||||
#include <Seele/Scene/Scene.h>
|
||||
#include <Seele/System/ComponentSystem.h>
|
||||
#include <Seele/Component/Camera.h>
|
||||
#include <Seele/Component/KeyboardInput.h>
|
||||
|
||||
class FlyCamSystem : public System::ComponentSystem<
|
||||
Component::KeyboardInput,
|
||||
Component::Camera,
|
||||
Component::Transform>
|
||||
{
|
||||
public:
|
||||
FlyCamSystem(PScene scene);
|
||||
virtual ~FlyCamSystem();
|
||||
virtual void update(Seele::Component::KeyboardInput& input, Seele::Component::Camera& camera, Seele::Component::Transform& transform) override;
|
||||
private:
|
||||
float lastMouseX;
|
||||
float lastMouseY;
|
||||
};
|
||||
DEFINE_REF(FlyCamSystem)
|
||||
@@ -1,34 +0,0 @@
|
||||
#include <Window/WindowManager.h>
|
||||
#include <Asset/AssetRegistry.h>
|
||||
#include <Window/GameView.h>
|
||||
#include <Graphics/Vulkan/VulkanGraphics.h>
|
||||
|
||||
using namespace Seele;
|
||||
|
||||
int main()
|
||||
{
|
||||
Gfx::PGraphics graphics = new Vulkan::Graphics();
|
||||
GraphicsInitializer initializer;
|
||||
graphics->init(initializer);
|
||||
|
||||
PWindowManager windowManager = new WindowManager();
|
||||
AssetRegistry::init("Assets", graphics);
|
||||
|
||||
WindowCreateInfo mainWindowInfo;
|
||||
mainWindowInfo.title = "MeshShadingDemo";
|
||||
mainWindowInfo.width = 1280;
|
||||
mainWindowInfo.height = 720;
|
||||
mainWindowInfo.bFullscreen = false;
|
||||
mainWindowInfo.numSamples = 1;
|
||||
mainWindowInfo.pixelFormat = Gfx::SE_FORMAT_B8G8R8A8_UNORM;
|
||||
auto window = windowManager->addWindow(graphics, mainWindowInfo);
|
||||
ViewportCreateInfo sceneViewInfo;
|
||||
sceneViewInfo.dimensions.size.x = 1280;
|
||||
sceneViewInfo.dimensions.size.y = 720;
|
||||
sceneViewInfo.dimensions.offset.x = 0;
|
||||
sceneViewInfo.dimensions.offset.y = 0;
|
||||
PGameView sceneView = new GameView(graphics, window, sceneViewInfo, "");
|
||||
sceneView->setFocused();
|
||||
window->render();
|
||||
return 0;
|
||||
}
|
||||
Submodule
+1
Submodule vcpkg added at 501cb01e51
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"dependencies": [
|
||||
"assimp",
|
||||
"entt",
|
||||
"stb",
|
||||
"entt",
|
||||
"freetype",
|
||||
"glfw3",
|
||||
"glm",
|
||||
"ktx",
|
||||
"nlohmann-json",
|
||||
"fmt",
|
||||
"gtest",
|
||||
"vulkan-memory-allocator",
|
||||
"shader-slang",
|
||||
"spirv-cross",
|
||||
"glslang"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user