Initial project and created a plan.

This commit is contained in:
Anish Bhobe 2025-06-04 22:13:17 +02:00
parent 4d7a633735
commit 6dc3c9b702
9 changed files with 413 additions and 1 deletions

6
.gitignore vendored
View File

@ -133,6 +133,12 @@ StyleCopReport.xml
*.svclog *.svclog
*.scc *.scc
# Vcpkg
vcpkg-manifest-install.log
## Manifest Mode
vcpkg_installed/
# Chutzpah Test files # Chutzpah Test files
_Chutzpah* _Chutzpah*

88
Blaze.cpp Normal file
View File

@ -0,0 +1,88 @@
// Blaze.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <fmt/format.h>
#include <cassert>
#include <volk.h>
#include <SDL3/SDL.h>
#include <SDL3/SDL_vulkan.h>
#define ASSERT(COND) assert((COND))
#define VK_CHECK(RESULT) ASSERT((RESULT) == VK_SUCCESS)
constexpr uint32_t WIDTH = 1280;
constexpr uint32_t HEIGHT = 720;
int main()
{
volkInitialize();
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS);
SDL_Window* window = SDL_CreateWindow("Blaze Test", WIDTH, HEIGHT, SDL_WINDOW_VULKAN);
VkApplicationInfo applicationInfo{
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
.pNext = nullptr,
.pApplicationName = "Test",
.applicationVersion = VK_MAKE_API_VERSION(0, 0, 1, 0),
.pEngineName = "Blaze",
.engineVersion = VK_MAKE_API_VERSION(0, 0, 1, 0),
.apiVersion = VK_API_VERSION_1_3,
};
uint32_t instanceExtensionCount;
char const* const* instanceExtensions = SDL_Vulkan_GetInstanceExtensions(&instanceExtensionCount);
VkInstanceCreateInfo createInfo{
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
.pNext = nullptr,
.flags = 0,
.pApplicationInfo = &applicationInfo,
.enabledLayerCount = 0,
.ppEnabledLayerNames = nullptr,
.enabledExtensionCount = instanceExtensionCount,
.ppEnabledExtensionNames = instanceExtensions,
};
VkInstance instance;
VK_CHECK(vkCreateInstance(&createInfo, nullptr, &instance));
volkLoadInstance(instance);
VkSurfaceKHR surface;
ASSERT(SDL_Vulkan_CreateSurface(window, instance, nullptr, &surface));
bool isRunning = true;
while (isRunning)
{
SDL_PumpEvents();
SDL_Event event;
while(SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_EVENT_QUIT:
isRunning = false;
break;
default:
break;
}
}
}
SDL_Vulkan_DestroySurface(instance, surface, nullptr);
vkDestroyInstance(instance, nullptr);
volkFinalize();
//Blaze blaze;
SDL_DestroyWindow(window);
SDL_Quit();
}

31
Blaze.sln Normal file
View File

@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.13.36105.23 d17.13
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Blaze", "Blaze.vcxproj", "{92E725FE-D87B-4FDE-8371-5B2CE60945FD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{92E725FE-D87B-4FDE-8371-5B2CE60945FD}.Debug|x64.ActiveCfg = Debug|x64
{92E725FE-D87B-4FDE-8371-5B2CE60945FD}.Debug|x64.Build.0 = Debug|x64
{92E725FE-D87B-4FDE-8371-5B2CE60945FD}.Debug|x86.ActiveCfg = Debug|Win32
{92E725FE-D87B-4FDE-8371-5B2CE60945FD}.Debug|x86.Build.0 = Debug|Win32
{92E725FE-D87B-4FDE-8371-5B2CE60945FD}.Release|x64.ActiveCfg = Release|x64
{92E725FE-D87B-4FDE-8371-5B2CE60945FD}.Release|x64.Build.0 = Release|x64
{92E725FE-D87B-4FDE-8371-5B2CE60945FD}.Release|x86.ActiveCfg = Release|Win32
{92E725FE-D87B-4FDE-8371-5B2CE60945FD}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {66453C96-B8B9-4B1A-BC89-5BE11F9DF335}
EndGlobalSection
EndGlobal

166
Blaze.vcxproj Normal file
View File

@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{92e725fe-d87b-4fde-8371-5b2ce60945fd}</ProjectGuid>
<RootNamespace>Blaze</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Label="Vcpkg">
<VcpkgEnableManifest>true</VcpkgEnableManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>EnableAllWarnings</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<TreatWarningAsError>false</TreatWarningAsError>
<ExceptionHandling>Sync</ExceptionHandling>
<MinimalRebuild>false</MinimalRebuild>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<TreatAngleIncludeAsExternal>true</TreatAngleIncludeAsExternal>
<ExternalWarningLevel>TurnOffAllWarnings</ExternalWarningLevel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>C:\Users\Eon\source\repos\Blaze\vcpkg_installed\x64-windows\x64-windows\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>EnableAllWarnings</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<TreatWarningAsError>false</TreatWarningAsError>
<ExceptionHandling>/EH-</ExceptionHandling>
<MinimalRebuild>false</MinimalRebuild>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<TreatAngleIncludeAsExternal>true</TreatAngleIncludeAsExternal>
<ExternalWarningLevel>TurnOffAllWarnings</ExternalWarningLevel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>C:\Users\Eon\source\repos\Blaze\vcpkg_installed\x64-windows\x64-windows\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="Blaze.cpp" />
</ItemGroup>
<ItemGroup>
<None Include=".gitignore" />
<None Include="PLAN.md">
<SubType>
</SubType>
</None>
<None Include="README.md" />
<None Include="vcpkg-configuration.json" />
<None Include="vcpkg.json" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

39
Blaze.vcxproj.filters Normal file
View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Blaze.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="vcpkg.json">
<Filter>Resource Files</Filter>
</None>
<None Include="vcpkg-configuration.json">
<Filter>Resource Files</Filter>
</None>
<None Include="README.md">
<Filter>Resource Files</Filter>
</None>
<None Include=".gitignore">
<Filter>Resource Files</Filter>
</None>
<None Include="PLAN.md">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
</Project>

50
PLAN.md Normal file
View File

@ -0,0 +1,50 @@
# Plan for Blaze
## Local Steps
- [X] Initial Setup and Yak-shaving.
- [X] vcpkg
- [X] compile flags etc.
- [X] SDL3
- [X] volk
- [ ] Create a Triangle
- [X] Create Window
- [X] Load instance
- [X] Create surface
- [ ] Choose physical device
- [ ] Create logical device
- [ ] Create swapchain
- [ ] Create pipeline
- [ ] Draw
- [ ] Create a Box
- [ ] Create Vertex buffer
- [ ] Load texture
- [ ] Draw
- [ ] Refactor
## Features
- [ ] Scene Rendering
- [ ] glTF2.0 Loading
- [ ] Level of Detail
- [ ] Model Optimization
- [ ] Occlusion Culling
- [ ] Terrain
- TBD
- [ ] Rendering Methods
- [ ] Forward
- [ ] Deferred
- [ ] Clustered-Forward
- [ ] V-Buffer
- [ ] Shadows
- [ ] Directional Shadow
- [ ] Percentage-Closer Filtering
- [ ] Cascaded Shadow Maps
- [ ] Percentage-Closer Soft Shadows
- [ ] Omni-directional Shadows
- [ ] Cubemap
- [ ] Dual-Paraboloid
- [ ] Animation
- [ ] Skeletal-Animation
- [ ] GPU based instanced skeletal-animation
- [ ] Tranparency
- [ ] Transparency pass
- [ ] Depth-peeling Order-independent Transparency

View File

@ -1,3 +1,11 @@
# Blaze # Blaze
A Vulkan 1.3 renderer in C++. A Vulkan 1.3 renderer in C++.
## Objectives
### Goals and Non-Goals
- Easy(ier) to use than raw Vulkan.
- Clear, understandable code.
- Easy to iterate, follow the flow.
- Well documented behavior.

14
vcpkg-configuration.json Normal file
View File

@ -0,0 +1,14 @@
{
"default-registry": {
"kind": "git",
"baseline": "f26ec398c25c4980f33a50391f00a75f7ad62ef7",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "artifact",
"location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
"name": "microsoft"
}
]
}

10
vcpkg.json Normal file
View File

@ -0,0 +1,10 @@
{
"dependencies": [
"fmt",
"volk",
{
"name": "sdl3",
"features": [ "vulkan" ]
}
]
}