def _setup_assets(self): scene = self.scene engine = self.engine # Images w, h = self.heightmap_size heightmap_i = Image.empty( name = "HeightmapImage", extent=(w, h, 1), format=vk.FORMAT_R8G8B8A8_SNORM, usage=DEFAULT_IMAGE_USAGE | vk.IMAGE_USAGE_STORAGE_BIT, default_view_type=vk.IMAGE_VIEW_TYPE_2D, layout=ImageLayout.ShaderWrite ) placeholder_i = Image.empty( name = "PlaceholderImage", extent=(1,1,1), format=vk.FORMAT_R8G8B8A8_SNORM, default_view_type=vk.IMAGE_VIEW_TYPE_2D ) # Samplers heightmap_sm = Sampler.from_params( address_mode_V=vk.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, address_mode_U=vk.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, mag_filter=vk.FILTER_NEAREST, min_filter=vk.FILTER_NEAREST ) # Shaders dt = "debug_texture/debug_texture" debug_texture_attributes_map = {"POSITION": "pos", "TEXCOORD_0": "uv"} debug_texture_s = Shader.from_files(f"{dt}.vert.spv", f"{dt}.frag.spv", f"{dt}.map.json", name="DebugTexture") # Compute shaders compute_queue = "render" if "compute" in engine.queues: compute_queue = "compute" ch = "compute_heightmap/compute_heightmap" local_x, local_y = self.compute_local_size compute_heightmap_c = Compute.from_file(f"{ch}.comp.spv", f"{ch}.map.json", name="ComputeHeightmap", queue=compute_queue) compute_heightmap_c.set_constant("local_size_x", local_x) compute_heightmap_c.set_constant("local_size_y", local_y) compute_heightmap_c.uniforms.heightmap = CombinedImageSampler(image_id=heightmap_i.id, view_name="default", sampler_id=heightmap_sm.id) # Meshes plane_m = Mesh.from_prefab(MeshPrefab.Plane, attributes_map=debug_texture_attributes_map, name="PlaneMesh") # Game objects preview_heightmap_o = GameObject.from_components(shader = debug_texture_s.id, mesh = plane_m.id, name = "ObjTexture") preview_heightmap_o.model = Mat4() preview_heightmap_o.uniforms.color_texture = CombinedImageSampler(image_id=placeholder_i.id, view_name="default", sampler_id=heightmap_sm.id) scene.images.extend(heightmap_i, placeholder_i) scene.samplers.extend(heightmap_sm) scene.shaders.extend(debug_texture_s) scene.computes.extend(compute_heightmap_c) scene.meshes.extend(plane_m) scene.objects.extend(preview_heightmap_o) self.objects = (preview_heightmap_o,) self.shaders = () self.compute_heightmap = compute_heightmap_c self.heightmap_texture = heightmap_i self.heightmap_sampler = heightmap_sm self.heightmap_preview = preview_heightmap_o