Browse Source

Started material UBO implementation

As of right now, the material UBO is uploaded to the shader. However, there seem to be alignment or other issues, as the data transferred is not correct.
Jef Belmans 2 years ago
parent
commit
04b86edb72

+ 33 - 31
.idea/workspace.xml

@@ -33,12 +33,14 @@
   <component name="ChangeListManager">
   <component name="ChangeListManager">
     <list default="true" id="e2ea9cb6-a6b7-419f-9266-e5263673b6e6" name="Changes" comment="">
     <list default="true" id="e2ea9cb6-a6b7-419f-9266-e5263673b6e6" name="Changes" comment="">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_descriptors.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_descriptors.cpp" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_descriptors.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_descriptors.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/build/release/Testing/Temporary/LastTest.log" beforeDir="false" afterPath="$PROJECT_DIR$/build/release/Testing/Temporary/LastTest.log" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_buffer.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_buffer.h" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/coral_renderer/coral_material.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_material.cpp" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/coral_renderer/coral_material.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_material.cpp" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_material.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_material.h" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/coral_renderer/first_app.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/first_app.cpp" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/coral_renderer/first_app.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/first_app.cpp" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/coral_renderer/vk_initializers.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/vk_initializers.cpp" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/coral_renderer/vk_initializers.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/vk_initializers.cpp" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/coral_renderer/vk_initializers.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/vk_initializers.h" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/coral_renderer/vk_initializers.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/vk_initializers.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/coral_renderer/vk_types.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/vk_types.h" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/shaders/compiled/simple_shader.frag.spv" beforeDir="false" afterPath="$PROJECT_DIR$/shaders/compiled/simple_shader.frag.spv" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/shaders/compiled/simple_shader.frag.spv" beforeDir="false" afterPath="$PROJECT_DIR$/shaders/compiled/simple_shader.frag.spv" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/shaders/simple_shader.frag" beforeDir="false" afterPath="$PROJECT_DIR$/shaders/simple_shader.frag" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/shaders/simple_shader.frag" beforeDir="false" afterPath="$PROJECT_DIR$/shaders/simple_shader.frag" afterDir="false" />
     </list>
     </list>
@@ -94,36 +96,31 @@
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
     <option name="showLibraryContents" value="true" />
   </component>
   </component>
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;ASKED_ADD_EXTERNAL_FILES&quot;: &quot;true&quot;,
-    &quot;ASKED_MARK_IGNORED_FILES_AS_EXCLUDED&quot;: &quot;true&quot;,
-    &quot;ASKED_SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.cidr.known.project.marker&quot;: &quot;true&quot;,
-    &quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
-    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
-    &quot;cf.first.check.clang-format&quot;: &quot;false&quot;,
-    &quot;cidr.known.project.marker&quot;: &quot;true&quot;,
-    &quot;git-widget-placeholder&quot;: &quot;main&quot;,
-    &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
-    &quot;last_opened_file_path&quot;: &quot;C:/Game Development/Visual Studio Solutions/Coral3D&quot;,
-    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
-    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
-    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
-    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
-    &quot;settings.editor.selected.configurable&quot;: &quot;CMakeSettings&quot;,
-    &quot;structure.view.defaults.are.configured&quot;: &quot;true&quot;,
-    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "ASKED_ADD_EXTERNAL_FILES": "true",
+    "ASKED_MARK_IGNORED_FILES_AS_EXCLUDED": "true",
+    "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
+    "RunOnceActivity.OpenProjectViewOnStart": "true",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "RunOnceActivity.cidr.known.project.marker": "true",
+    "SHARE_PROJECT_CONFIGURATION_FILES": "true",
+    "WebServerToolWindowFactoryState": "false",
+    "cf.first.check.clang-format": "false",
+    "cidr.known.project.marker": "true",
+    "git-widget-placeholder": "main",
+    "ignore.virus.scanning.warn.message": "true",
+    "last_opened_file_path": "C:/Game Development/Visual Studio Solutions/Coral3D",
+    "node.js.detected.package.eslint": "true",
+    "node.js.detected.package.tslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "settings.editor.selected.configurable": "it.czerwinski.intellij.wavefront.settings.WavefrontObjSettingsConfigurable",
+    "structure.view.defaults.are.configured": "true",
+    "vue.rearranger.settings.migration": "true"
   }
   }
-}</component>
+}]]></component>
   <component name="RunManager">
   <component name="RunManager">
-    <configuration default="true" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true">
-      <method v="2">
-        <option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
-      </method>
-    </configuration>
     <configuration name="coral_renderer" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Coral3D" TARGET_NAME="coral_renderer" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="Coral3D" RUN_TARGET_NAME="coral_renderer">
     <configuration name="coral_renderer" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Coral3D" TARGET_NAME="coral_renderer" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="Coral3D" RUN_TARGET_NAME="coral_renderer">
       <method v="2">
       <method v="2">
         <option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
         <option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
@@ -157,7 +154,8 @@
       <workItem from="1694461237959" duration="31000" />
       <workItem from="1694461237959" duration="31000" />
       <workItem from="1694461484964" duration="639000" />
       <workItem from="1694461484964" duration="639000" />
       <workItem from="1694463467367" duration="2649000" />
       <workItem from="1694463467367" duration="2649000" />
-      <workItem from="1694466268807" duration="3131000" />
+      <workItem from="1694466268807" duration="3395000" />
+      <workItem from="1694542562809" duration="9653000" />
     </task>
     </task>
     <task id="LOCAL-00001" summary="Have I forgotten how to git?">
     <task id="LOCAL-00001" summary="Have I forgotten how to git?">
       <option name="closed" value="true" />
       <option name="closed" value="true" />
@@ -184,4 +182,8 @@
     <MESSAGE value="Have I forgotten how to git?" />
     <MESSAGE value="Have I forgotten how to git?" />
     <option name="LAST_COMMIT_MESSAGE" value="Have I forgotten how to git?" />
     <option name="LAST_COMMIT_MESSAGE" value="Have I forgotten how to git?" />
   </component>
   </component>
+  <component name="XSLT-Support.FileAssociations.UIState">
+    <expand />
+    <select />
+  </component>
 </project>
 </project>

BIN
build/release/.ninja_deps


+ 32 - 30
build/release/.ninja_log

@@ -1,54 +1,56 @@
 # ninja log v5
 # ninja log v5
-113	2750	7161723346111892	coral_renderer/CMakeFiles/coral_renderer.dir/main.cpp.obj	f4246ce5e440fc41
-71	2403	7161605107599091	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_thread.c.obj	638ad3ad06125fe4
 7318	7386	7161605157777948	third_party/libtinyobjloader.a	60b6a54d64599062
 7318	7386	7161605157777948	third_party/libtinyobjloader.a	60b6a54d64599062
+13	2117	7162537676026154	coral_renderer/CMakeFiles/coral_renderer.dir/main.cpp.obj	f4246ce5e440fc41
+71	2403	7161605107599091	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_thread.c.obj	638ad3ad06125fe4
 387	2073	7161605104313026	coral_renderer/CMakeFiles/coral_renderer.dir/coral_window.cpp.obj	62d44f5b8bc3eaf4
 387	2073	7161605104313026	coral_renderer/CMakeFiles/coral_renderer.dir/coral_window.cpp.obj	62d44f5b8bc3eaf4
 10	334	7161605086664992	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/PosNormCol.frag.spv	d2b062603ad04cc6
 10	334	7161605086664992	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/PosNormCol.frag.spv	d2b062603ad04cc6
-116	1237	7161723330736807	coral_renderer/CMakeFiles/coral_renderer.dir/vk_initializers.cpp.obj	b2bd8c68fdc36441
+170	2435	7162534840342986	coral_renderer/CMakeFiles/coral_renderer.dir/vk_initializers.cpp.obj	b2bd8c68fdc36441
 81	3189	7161605115554257	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_window.c.obj	9fdad4d28de63534
 81	3189	7161605115554257	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_window.c.obj	9fdad4d28de63534
 20	769	7161701802063210	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	3b06289c6c5f060e
 20	769	7161701802063210	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	3b06289c6c5f060e
-5303	6816	7161605152021701	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_init.c.obj	5a54e1de51f0e2de
 101	2456	7161605108354401	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_time.c.obj	9f6825bfd5c5deb7
 101	2456	7161605108354401	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_time.c.obj	9f6825bfd5c5deb7
-5353	6945	7161605153357909	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_monitor.c.obj	cbd51a1d51394156
+5303	6816	7161605152021701	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_init.c.obj	5a54e1de51f0e2de
 40	2379	7161605107609091	third_party/GLFW/src/CMakeFiles/glfw.dir/init.c.obj	1580c17bd29c94e
 40	2379	7161605107609091	third_party/GLFW/src/CMakeFiles/glfw.dir/init.c.obj	1580c17bd29c94e
-5	1232	7161723468174831	coral_renderer/CMakeFiles/coral_renderer.dir/coral_descriptors.cpp.obj	69cc1b3dd7c5b4d2
+5353	6945	7161605153357909	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_monitor.c.obj	cbd51a1d51394156
 368	2618	7161605109945092	third_party/GLFW/src/CMakeFiles/glfw.dir/vulkan.c.obj	e890ec9a67469472
 368	2618	7161605109945092	third_party/GLFW/src/CMakeFiles/glfw.dir/vulkan.c.obj	e890ec9a67469472
-918	1058	7161725914631807	coral_renderer/coral_renderer.exe	f0ba2344d74b4a6
+2436	4529	7162534861496108	coral_renderer/CMakeFiles/coral_renderer.dir/coral_descriptors.cpp.obj	69cc1b3dd7c5b4d2
 5631	7059	7161605154493217	third_party/GLFW/src/CMakeFiles/glfw.dir/osmesa_context.c.obj	bd687e5f061fc7e9
 5631	7059	7161605154493217	third_party/GLFW/src/CMakeFiles/glfw.dir/osmesa_context.c.obj	bd687e5f061fc7e9
+5035	5177	7162537706596349	coral_renderer/coral_renderer.exe	f0ba2344d74b4a6
 2824	3607	7161605119915676	coral_renderer/CMakeFiles/coral_renderer.dir/coral_utils.cpp.obj	e5cf3e2538044833
 2824	3607	7161605119915676	coral_renderer/CMakeFiles/coral_renderer.dir/coral_utils.cpp.obj	e5cf3e2538044833
 55	2505	7161605108704479	third_party/GLFW/src/CMakeFiles/glfw.dir/context.c.obj	5d34e7ae8ce089ae
 55	2505	7161605108704479	third_party/GLFW/src/CMakeFiles/glfw.dir/context.c.obj	5d34e7ae8ce089ae
-335	2665	7161605110485206	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_joystick.c.obj	60340a15c23596ef
 63	2522	7161605109079703	third_party/GLFW/src/CMakeFiles/glfw.dir/egl_context.c.obj	134a12be6cc8b6e1
 63	2522	7161605109079703	third_party/GLFW/src/CMakeFiles/glfw.dir/egl_context.c.obj	134a12be6cc8b6e1
+335	2665	7161605110485206	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_joystick.c.obj	60340a15c23596ef
 5165	6840	7161605152281760	third_party/GLFW/src/CMakeFiles/glfw.dir/monitor.c.obj	f218f9e006590936
 5165	6840	7161605152281760	third_party/GLFW/src/CMakeFiles/glfw.dir/monitor.c.obj	f218f9e006590936
 344	2798	7161605111730855	third_party/GLFW/src/CMakeFiles/glfw.dir/window.c.obj	dea033b667ff06d5
 344	2798	7161605111730855	third_party/GLFW/src/CMakeFiles/glfw.dir/window.c.obj	dea033b667ff06d5
 116	2729	7161605111060694	third_party/GLFW/src/CMakeFiles/glfw.dir/wgl_context.c.obj	592ea253d8e32e8e
 116	2729	7161605111060694	third_party/GLFW/src/CMakeFiles/glfw.dir/wgl_context.c.obj	592ea253d8e32e8e
 48	2824	7161605111966005	third_party/GLFW/src/CMakeFiles/glfw.dir/input.c.obj	3d5a7ad29b1764da
 48	2824	7161605111966005	third_party/GLFW/src/CMakeFiles/glfw.dir/input.c.obj	3d5a7ad29b1764da
-157	6096	7161723379459221	coral_renderer/CMakeFiles/coral_renderer.dir/coral_texture.cpp.obj	e50ab1b3bc2e2445
-138	2140	7161723339889802	coral_renderer/CMakeFiles/coral_renderer.dir/coral_renderer.cpp.obj	a4e4e724401ef4fd
-129	2586	7161723344434323	coral_renderer/CMakeFiles/coral_renderer.dir/coral_gameobject.cpp.obj	c0fe020bcf6a899a
+196	3291	7162534849098425	coral_renderer/CMakeFiles/coral_renderer.dir/coral_renderer.cpp.obj	a4e4e724401ef4fd
+218	7331	7162534889525463	coral_renderer/CMakeFiles/coral_renderer.dir/coral_texture.cpp.obj	e50ab1b3bc2e2445
+28	2030	7162537675158726	coral_renderer/CMakeFiles/coral_renderer.dir/coral_gameobject.cpp.obj	c0fe020bcf6a899a
 7059	7154	7161605155445049	third_party/GLFW/src/libglfw3.a	5eea7d88e6f39701
 7059	7154	7161605155445049	third_party/GLFW/src/libglfw3.a	5eea7d88e6f39701
-133	6099	7161723379546751	coral_renderer/CMakeFiles/coral_renderer.dir/coral_mesh.cpp.obj	6166b8a6642afc63
-8	917	7161725913255207	coral_renderer/CMakeFiles/coral_renderer.dir/coral_material.cpp.obj	4e54edca48a5779a
-144	2917	7161723347784477	coral_renderer/CMakeFiles/coral_renderer.dir/render_system.cpp.obj	9d0fb47d087577ef
-105	2882	7161723347429187	coral_renderer/CMakeFiles/coral_renderer.dir/coral_pipeline.cpp.obj	c7e23580431c0cb
-0	515	0	C:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
-124	3254	7161723351156905	coral_renderer/CMakeFiles/coral_renderer.dir/coral_device.cpp.obj	909c653f2643cfd7
+59	2145	7162537676310343	coral_renderer/CMakeFiles/coral_renderer.dir/coral_material.cpp.obj	4e54edca48a5779a
+35	5035	7162537705210092	coral_renderer/CMakeFiles/coral_renderer.dir/coral_mesh.cpp.obj	6166b8a6642afc63
+43	2267	7162537677534188	coral_renderer/CMakeFiles/coral_renderer.dir/render_system.cpp.obj	9d0fb47d087577ef
+0	583	0	C:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
+6	2217	7162537677039878	coral_renderer/CMakeFiles/coral_renderer.dir/coral_pipeline.cpp.obj	c7e23580431c0cb
+162	4395	7162534860151529	coral_renderer/CMakeFiles/coral_renderer.dir/coral_device.cpp.obj	909c653f2643cfd7
+50	1965	7162537674504132	coral_renderer/CMakeFiles/coral_renderer.dir/coral_frame_info.cpp.obj	c5cee4ff193b2673
 22	7779	7161605161711355	third_party/CMakeFiles/vkbootstrap.dir/vkbootstrap/VkBootstrap.cpp.obj	1aa6e481af04158f
 22	7779	7161605161711355	third_party/CMakeFiles/vkbootstrap.dir/vkbootstrap/VkBootstrap.cpp.obj	1aa6e481af04158f
-150	2729	7161723345900448	coral_renderer/CMakeFiles/coral_renderer.dir/coral_frame_info.cpp.obj	c5cee4ff193b2673
-109	3797	7161723356591038	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	148ee4762be09a28
+20	2967	7162537684550497	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	148ee4762be09a28
 34	7317	7161605157095030	third_party/CMakeFiles/tinyobjloader.dir/tinyobjloader/tiny_obj_loader.cc.obj	bc59412498a9bf65
 34	7317	7161605157095030	third_party/CMakeFiles/tinyobjloader.dir/tinyobjloader/tiny_obj_loader.cc.obj	bc59412498a9bf65
-3607	9001	7161605173929515	coral_renderer/CMakeFiles/coral_renderer.dir/coral_buffer.cpp.obj	b1a72dd22a20bd1a
+238	6453	7162534880732716	coral_renderer/CMakeFiles/coral_renderer.dir/coral_buffer.cpp.obj	b1a72dd22a20bd1a
 7780	7848	7161605162388374	third_party/libvkbootstrap.a	3c2f59e57be524c7
 7780	7848	7161605162388374	third_party/libvkbootstrap.a	3c2f59e57be524c7
-120	2966	7161723348277918	coral_renderer/CMakeFiles/coral_renderer.dir/coral_swapchain.cpp.obj	22d9ac7f57a0eab7
-5	105	7161723319642327	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.frag.spv	c8e05f14162426a5
+5	105	7162552489442962	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.frag.spv	c8e05f14162426a5
+154	3696	7162534853155913	coral_renderer/CMakeFiles/coral_renderer.dir/coral_swapchain.cpp.obj	22d9ac7f57a0eab7
 15	363	7161694959018096	build.ninja	ba309abf78566697
 15	363	7161694959018096	build.ninja	ba309abf78566697
-0	515	0	coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
+0	583	0	coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
 4	344	7161605086895076	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/PosNormCol.vert.spv	a0ba634e53f7a86c
 4	344	7161605086895076	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/PosNormCol.vert.spv	a0ba634e53f7a86c
 27	387	7161605087420250	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.vert.spv	dd4b741ae13c35f5
 27	387	7161605087420250	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.vert.spv	dd4b741ae13c35f5
-0	523	0	coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
-0	523	0	C:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
-6	935	7161726393392972	coral_renderer/CMakeFiles/coral_renderer.dir/coral_material.cpp.obj	4e54edca48a5779a
-936	1075	7161726394749704	coral_renderer/coral_renderer.exe	f0ba2344d74b4a6
-0	506	0	coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
-0	506	0	C:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
-6	109	7161727406512461	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.frag.spv	c8e05f14162426a5
+5	105	7162552727953958	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.frag.spv	c8e05f14162426a5
+0	543	0	coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
+0	543	0	C:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
+5	107	7162553077632277	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.frag.spv	c8e05f14162426a5
+0	583	0	coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
+0	583	0	C:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
+6	173	7162554801126187	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.frag.spv	c8e05f14162426a5
+1	655	0	coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620
+1	655	0	C:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	83bed872d5bcf620

+ 2 - 2
build/release/Testing/Temporary/LastTest.log

@@ -1,3 +1,3 @@
-Start testing: Sep 11 23:59 Romance Daylight Time
+Start testing: Sep 12 22:58 Romance Daylight Time
 ----------------------------------------------------------
 ----------------------------------------------------------
-End testing: Sep 11 23:59 Romance Daylight Time
+End testing: Sep 12 22:58 Romance Daylight Time

+ 2 - 0
coral_renderer/coral_buffer.h

@@ -7,6 +7,8 @@ namespace coral_3d
 	class coral_buffer final
 	class coral_buffer final
 	{
 	{
 	public:
 	public:
+        explicit coral_buffer(coral_device& device) : device_{device}{};
+
 		coral_buffer(
 		coral_buffer(
 			coral_device& device,
 			coral_device& device,
 			VkDeviceSize instance_size,
 			VkDeviceSize instance_size,

+ 33 - 9
coral_renderer/coral_material.cpp

@@ -20,33 +20,57 @@ void coral_material::load(VkPipelineLayout pipeline_layout,
             VK_FORMAT_R8G8B8A8_SRGB
             VK_FORMAT_R8G8B8A8_SRGB
     );
     );
 
 
-    // IMAGE SAMPLER
-    VkSamplerCreateInfo sampler_create_info{ vkinit::sampler_ci(VK_FILTER_NEAREST, VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_MIPMAP_MODE_LINEAR, 16.f)};
+    // WRITE TO MATERIAL BUFFER
+    MaterialUBO ubo{};
 
 
-    VkSampler sampler;
-    vkCreateSampler(device_.device(), &sampler_create_info, nullptr, &sampler);
+    // DIFFUSE
+    ubo.use_diff_map = !tiny_obj_material_.diffuse_texname.empty();
+    ubo.diffuse_color.x = tiny_obj_material_.diffuse[0];
+    ubo.diffuse_color.y = tiny_obj_material_.diffuse[1];
+    ubo.diffuse_color.z = tiny_obj_material_.diffuse[2];
 
 
-    // WRITE SAMPLER AND TEXTURES TO DESCRIPTOR
+    // SPECULAR
+    ubo.use_specular_map = !tiny_obj_material_.specular_texname.empty();
+    ubo.specular_color.x = tiny_obj_material_.specular[0];
+    ubo.specular_color.y = tiny_obj_material_.specular[1];
+    ubo.specular_color.z = tiny_obj_material_.specular[2];
+    ubo.shininess = tiny_obj_material_.shininess;
+
+    // BUMP
+    ubo.use_bump_map = !tiny_obj_material_.bump_texname.empty();
+
+    // ALPHA BLENDING
+    ubo.use_opacity_map = !tiny_obj_material_.alpha_texname.empty();
+    ubo.opacity_value = 100.f;
+
+    material_ubo_.map();
+    material_ubo_.write_to_buffer(&ubo);
+    material_ubo_.flush();
+    material_ubo_.unmap();
+
+    // BUILD DESCRIPTOR
     VkDescriptorImageInfo sampler_info{};
     VkDescriptorImageInfo sampler_info{};
-    sampler_info.sampler = sampler;
+    sampler_info.sampler = texture_->sampler();
     auto image_info = texture_->get_descriptor_info();
     auto image_info = texture_->get_descriptor_info();
+    auto buffer_info = material_ubo_.descriptor_info();
 
 
     coral_descriptor_writer(material_set_layout, material_set_pool)
     coral_descriptor_writer(material_set_layout, material_set_pool)
             .write_sampler(0, &sampler_info)
             .write_sampler(0, &sampler_info)
             .write_image(1, &image_info)
             .write_image(1, &image_info)
-            .build(texture_desc_set_);
+            .write_buffer(2, &buffer_info)
+            .build(material_desc_set_);
 }
 }
 
 
 void coral_material::bind(VkCommandBuffer command_buffer)
 void coral_material::bind(VkCommandBuffer command_buffer)
 {
 {
 	// Only bind texture descriptor set if it exists
 	// Only bind texture descriptor set if it exists
-	if(texture_desc_set_ != VK_NULL_HANDLE)
+	if(material_desc_set_ != VK_NULL_HANDLE)
 		vkCmdBindDescriptorSets
 		vkCmdBindDescriptorSets
         (command_buffer,
         (command_buffer,
          VK_PIPELINE_BIND_POINT_GRAPHICS,
          VK_PIPELINE_BIND_POINT_GRAPHICS,
          pipeline_layout_,
          pipeline_layout_,
          1, 1,
          1, 1,
-         &texture_desc_set_,
+         &material_desc_set_,
          0, nullptr);
          0, nullptr);
 }
 }
 
 

+ 15 - 2
coral_renderer/coral_material.h

@@ -3,6 +3,7 @@
 // CORAL
 // CORAL
 #include "coral_descriptors.h"
 #include "coral_descriptors.h"
 #include "coral_texture.h"
 #include "coral_texture.h"
+#include "coral_buffer.h"
 #include "tiny_obj_loader.h"
 #include "tiny_obj_loader.h"
 
 
 // STD
 // STD
@@ -29,15 +30,27 @@ namespace coral_3d
         void bind(VkCommandBuffer command_buffer);
         void bind(VkCommandBuffer command_buffer);
 
 
         VkPipelineLayout pipeline_layout() const { return pipeline_layout_; }
         VkPipelineLayout pipeline_layout() const { return pipeline_layout_; }
-        VkDescriptorSet texture_desc_set() const { return texture_desc_set_; }
+        VkDescriptorSet material_desc_set() const { return material_desc_set_; }
 
 
     private:
     private:
+        std::string name;
+
         coral_device& device_;
         coral_device& device_;
         VkPipelineLayout pipeline_layout_;
         VkPipelineLayout pipeline_layout_;
 
 
         std::shared_ptr<coral_texture> texture_;
         std::shared_ptr<coral_texture> texture_;
-        VkDescriptorSet texture_desc_set_;
+        VkDescriptorSet material_desc_set_;
 
 
         tinyobj::material_t tiny_obj_material_;
         tinyobj::material_t tiny_obj_material_;
+        coral_buffer material_ubo_
+        {
+            device_,
+            sizeof(MaterialUBO),
+            1,
+            VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
+            VMA_MEMORY_USAGE_CPU_ONLY,
+            0,
+            device_.properties.limits.minUniformBufferOffsetAlignment
+        };
     };
     };
 }
 }

+ 2 - 9
coral_renderer/first_app.cpp

@@ -15,15 +15,6 @@
 
 
 using namespace coral_3d;
 using namespace coral_3d;
 
 
-struct GlobalUBO
-{
-    glm::mat4 view_projection{1.f};
-
-    // GLOBAL LIGHT
-    glm::vec4 global_light_direction{ glm::normalize(glm::vec4{ 0.577f, -0.577f, -0.577f, 0.f})}; // w is ignored
-    glm::vec4 ambient_light_color{1.f, .82f, .863f, .01f}; // w is intensity
-};
-
 first_app::first_app()
 first_app::first_app()
 {
 {
     global_descriptor_pool_ = coral_descriptor_pool::Builder(device_)
     global_descriptor_pool_ = coral_descriptor_pool::Builder(device_)
@@ -35,6 +26,7 @@ first_app::first_app()
             .set_max_sets(MAX_MATERIAL_SETS)
             .set_max_sets(MAX_MATERIAL_SETS)
             .add_pool_size(VK_DESCRIPTOR_TYPE_SAMPLER, 1)
             .add_pool_size(VK_DESCRIPTOR_TYPE_SAMPLER, 1)
             .add_pool_size(VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, MAX_MATERIAL_SETS)
             .add_pool_size(VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, MAX_MATERIAL_SETS)
+            .add_pool_size(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1)
             .build();
             .build();
 }
 }
 
 
@@ -71,6 +63,7 @@ void first_app::run()
     auto material_set_layout = coral_descriptor_set_layout::Builder(device_)
     auto material_set_layout = coral_descriptor_set_layout::Builder(device_)
             .add_binding(0, VK_DESCRIPTOR_TYPE_SAMPLER, VK_SHADER_STAGE_FRAGMENT_BIT)
             .add_binding(0, VK_DESCRIPTOR_TYPE_SAMPLER, VK_SHADER_STAGE_FRAGMENT_BIT)
             .add_binding(1, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_SHADER_STAGE_FRAGMENT_BIT, MAX_TEXTURES)
             .add_binding(1, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_SHADER_STAGE_FRAGMENT_BIT, MAX_TEXTURES)
+            .add_binding(2, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_SHADER_STAGE_FRAGMENT_BIT)
             .build();
             .build();
 
 
     // Combined descriptor set layouts
     // Combined descriptor set layouts

+ 2 - 30
coral_renderer/vk_initializers.cpp

@@ -272,7 +272,7 @@ VkSamplerCreateInfo vkinit::sampler_ci(VkFilter filters, float max_anisotropy, V
 	info.addressModeV = samplerAddressMode;
 	info.addressModeV = samplerAddressMode;
 	info.addressModeW = samplerAddressMode;
 	info.addressModeW = samplerAddressMode;
 
 
-	info.anisotropyEnable = VK_TRUE;
+	info.anisotropyEnable =  max_anisotropy > 0.01f ? VK_TRUE : VK_FALSE;
 	info.maxAnisotropy = max_anisotropy;
 	info.maxAnisotropy = max_anisotropy;
 
 
 	info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
 	info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
@@ -324,32 +324,4 @@ VkWriteDescriptorSet vkinit::write_descriptor_image(VkDescriptorType type, VkDes
 	write.pImageInfo = imageInfo;
 	write.pImageInfo = imageInfo;
 
 
 	return write;
 	return write;
-}
-
-VkSamplerCreateInfo
-vkinit::sampler_ci(VkFilter min_mag_filter, VkSamplerAddressMode address_mode, VkSamplerMipmapMode mip_map_mode, float max_anisotropic)
-{
-    VkSamplerCreateInfo sampler_info = {};
-    sampler_info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
-    sampler_info.magFilter = min_mag_filter;
-    sampler_info.minFilter = min_mag_filter;
-
-    sampler_info.addressModeU = address_mode;
-    sampler_info.addressModeV = address_mode;
-    sampler_info.addressModeW = address_mode;
-
-    sampler_info.anisotropyEnable = max_anisotropic > 0.01f ? VK_TRUE : VK_FALSE;
-    sampler_info.maxAnisotropy = max_anisotropic;
-    sampler_info.borderColor = VK_BORDER_COLOR_INT_OPAQUE_BLACK;
-    sampler_info.unnormalizedCoordinates = VK_FALSE;
-
-    sampler_info.compareEnable = VK_FALSE;
-    sampler_info.compareOp = VK_COMPARE_OP_ALWAYS;
-
-    sampler_info.mipmapMode = mip_map_mode;
-    sampler_info.mipLodBias = 0.0f;
-    sampler_info.minLod = 0.0f;
-    sampler_info.maxLod = 0.0f;
-
-    return sampler_info;
-}
+}

+ 0 - 1
coral_renderer/vk_initializers.h

@@ -23,7 +23,6 @@ namespace vkinit
 	VkPipelineLayoutCreateInfo pipeline_layout_ci();
 	VkPipelineLayoutCreateInfo pipeline_layout_ci();
 
 
 	// Image initializers
 	// Image initializers
-    VkSamplerCreateInfo sampler_ci(VkFilter min_mag_filter, VkSamplerAddressMode address_mode, VkSamplerMipmapMode mip_map_mode, float max_anisotropic);
 	VkImageCreateInfo image_ci(VkFormat format, VkImageUsageFlags usageFlags, VkExtent3D extent);
 	VkImageCreateInfo image_ci(VkFormat format, VkImageUsageFlags usageFlags, VkExtent3D extent);
 	VkImageViewCreateInfo image_view_ci(VkFormat format, VkImage image, VkImageAspectFlags aspectFlags);
 	VkImageViewCreateInfo image_view_ci(VkFormat format, VkImage image, VkImageAspectFlags aspectFlags);
 	VkPipelineDepthStencilStateCreateInfo depth_stencil_ci(bool bDepthTest, bool bDepthWrite, VkCompareOp compareOp);
 	VkPipelineDepthStencilStateCreateInfo depth_stencil_ci(bool bDepthTest, bool bDepthWrite, VkCompareOp compareOp);

+ 30 - 0
coral_renderer/vk_types.h

@@ -1,6 +1,7 @@
 #pragma once
 #pragma once
 #include <vulkan/vulkan.h>
 #include <vulkan/vulkan.h>
 #include <vk_mem_alloc.h>
 #include <vk_mem_alloc.h>
+#include <glm.hpp>
 
 
 #include <deque>
 #include <deque>
 #include <functional>
 #include <functional>
@@ -28,4 +29,33 @@ struct DeletionQueue
 
 
 		deletors.clear();
 		deletors.clear();
 	}
 	}
+};
+
+struct GlobalUBO
+{
+    // MATRICES
+    glm::mat4 view_projection{1.f};
+
+    // GLOBAL LIGHT
+    glm::vec4 global_light_direction{ glm::normalize(glm::vec4{ 0.577f, -0.577f, -0.577f, 0.f})}; // w is ignored
+    glm::vec4 ambient_light_color{1.f, .82f, .863f, .01f}; // w is intensity
+};
+
+struct MaterialUBO
+{
+    // DIFFUSE
+    bool use_diff_map;
+    glm::vec3 diffuse_color;
+
+    // SPECULAR
+    bool use_specular_map;
+    glm::vec3 specular_color;
+    float shininess;
+
+    // BUMP / NORMAL
+    bool use_bump_map;
+
+    // ALPHA BLENDING
+    bool use_opacity_map;
+    float opacity_value;
 };
 };

BIN
shaders/compiled/simple_shader.frag.spv


+ 21 - 1
shaders/simple_shader.frag

@@ -18,6 +18,20 @@ layout (set = 0, binding = 0) uniform GlobalUBO
 
 
 layout (set = 1, binding = 0) uniform sampler samp;
 layout (set = 1, binding = 0) uniform sampler samp;
 layout (set = 1, binding = 1) uniform texture2D textures;
 layout (set = 1, binding = 1) uniform texture2D textures;
+layout (set = 1, binding = 2) uniform MaterialUBO
+{
+	bool useDiffMap;
+	vec3 diffuseColor;
+
+	bool useSpecularMap;
+	vec3 specularColor;
+	float shininess;
+
+	bool useBumpMap;
+
+	bool useOpacityMap;
+	float opacityValue;
+} materialUbo;
 
 
 layout (push_constant) uniform Push
 layout (push_constant) uniform Push
 {
 {
@@ -40,7 +54,13 @@ vec3 calculate_diffuse(vec3 col, vec3 norm)
 void main()
 void main()
 {
 {
 	vec3 ambient = ubo.ambientLightColor.xyz * ubo.ambientLightColor.w;
 	vec3 ambient = ubo.ambientLightColor.xyz * ubo.ambientLightColor.w;
-	vec3 color = texture(sampler2D(textures, samp), fragUV).xyz;
+
+	vec3 color;
+	if(materialUbo.useOpacityMap)
+		color = materialUbo.diffuseColor;
+	else
+		color = texture(sampler2D(textures, samp), fragUV).xyz;
+
 	vec3 diffuse = calculate_diffuse(color, fragNormal);
 	vec3 diffuse = calculate_diffuse(color, fragNormal);
 
 
 	outColor = vec4(diffuse + ambient, 1.0f);
 	outColor = vec4(diffuse + ambient, 1.0f);