luboslenco 3 ヶ月 前
コミット
d7a5931b73

ファイルの差分が大きいため隠しています
+ 274 - 510
base/sources/backends/vulkan_gpu.c


+ 3 - 34
base/sources/backends/vulkan_gpu.h

@@ -6,12 +6,7 @@
 #include <vulkan/vulkan.h>
 #include <vulkan/vulkan_core.h>
 
-#define IRON_INTERNAL_NAMED_NUMBER_COUNT 32
-
-typedef struct {
-	char name[256];
-	uint32_t number;
-} iron_internal_named_number;
+#define MAXIMUM_WINDOWS 1
 
 struct vk_funs {
 	PFN_vkGetPhysicalDeviceSurfaceSupportKHR fpGetPhysicalDeviceSurfaceSupportKHR;
@@ -48,41 +43,25 @@ struct vk_window {
 	uint32_t image_count;
 	VkImage *images;
 	VkImageView *views;
-	VkFramebuffer *framebuffers;
-	VkRenderPass framebuffer_render_pass;
-	VkRenderPass rendertarget_render_pass;
-	VkRenderPass rendertarget_render_pass_with_depth;
 	struct vk_depth depth;
 };
 
-#define MAXIMUM_WINDOWS 1
-
 struct vk_context {
 	VkInstance instance;
 	VkPhysicalDevice gpu;
 	VkDevice device;
 	VkPhysicalDeviceMemoryProperties memory_properties;
-
 	VkCommandBuffer setup_cmd;
 	VkCommandPool cmd_pool;
 	VkQueue queue;
-
 	struct vk_window windows[MAXIMUM_WINDOWS];
-
-	// buffer hack
-	VkBuffer *vertex_uniform_buffer;
-
+	VkBuffer *uniform_buffer;
 #ifdef VALIDATE
 	bool validation_found;
 	VkDebugUtilsMessengerEXT debug_messenger;
 #endif
 };
 
-extern struct vk_funs vk;
-extern struct vk_context vk_ctx;
-extern void flush_init_cmd(void);
-extern void reuse_descriptor_sets(void);
-
 typedef struct {
 	int _indexCount;
 	VkCommandBuffer _buffer;
@@ -93,17 +72,9 @@ typedef struct gpu_pipeline_impl {
 	const char **textures;
 	int *textureValues;
 	int textureCount;
-
-	VkPipeline framebuffer_pipeline;
-	VkPipeline rendertarget_pipeline;
+	VkPipeline pipeline;
 	VkShaderModule vert_shader_module;
 	VkShaderModule frag_shader_module;
-
-	iron_internal_named_number vertexLocations[IRON_INTERNAL_NAMED_NUMBER_COUNT];
-	iron_internal_named_number vertexTextureBindings[IRON_INTERNAL_NAMED_NUMBER_COUNT];
-	iron_internal_named_number fragmentTextureBindings[IRON_INTERNAL_NAMED_NUMBER_COUNT];
-	iron_internal_named_number vertexOffsets[IRON_INTERNAL_NAMED_NUMBER_COUNT];
-
 	VkPipelineLayout pipeline_layout;
 } gpu_pipeline_impl_t;
 
@@ -131,7 +102,6 @@ typedef struct {
 	VkImageView depthView;
 	int depthBufferBits;
 
-	VkFramebuffer framebuffer;
 	VkFormat format;
 
 	VkBuffer readback_buffer;
@@ -140,7 +110,6 @@ typedef struct {
 
 	int stage;
 	int stage_depth;
-
 } gpu_texture_impl_t;
 
 typedef struct {

+ 4 - 3
base/sources/ts/render_path_base.ts

@@ -351,7 +351,8 @@ function render_path_base_draw_taa(bufa: string, bufb: string) {
 
 function render_path_base_draw_gbuffer() {
 	render_path_set_target("gbuffer0", null, clear_flag_t.DEPTH, 0, 1.0); // Only clear gbuffer0
-	let additional: string[] = ["gbuffer1", "gbuffer2"];
+	// let additional: string[] = ["gbuffer1", "gbuffer2"];
+	let additional: string[] = ["gbuffer1"];
 	render_path_set_target("gbuffer0", additional);
 	render_path_paint_bind_layers();
 	render_path_draw_meshes("mesh");
@@ -362,7 +363,7 @@ function render_path_base_draw_gbuffer() {
 			let ping: string = i % 2 == 1 ? "_copy" : "";
 			let pong: string = i % 2 == 1 ? "" : "_copy";
 			if (i == make_mesh_layer_pass_count - 1) {
-				render_path_set_target("gbuffer2" + ping, null, clear_flag_t.COLOR, 0xff000000);
+				// render_path_set_target("gbuffer2" + ping, null, clear_flag_t.COLOR, 0xff000000);
 			}
 			let g1ping: string = "gbuffer1" + ping;
 			let g2ping: string = "gbuffer2" + ping;
@@ -370,7 +371,7 @@ function render_path_base_draw_gbuffer() {
 			render_path_set_target("gbuffer0" + ping, additional);
 			render_path_bind_target("gbuffer0" + pong, "gbuffer0");
 			render_path_bind_target("gbuffer1" + pong, "gbuffer1");
-			render_path_bind_target("gbuffer2" + pong, "gbuffer2");
+			// render_path_bind_target("gbuffer2" + pong, "gbuffer2");
 			render_path_paint_bind_layers();
 			render_path_draw_meshes("mesh" + i);
 			render_path_paint_unbind_layers();

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません