Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

RenderingDevice

繼承: Object

用於處理現代低階圖形 API 的抽象。

說明

RenderingDevice 是用來使用 Vulkan 等現代低階圖形 API 的抽象。與(適用於 Godot 自有算繪子系統的)RenderingServer 相比,RenderingDevice 所處的層級更低,能夠更加直接地使用底層圖形 API。Godot 使用 RenderingDevice 來支援部分現代低階圖形 API,能夠減少所需的重複程式碼。你也可以在自己的專案中使用 RenderingDevice,從而執行 RenderingServer 和高階節點未暴露的功能,例如使用計算著色器。

啟動時,Godot 會建立一個全域的 RenderingDevice,可以使用 RenderingServer.get_rendering_device() 獲取。這個全域的 RenderingDevice 進行的是螢幕繪圖。

局部 RenderingDevice:你可以使用 RenderingServer.create_local_rendering_device() 建立“次級”算繪裝置,在單獨的執行緒中進行算繪和 GPU 計算操作。

注意:使用 RenderingDevice 需要對 Vulkan、Direct3D 12、Metal 或 WebGPU 有中等水平的知識。這些圖形 API 比 OpenGL 和 Direct3D 所處的層級更低,能夠執行原本由圖形驅動自己實作的功能。如果這個類中所使用的概念你理解起來有困難,請學習 Vulkan 教學Vulkan 指南。在嘗試學習低階圖形 API 之前,建議先學習現代 OpenGL 或 Direct3D 11 相關的知識。

注意:使用無頭模式運作或使用 Compatibility 算繪方法時,RenderingDevice 不可用。

教學

方法

void

barrier(from: BitField[BarrierMask] = 32767, to: BitField[BarrierMask] = 32767)

Error

blas_build(blas: RID)

RID

blas_create(geometries: Array[RDAccelerationStructureGeometry], flags: BitField[AccelerationStructureFlagBits])

Error

buffer_clear(buffer: RID, offset: int, size_bytes: int)

Error

buffer_copy(src_buffer: RID, dst_buffer: RID, src_offset: int, dst_offset: int, size: int)

PackedByteArray

buffer_get_data(buffer: RID, offset_bytes: int = 0, size_bytes: int = 0)

Error

buffer_get_data_async(buffer: RID, callback: Callable, offset_bytes: int = 0, size_bytes: int = 0)

int

buffer_get_device_address(buffer: RID)

Error

buffer_update(buffer: RID, offset: int, size_bytes: int, data: PackedByteArray)

void

capture_timestamp(name: String)

void

compute_list_add_barrier(compute_list: int)

int

compute_list_begin()

void

compute_list_bind_compute_pipeline(compute_list: int, compute_pipeline: RID)

void

compute_list_bind_uniform_set(compute_list: int, uniform_set: RID, set_index: int)

void

compute_list_dispatch(compute_list: int, x_groups: int, y_groups: int, z_groups: int)

void

compute_list_dispatch_indirect(compute_list: int, buffer: RID, offset: int)

void

compute_list_end()

void

compute_list_set_push_constant(compute_list: int, buffer: PackedByteArray, size_bytes: int)

RID

compute_pipeline_create(shader: RID, specialization_constants: Array[RDPipelineSpecializationConstant] = [])

bool

compute_pipeline_is_valid(compute_pipeline: RID)

RenderingDevice

create_local_device()

void

draw_command_begin_label(name: String, color: Color)

void

draw_command_end_label()

void

draw_command_insert_label(name: String, color: Color)

int

draw_list_begin(framebuffer: RID, draw_flags: BitField[DrawFlags] = 0, clear_color_values: PackedColorArray = PackedColorArray(), clear_depth_value: float = 1.0, clear_stencil_value: int = 0, region: Rect2 = Rect2(0, 0, 0, 0), breadcrumb: int = 0)

int

draw_list_begin_for_screen(screen: int = 0, clear_color: Color = Color(0, 0, 0, 1))

PackedInt64Array

draw_list_begin_split(framebuffer: RID, splits: int, initial_color_action: InitialAction, final_color_action: FinalAction, initial_depth_action: InitialAction, final_depth_action: FinalAction, clear_color_values: PackedColorArray = PackedColorArray(), clear_depth: float = 1.0, clear_stencil: int = 0, region: Rect2 = Rect2(0, 0, 0, 0), storage_textures: Array[RID] = [])

void

draw_list_bind_index_array(draw_list: int, index_array: RID)

void

draw_list_bind_render_pipeline(draw_list: int, render_pipeline: RID)

void

draw_list_bind_uniform_set(draw_list: int, uniform_set: RID, set_index: int)

void

draw_list_bind_vertex_array(draw_list: int, vertex_array: RID)

void

draw_list_bind_vertex_buffers_format(draw_list: int, vertex_format: int, vertex_count: int, vertex_buffers: Array[RID], offsets: PackedInt64Array = PackedInt64Array())

void

draw_list_disable_scissor(draw_list: int)

void

draw_list_draw(draw_list: int, use_indices: bool, instances: int, procedural_vertex_count: int = 0)

void

draw_list_draw_indirect(draw_list: int, use_indices: bool, buffer: RID, offset: int = 0, draw_count: int = 1, stride: int = 0)

void

draw_list_enable_scissor(draw_list: int, rect: Rect2 = Rect2(0, 0, 0, 0))

void

draw_list_end()

void

draw_list_set_blend_constants(draw_list: int, color: Color)

void

draw_list_set_push_constant(draw_list: int, buffer: PackedByteArray, size_bytes: int)

int

draw_list_switch_to_next_pass()

PackedInt64Array

draw_list_switch_to_next_pass_split(splits: int)

RID

framebuffer_create(textures: Array[RID], validate_with_format: int = -1, view_count: int = 1)

RID

framebuffer_create_empty(size: Vector2i, samples: TextureSamples = 0, validate_with_format: int = -1)

RID

framebuffer_create_multipass(textures: Array[RID], passes: Array[RDFramebufferPass], validate_with_format: int = -1, view_count: int = 1)

int

framebuffer_format_create(attachments: Array[RDAttachmentFormat], view_count: int = 1)

int

framebuffer_format_create_empty(samples: TextureSamples = 0)

int

framebuffer_format_create_multipass(attachments: Array[RDAttachmentFormat], passes: Array[RDFramebufferPass], view_count: int = 1)

TextureSamples

framebuffer_format_get_texture_samples(format: int, render_pass: int = 0)

int

framebuffer_get_format(framebuffer: RID)

bool

framebuffer_is_valid(framebuffer: RID) const

void

free_rid(rid: RID)

void

full_barrier()

int

get_captured_timestamp_cpu_time(index: int) const

int

get_captured_timestamp_gpu_time(index: int) const

String

get_captured_timestamp_name(index: int) const

int

get_captured_timestamps_count() const

int

get_captured_timestamps_frame() const

int

get_device_allocation_count() const

int

get_device_allocs_by_object_type(type: int) const

int

get_device_memory_by_object_type(type: int) const

String

get_device_name() const

String

get_device_pipeline_cache_uuid() const

int

get_device_total_memory() const

String

get_device_vendor_name() const

int

get_driver_allocation_count() const

int

get_driver_allocs_by_object_type(type: int) const

String

get_driver_and_device_memory_report() const

int

get_driver_memory_by_object_type(type: int) const

int

get_driver_resource(resource: DriverResource, rid: RID, index: int)

int

get_driver_total_memory() const

int

get_frame_delay() const

int

get_memory_usage(type: MemoryType) const

String

get_perf_report() const

String

get_tracked_object_name(type_index: int) const

int

get_tracked_object_type_count() const

bool

has_feature(feature: Features) const

RID

hit_sbt_create(raytracing_pipeline: RID, initial_hit_group_capacity: int)

int

hit_sbt_range_alloc(hit_sbt: RID, hit_group_count: int)

Error

hit_sbt_range_free(hit_sbt: RID, range: int)

Error

hit_sbt_range_update(hit_sbt: RID, range: int, offset: int, hit_group_indices: PackedInt32Array)

Error

hit_sbt_set_pipeline(hit_sbt: RID, raytracing_pipeline: RID)

RID

index_array_create(index_buffer: RID, index_offset: int, index_count: int)

RID

index_buffer_create(size_indices: int, format: IndexBufferFormat, data: PackedByteArray = PackedByteArray(), use_restart_indices: bool = false, creation_bits: BitField[BufferCreationBits] = 0)

int

limit_get(limit: Limit) const

int

raytracing_list_begin()

void

raytracing_list_bind_raytracing_pipeline(raytracing_list: int, raytracing_pipeline: RID)

void

raytracing_list_bind_uniform_set(raytracing_list: int, uniform_set: RID, set_index: int)

void

raytracing_list_end()

void

raytracing_list_set_push_constant(raytracing_list: int, buffer: PackedByteArray, size_bytes: int)

void

raytracing_list_trace_rays(raytracing_list: int, raygen_shader_index: int, hit_sbt: RID, width: int, height: int, depth: int)

RID

raytracing_pipeline_create(raygen_shaders: Array[RDPipelineShader], miss_shaders: Array[RDPipelineShader], hit_groups: Array[RDHitGroup], max_trace_recursion_depth: int)

bool

raytracing_pipeline_is_valid(raytracing_pipeline: RID)

RID

render_pipeline_create(shader: RID, framebuffer_format: int, vertex_format: int, primitive: RenderPrimitive, rasterization_state: RDPipelineRasterizationState, multisample_state: RDPipelineMultisampleState, stencil_state: RDPipelineDepthStencilState, color_blend_state: RDPipelineColorBlendState, dynamic_state_flags: BitField[PipelineDynamicStateFlags] = 0, for_render_pass: int = 0, specialization_constants: Array[RDPipelineSpecializationConstant] = [])

bool

render_pipeline_is_valid(render_pipeline: RID)

RID

sampler_create(state: RDSamplerState)

bool

sampler_is_format_supported_for_filter(format: DataFormat, sampler_filter: SamplerFilter) const

int

screen_get_framebuffer_format(screen: int = 0) const

int

screen_get_height(screen: int = 0) const

int

screen_get_width(screen: int = 0) const

void

set_resource_name(id: RID, name: String)

PackedByteArray

shader_compile_binary_from_spirv(spirv_data: RDShaderSPIRV, name: String = "")

RDShaderSPIRV

shader_compile_spirv_from_source(shader_source: RDShaderSource, allow_cache: bool = true)

RID

shader_create_from_bytecode(binary_data: PackedByteArray, placeholder_rid: RID = RID())

RID

shader_create_from_spirv(spirv_data: RDShaderSPIRV, name: String = "")

RID

shader_create_placeholder()

int

shader_get_vertex_input_attribute_mask(shader: RID)

RID

storage_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), usage: BitField[StorageBufferUsage] = 0, creation_bits: BitField[BufferCreationBits] = 0)

void

submit()

void

sync()

RID

texture_buffer_create(size_bytes: int, format: DataFormat, data: PackedByteArray = PackedByteArray())

Error

texture_clear(texture: RID, color: Color, base_mipmap: int, mipmap_count: int, base_layer: int, layer_count: int)

Error

texture_copy(from_texture: RID, to_texture: RID, from_pos: Vector3, to_pos: Vector3, size: Vector3, src_mipmap: int, dst_mipmap: int, src_layer: int, dst_layer: int)

RID

texture_create(format: RDTextureFormat, view: RDTextureView, data: Array[PackedByteArray] = [])

RID

texture_create_from_extension(type: TextureType, format: DataFormat, samples: TextureSamples, usage_flags: BitField[TextureUsageBits], image: int, width: int, height: int, depth: int, layers: int, mipmaps: int = 1)

RID

texture_create_shared(view: RDTextureView, with_texture: RID)

RID

texture_create_shared_from_slice(view: RDTextureView, with_texture: RID, layer: int, mipmap: int, mipmaps: int = 1, slice_type: TextureSliceType = 0)

PackedByteArray

texture_get_data(texture: RID, layer: int)

Error

texture_get_data_async(texture: RID, layer: int, callback: Callable)

RDTextureFormat

texture_get_format(texture: RID)

int

texture_get_native_handle(texture: RID)

bool

texture_is_discardable(texture: RID)

bool

texture_is_format_supported_for_usage(format: DataFormat, usage_flags: BitField[TextureUsageBits]) const

bool

texture_is_shared(texture: RID)

bool

texture_is_valid(texture: RID)

Error

texture_resolve_multisample(from_texture: RID, to_texture: RID)

void

texture_set_discardable(texture: RID, discardable: bool)

Error

texture_update(texture: RID, layer: int, data: PackedByteArray)

Error

tlas_build(tlas: RID, instances: Array[RDAccelerationStructureInstance])

RID

tlas_create(max_instance_count: int, flags: BitField[AccelerationStructureFlagBits])

RID

uniform_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), creation_bits: BitField[BufferCreationBits] = 0)

RID

uniform_set_create(uniforms: Array[RDUniform], shader: RID, shader_set: int)

bool

uniform_set_is_valid(uniform_set: RID)

RID

vertex_array_create(vertex_count: int, vertex_format: int, src_buffers: Array[RID], offsets: PackedInt64Array = PackedInt64Array())

RID

vertex_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), creation_bits: BitField[BufferCreationBits] = 0)

int

vertex_format_create(vertex_descriptions: Array[RDVertexAttribute])


列舉

enum DeviceType: 🔗

DeviceType DEVICE_TYPE_OTHER = 0

算繪裝置的型別與其他列舉值均不配對,或者未知。

DeviceType DEVICE_TYPE_INTEGRATED_GPU = 1

算繪裝置為集成 GPU,通常(但不一定)比獨立 GPU(DEVICE_TYPE_DISCRETE_GPU)要慢。在 Android 和 iOS 上,算繪裝置的型別始終為 DEVICE_TYPE_INTEGRATED_GPU

DeviceType DEVICE_TYPE_DISCRETE_GPU = 2

算繪裝置為獨立 GPU,通常(但不一定)比集成 GPU(DEVICE_TYPE_INTEGRATED_GPU)要快。

DeviceType DEVICE_TYPE_VIRTUAL_GPU = 3

算繪裝置為虛擬環境中的類比 GPU。通常比主機 GPU 要慢很多,這意味著獨立 GPU 的預期性能等級大概與 DEVICE_TYPE_INTEGRATED_GPU 等價。使用虛擬機器 GPU 穿透(例如 VFIO)時,裝置型別不會被彙報為 DEVICE_TYPE_VIRTUAL_GPU。而是會彙報主機 GPU 的裝置型別,就好像使用的不是模擬 GPU 一樣。

DeviceType DEVICE_TYPE_CPU = 4

算繪裝置由軟體類比提供(例如 Lavapipe 或 SwiftShader)。這是可用的算繪裝置中最慢的一種;通常比 DEVICE_TYPE_INTEGRATED_GPU 要慢很多。

DeviceType DEVICE_TYPE_MAX = 5

代表 DeviceType 列舉的大小。


enum DriverResource: 🔗

DriverResource DRIVER_RESOURCE_LOGICAL_DEVICE = 0

Specific device object based on a physical device (rid parameter is ignored).

  • Vulkan: Vulkan device driver resource (VkDevice).

  • D3D12: D3D12 device driver resource (ID3D12Device).

  • Metal: Metal device driver resource (MTLDevice).

DriverResource DRIVER_RESOURCE_PHYSICAL_DEVICE = 1

Physical device the specific logical device is based on (rid parameter is ignored).

  • Vulkan: VkPhysicalDevice.

  • D3D12: IDXGIAdapter.

DriverResource DRIVER_RESOURCE_TOPMOST_OBJECT = 2

Top-most graphics API entry object (rid parameter is ignored).

  • Vulkan: VkInstance.

DriverResource DRIVER_RESOURCE_COMMAND_QUEUE = 3

The main graphics-compute command queue (rid parameter is ignored).

  • Vulkan: VkQueue.

  • D3D12: ID3D12CommandQueue.

  • Metal: MTLCommandQueue.

DriverResource DRIVER_RESOURCE_QUEUE_FAMILY = 4

The specific family the main queue belongs to (rid parameter is ignored).

  • Vulkan: The queue family index, a uint32_t.

DriverResource DRIVER_RESOURCE_TEXTURE = 5

  • Vulkan: VkImage.

  • D3D12: ID3D12Resource.

DriverResource DRIVER_RESOURCE_TEXTURE_VIEW = 6

The view of an owned or shared texture.

  • Vulkan: VkImageView.

  • D3D12: ID3D12Resource.

DriverResource DRIVER_RESOURCE_TEXTURE_DATA_FORMAT = 7

The native id of the data format of the texture.

  • Vulkan: VkFormat.

  • D3D12: DXGI_FORMAT.

DriverResource DRIVER_RESOURCE_SAMPLER = 8

  • Vulkan: VkSampler.

DriverResource DRIVER_RESOURCE_UNIFORM_SET = 9

  • Vulkan: VkDescriptorSet.

DriverResource DRIVER_RESOURCE_BUFFER = 10

Buffer of any kind of (storage, vertex, etc.).

  • Vulkan: VkBuffer.

  • D3D12: ID3D12Resource.

DriverResource DRIVER_RESOURCE_COMPUTE_PIPELINE = 11

  • Vulkan: VkPipeline.

  • Metal: MTLComputePipelineState.

DriverResource DRIVER_RESOURCE_RENDER_PIPELINE = 12

  • Vulkan: VkPipeline.

  • Metal: MTLRenderPipelineState.

DriverResource DRIVER_RESOURCE_VULKAN_DEVICE = 0

已棄用: Use DRIVER_RESOURCE_LOGICAL_DEVICE instead.

DriverResource DRIVER_RESOURCE_VULKAN_PHYSICAL_DEVICE = 1

已棄用: Use DRIVER_RESOURCE_PHYSICAL_DEVICE instead.

DriverResource DRIVER_RESOURCE_VULKAN_INSTANCE = 2

已棄用: Use DRIVER_RESOURCE_TOPMOST_OBJECT instead.

DriverResource DRIVER_RESOURCE_VULKAN_QUEUE = 3

已棄用: Use DRIVER_RESOURCE_COMMAND_QUEUE instead.

DriverResource DRIVER_RESOURCE_VULKAN_QUEUE_FAMILY_INDEX = 4

已棄用: Use DRIVER_RESOURCE_QUEUE_FAMILY instead.

DriverResource DRIVER_RESOURCE_VULKAN_IMAGE = 5

已棄用: Use DRIVER_RESOURCE_TEXTURE instead.

DriverResource DRIVER_RESOURCE_VULKAN_IMAGE_VIEW = 6

已棄用: Use DRIVER_RESOURCE_TEXTURE_VIEW instead.

DriverResource DRIVER_RESOURCE_VULKAN_IMAGE_NATIVE_TEXTURE_FORMAT = 7

已棄用: Use DRIVER_RESOURCE_TEXTURE_DATA_FORMAT instead.

DriverResource DRIVER_RESOURCE_VULKAN_SAMPLER = 8

已棄用: Use DRIVER_RESOURCE_SAMPLER instead.

DriverResource DRIVER_RESOURCE_VULKAN_DESCRIPTOR_SET = 9

已棄用: Use DRIVER_RESOURCE_UNIFORM_SET instead.

DriverResource DRIVER_RESOURCE_VULKAN_BUFFER = 10

已棄用: Use DRIVER_RESOURCE_BUFFER instead.

DriverResource DRIVER_RESOURCE_VULKAN_COMPUTE_PIPELINE = 11

已棄用: Use DRIVER_RESOURCE_COMPUTE_PIPELINE instead.

DriverResource DRIVER_RESOURCE_VULKAN_RENDER_PIPELINE = 12

已棄用: Use DRIVER_RESOURCE_RENDER_PIPELINE instead.


enum DataFormat: 🔗

DataFormat DATA_FORMAT_R4G4_UNORM_PACK8 = 0

每通道 4 位的紅、綠通道資料格式,緊縮在 8 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

注意:所有資料格式的更多資訊可以在 Vulkan 規格說明的 Identification of formats 章節和 VkFormat 列舉中找到。

DataFormat DATA_FORMAT_R4G4B4A4_UNORM_PACK16 = 1

每通道 4 位的紅、綠、藍、Alpha 通道資料格式,緊縮在 16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_B4G4R4A4_UNORM_PACK16 = 2

每通道 4 位的藍、綠、紅、Alpha 通道資料格式,緊縮在 16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R5G6B5_UNORM_PACK16 = 3

紅、綠、藍通道資料格式,紅占 5 位、綠占 6 位、藍占 5 位,緊縮在 16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_B5G6R5_UNORM_PACK16 = 4

藍、綠、紅通道資料格式,藍占 5 位、綠占 6 位、紅占 5 位,緊縮在 16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R5G5B5A1_UNORM_PACK16 = 5

紅、綠、藍、Alpha 通道資料格式,紅占 5 位、綠占 6 位、藍占 5 位、Alpha 占 1 位,緊縮在 16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_B5G5R5A1_UNORM_PACK16 = 6

藍、綠、紅、Alpha 通道資料格式,藍占 5 位、綠占 6 位、紅占 5 位、Alpha 占 1 位,緊縮在 16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_A1R5G5B5_UNORM_PACK16 = 7

Alpha、紅、綠、藍通道資料格式,Alpha 占 1 位、紅占 5 位、綠占 6 位、藍占 5 位,緊縮在 16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R8_UNORM = 8

每通道 8 位元的無符號浮點數紅通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R8_SNORM = 9

每通道 8 位元的帶符號浮點數紅通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R8_USCALED = 10

每通道 8 位元的無符號浮點數紅通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [0.0, 255.0] 的範圍內。

DataFormat DATA_FORMAT_R8_SSCALED = 11

每通道 8 位元的帶符號浮點數紅通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [-127.0, 127.0] 的範圍內。

DataFormat DATA_FORMAT_R8_UINT = 12

每通道 8 位元的不帶正負號的整數紅通道資料格式。取值均在 [0, 255] 的範圍內。

DataFormat DATA_FORMAT_R8_SINT = 13

每通道 8 位元的帶符號整數紅通道資料格式。取值均在 [-127, 127] 的範圍內。

DataFormat DATA_FORMAT_R8_SRGB = 14

8-bit-per-channel unsigned floating-point red channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range.

DataFormat DATA_FORMAT_R8G8_UNORM = 15

每通道 8 位元的無符號浮點數紅、綠通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8_SNORM = 16

每通道 8 位元的帶符號浮點數紅、綠通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8_USCALED = 17

每通道 8 位元的無符號浮點數紅、綠通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [0.0, 255.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8_SSCALED = 18

每通道 8 位元的帶符號浮點數紅、綠通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [-127.0, 127.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8_UINT = 19

每通道 8 位的不帶正負號的整數紅、綠通道資料格式。取值均在 [0, 255] 的範圍內。

DataFormat DATA_FORMAT_R8G8_SINT = 20

每通道 8 位元的帶符號整數紅、綠通道資料格式。取值均在 [-127, 127] 的範圍內。

DataFormat DATA_FORMAT_R8G8_SRGB = 21

8-bit-per-channel unsigned floating-point red/green channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range.

DataFormat DATA_FORMAT_R8G8B8_UNORM = 22

每通道 8 位元的無符號浮點數紅、綠、藍通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8_SNORM = 23

每通道 8 位元的帶符號浮點數紅、綠、藍通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8_USCALED = 24

每通道 8 位元的無符號浮點數紅、綠、藍通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [0.0, 255.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8_SSCALED = 25

每通道 8 位元的帶符號浮點數紅、綠、藍通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [-127.0, 127.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8_UINT = 26

每通道 8 位的不帶正負號的整數紅、綠、藍通道資料格式。取值均在 [0, 255] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8_SINT = 27

每通道 8 位元的帶符號整數紅、綠、藍通道資料格式。取值均在 [-127, 127] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8_SRGB = 28

8-bit-per-channel unsigned floating-point red/green/blue channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range.

DataFormat DATA_FORMAT_B8G8R8_UNORM = 29

每通道 8 位元的無符號浮點數藍、綠、紅通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8_SNORM = 30

每通道 8 位元的帶符號浮點數藍、綠、紅通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8_USCALED = 31

每通道 8 位元的無符號浮點數藍、綠、紅通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [0.0, 255.0] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8_SSCALED = 32

每通道 8 位元的帶符號浮點數藍、綠、紅通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [-127.0, 127.0] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8_UINT = 33

每通道 8 位的不帶正負號的整數藍、綠、紅通道資料格式。取值均在 [0, 255] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8_SINT = 34

每通道 8 位元的帶符號整數藍、綠、紅通道資料格式。取值均在 [-127, 127] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8_SRGB = 35

8-bit-per-channel unsigned floating-point blue/green/red data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range.

DataFormat DATA_FORMAT_R8G8B8A8_UNORM = 36

每通道 8 位元的無符號浮點數紅、綠、藍、Alpha 通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8A8_SNORM = 37

每通道 8 位元的帶符號浮點數紅、綠、藍、Alpha 通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8A8_USCALED = 38

每通道 8 位元的無符號浮點數紅、綠、藍、Alpha 通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [0.0, 255.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8A8_SSCALED = 39

每通道 8 位元的帶符號浮點數紅、綠、藍、Alpha 通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [-127.0, 127.0] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8A8_UINT = 40

每通道 8 位的不帶正負號的整數紅、綠、藍、Alpha 通道資料格式。取值均在 [0, 255] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8A8_SINT = 41

每通道 8 位元的帶符號整數紅、綠、藍、Alpha 通道資料格式。取值均在 [-127, 127] 的範圍內。

DataFormat DATA_FORMAT_R8G8B8A8_SRGB = 42

8-bit-per-channel unsigned floating-point red/green/blue/alpha channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range.

DataFormat DATA_FORMAT_B8G8R8A8_UNORM = 43

每通道 8 位元的無符號浮點數藍、綠、紅、Alpha 通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8A8_SNORM = 44

每通道 8 位元的帶符號浮點數藍、綠、紅、Alpha 通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8A8_USCALED = 45

每通道 8 位元的無符號浮點數藍、綠、紅、Alpha 通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [0.0, 255.0] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8A8_SSCALED = 46

每通道 8 位元的帶符號浮點數藍、綠、紅、Alpha 通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [-127.0, 127.0] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8A8_UINT = 47

每通道 8 位的不帶正負號的整數藍、綠、紅、Alpha 通道資料格式。取值均在 [0, 255] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8A8_SINT = 48

每通道 8 位元的帶符號整數藍、綠、紅、Alpha 通道資料格式。取值均在 [-127, 127] 的範圍內。

DataFormat DATA_FORMAT_B8G8R8A8_SRGB = 49

8-bit-per-channel unsigned floating-point blue/green/red/alpha channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range.

DataFormat DATA_FORMAT_A8B8G8R8_UNORM_PACK32 = 50

每通道 8 位元的無符號浮點數 Alpha、紅、綠、藍通道資料格式,使用正規化的值,緊縮在 32 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_A8B8G8R8_SNORM_PACK32 = 51

每通道 8 位元的帶符號浮點數 Alpha、紅、綠、藍通道資料格式,使用正規化的值,緊縮在 32 個比特位中。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_A8B8G8R8_USCALED_PACK32 = 52

每通道 8 位元的無符號浮點數 Alpha、紅、綠、藍通道資料格式,使用縮放後的值(值從整數轉換為浮點數),緊縮在 32 個比特位中。取值均在 [0.0, 255.0] 的範圍內。

DataFormat DATA_FORMAT_A8B8G8R8_SSCALED_PACK32 = 53

每通道 8 位元的帶符號浮點數 Alpha、紅、綠、藍通道資料格式,使用縮放後的值(值從整數轉換為浮點數),緊縮在 32 個比特位中。取值均在 [-127.0, 127.0] 的範圍內。

DataFormat DATA_FORMAT_A8B8G8R8_UINT_PACK32 = 54

每通道 8 位的不帶正負號的整數 Alpha、紅、綠、藍通道資料格式,緊縮在 32 個比特位中。取值均在 [0, 255] 的範圍內。

DataFormat DATA_FORMAT_A8B8G8R8_SINT_PACK32 = 55

每通道 8 位元的帶符號整數 Alpha、紅、綠、藍通道資料格式,緊縮在 32 個比特位中。取值均在 [-127, 127] 的範圍內。

DataFormat DATA_FORMAT_A8B8G8R8_SRGB_PACK32 = 56

8-bit-per-channel unsigned floating-point alpha/red/green/blue channel data format with normalized value and nonlinear sRGB encoding, packed in 32 bits. Values are in the [0.0, 1.0] range.

DataFormat DATA_FORMAT_A2R10G10B10_UNORM_PACK32 = 57

無符號浮點數 Alpha、紅、綠、藍通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位紅、10 位綠、10 位藍。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_A2R10G10B10_SNORM_PACK32 = 58

帶符號浮點數 Alpha、紅、綠、藍通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位紅、10 位綠、10 位藍。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_A2R10G10B10_USCALED_PACK32 = 59

無符號浮點數 Alpha、紅、綠、藍通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位紅、10 位綠、10 位藍。紅、綠、藍的取值在 [0.0, 1023.0] 的範圍內,Alpha 的取值在 [0.0, 3.0] 的範圍內。

DataFormat DATA_FORMAT_A2R10G10B10_SSCALED_PACK32 = 60

帶符號浮點數 Alpha、紅、綠、藍通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位紅、10 位綠、10 位藍。紅、綠、藍的取值在 [-511.0, 511.0] 的範圍內,Alpha 的取值在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_A2R10G10B10_UINT_PACK32 = 61

不帶正負號的整數 Alpha、紅、綠、藍通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位紅、10 位綠、10 位藍。紅、綠、藍的取值在 [0, 1023] 的範圍內,Alpha 的取值在 [0, 3] 的範圍內。

DataFormat DATA_FORMAT_A2R10G10B10_SINT_PACK32 = 62

帶符號整數 Alpha、紅、綠、藍通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位紅、10 位綠、10 位藍。紅、綠、藍的取值在 [-511, 511] 的範圍內,Alpha 的取值在 [-1, 1] 的範圍內。

DataFormat DATA_FORMAT_A2B10G10R10_UNORM_PACK32 = 63

無符號浮點數 Alpha、藍、綠、紅通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位藍、10 位綠、10 位紅。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_A2B10G10R10_SNORM_PACK32 = 64

帶符號浮點數 Alpha、藍、綠、紅通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位藍、10 位綠、10 位紅。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_A2B10G10R10_USCALED_PACK32 = 65

無符號浮點數 Alpha、藍、綠、紅通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位藍、10 位綠、10 位紅。藍、綠、紅的取值在 [0.0, 1023.0] 的範圍內,Alpha 的取值在 [0.0, 3.0] 的範圍內。

DataFormat DATA_FORMAT_A2B10G10R10_SSCALED_PACK32 = 66

帶符號浮點數 Alpha、藍、綠、紅通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位藍、10 位綠、10 位紅。藍、綠、紅的取值在 [-511.0, 511.0] 的範圍內,Alpha 的取值在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_A2B10G10R10_UINT_PACK32 = 67

不帶正負號的整數 Alpha、藍、綠、紅通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位藍、10 位綠、10 位紅。藍、綠、紅的取值在 [0, 1023] 的範圍內,Alpha 的取值在 [0, 3] 的範圍內。

DataFormat DATA_FORMAT_A2B10G10R10_SINT_PACK32 = 68

帶符號整數 Alpha、藍、綠、紅通道資料格式,使用正規化的值,緊縮在 32 個比特位中。格式中包含 2 位 Alpha、10 位藍、10 位綠、10 位紅。藍、綠、紅的取值在 [-511, 511] 的範圍內,Alpha 的取值在 [-1, 1] 的範圍內。

DataFormat DATA_FORMAT_R16_UNORM = 69

每通道 16 位元的無符號浮點數紅通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R16_SNORM = 70

每通道 16 位元的帶符號浮點數紅通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R16_USCALED = 71

每通道 16 位元的無符號浮點數紅通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [0.0, 65535.0] 的範圍內。

DataFormat DATA_FORMAT_R16_SSCALED = 72

每通道 16 位元的帶符號浮點數紅通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [-32767.0, 32767.0] 的範圍內。

DataFormat DATA_FORMAT_R16_UINT = 73

每通道 16 位元的不帶正負號的整數紅通道資料格式。取值均在 [0.0, 65535] 的範圍內。

DataFormat DATA_FORMAT_R16_SINT = 74

每通道 16 位元的帶符號整數紅通道資料格式。取值均在 [-32767, 32767] 的範圍內。

DataFormat DATA_FORMAT_R16_SFLOAT = 75

每通道 16 位元的帶符號浮點數紅通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_R16G16_UNORM = 76

每通道 16 位元的無符號浮點數紅、綠通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16_SNORM = 77

每通道 16 位元的帶符號浮點數紅、綠通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16_USCALED = 78

每通道 16 位元的無符號浮點數紅、綠通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [0.0, 65535.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16_SSCALED = 79

每通道 16 位元的帶符號浮點數紅、綠通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [-32767.0, 32767.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16_UINT = 80

每通道 16 位的不帶正負號的整數紅、綠通道資料格式。取值均在 [0.0, 65535] 的範圍內。

DataFormat DATA_FORMAT_R16G16_SINT = 81

每通道 16 位元的帶符號整數紅、綠通道資料格式。取值均在 [-32767, 32767] 的範圍內。

DataFormat DATA_FORMAT_R16G16_SFLOAT = 82

每通道 16 位元的帶符號浮點數紅、綠通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_R16G16B16_UNORM = 83

每通道 16 位元的無符號浮點數紅、綠、藍通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16_SNORM = 84

每通道 16 位元的帶符號浮點數紅、綠、藍通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16_USCALED = 85

每通道 16 位元的無符號浮點數紅、綠、藍通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [0.0, 65535.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16_SSCALED = 86

每通道 16 位元的帶符號浮點數紅、綠、藍通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [-32767.0, 32767.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16_UINT = 87

每通道 16 位的不帶正負號的整數紅、綠、藍通道資料格式。取值均在 [0.0, 65535] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16_SINT = 88

每通道 16 位元的帶符號整數紅、綠、藍通道資料格式。取值均在 [-32767, 32767] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16_SFLOAT = 89

每通道 16 位元的帶符號浮點數紅、綠、藍通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_R16G16B16A16_UNORM = 90

每通道 16 位元的無符號浮點數紅、綠、藍、Alpha 通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16A16_SNORM = 91

每通道 16 位元的帶符號浮點數紅、綠、藍、Alpha 通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16A16_USCALED = 92

每通道 16 位元的無符號浮點數紅、綠、藍、Alpha 通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [0.0, 65535.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16A16_SSCALED = 93

每通道 16 位元的帶符號浮點數紅、綠、藍、Alpha 通道資料格式,使用縮放後的值(值從整數轉換為浮點數)。取值均在 [-32767.0, 32767.0] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16A16_UINT = 94

每通道 16 位的不帶正負號的整數紅、綠、藍、Alpha 通道資料格式。取值均在 [0.0, 65535] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16A16_SINT = 95

每通道 16 位元的帶符號整數紅、綠、藍、Alpha 通道資料格式。取值均在 [-32767, 32767] 的範圍內。

DataFormat DATA_FORMAT_R16G16B16A16_SFLOAT = 96

每通道 16 位元的帶符號浮點數紅、綠、藍、Alpha 通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_R32_UINT = 97

每通道 32 位元的不帶正負號的整數紅通道資料格式。取值均在 [0, 2^32 - 1] 的範圍內。

DataFormat DATA_FORMAT_R32_SINT = 98

每通道 32 位元的帶符號整數紅通道資料格式。取值均在 [2^31 + 1, 2^31 - 1] 的範圍內。

DataFormat DATA_FORMAT_R32_SFLOAT = 99

每通道 32 位元的帶符號整數紅通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_R32G32_UINT = 100

每通道 32 位的不帶正負號的整數紅、綠通道資料格式。取值均在 [0, 2^32 - 1] 的範圍內。

DataFormat DATA_FORMAT_R32G32_SINT = 101

每通道 32 位元的帶符號整數紅、綠通道資料格式。取值均在 [2^31 + 1, 2^31 - 1] 的範圍內。

DataFormat DATA_FORMAT_R32G32_SFLOAT = 102

每通道 32 位元的帶符號整數紅、綠通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_R32G32B32_UINT = 103

每通道 32 位的不帶正負號的整數紅、綠、藍通道資料格式。取值均在 [0, 2^32 - 1] 的範圍內。

DataFormat DATA_FORMAT_R32G32B32_SINT = 104

每通道 32 位元的帶符號整數紅、綠、藍通道資料格式。取值均在 [2^31 + 1, 2^31 - 1] 的範圍內。

DataFormat DATA_FORMAT_R32G32B32_SFLOAT = 105

每通道 32 位元的帶符號整數紅、綠、藍通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_R32G32B32A32_UINT = 106

每通道 32 位的不帶正負號的整數紅、綠、藍、Alpha 通道資料格式。取值均在 [0, 2^32 - 1] 的範圍內。

DataFormat DATA_FORMAT_R32G32B32A32_SINT = 107

每通道 32 位元的帶符號整數紅、綠、藍、Alpha 通道資料格式。取值均在 [2^31 + 1, 2^31 - 1] 的範圍內。

DataFormat DATA_FORMAT_R32G32B32A32_SFLOAT = 108

每通道 32 位元的帶符號整數紅、綠、藍、Alpha 通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_R64_UINT = 109

每通道 64 位元的不帶正負號的整數紅通道資料格式。取值均在 [0, 2^64 - 1] 的範圍內。

DataFormat DATA_FORMAT_R64_SINT = 110

每通道 64 位元的帶符號整數紅通道資料格式。取值均在 [2^63 + 1, 2^63 - 1] 的範圍內。

DataFormat DATA_FORMAT_R64_SFLOAT = 111

每通道 64 位元的帶符號整數紅通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_R64G64_UINT = 112

每通道 64 位的不帶正負號的整數紅、綠通道資料格式。取值均在 [0, 2^64 - 1] 的範圍內。

DataFormat DATA_FORMAT_R64G64_SINT = 113

每通道 64 位元的帶符號整數紅、綠通道資料格式。取值均在 [2^63 + 1, 2^63 - 1] 的範圍內。

DataFormat DATA_FORMAT_R64G64_SFLOAT = 114

每通道 64 位元的帶符號整數紅、綠通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_R64G64B64_UINT = 115

每通道 64 位的不帶正負號的整數紅、綠、藍通道資料格式。取值均在 [0, 2^64 - 1] 的範圍內。

DataFormat DATA_FORMAT_R64G64B64_SINT = 116

每通道 64 位元的帶符號整數紅、綠、藍通道資料格式。取值均在 [2^63 + 1, 2^63 - 1] 的範圍內。

DataFormat DATA_FORMAT_R64G64B64_SFLOAT = 117

每通道 64 位元的帶符號整數紅、綠、藍通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_R64G64B64A64_UINT = 118

每通道 64 位的不帶正負號的整數紅、綠、藍、Alpha 通道資料格式。取值均在 [0, 2^64 - 1] 的範圍內。

DataFormat DATA_FORMAT_R64G64B64A64_SINT = 119

每通道 64 位元的帶符號整數紅、綠、藍、Alpha 通道資料格式。取值均在 [2^63 + 1, 2^63 - 1] 的範圍內。

DataFormat DATA_FORMAT_R64G64B64A64_SFLOAT = 120

每通道 64 位元的帶符號整數紅、綠、藍、Alpha 通道資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_B10G11R11_UFLOAT_PACK32 = 121

無符號浮點數藍、綠、紅資料格式,數值原樣儲存,緊縮在 32 個比特位中。該格式的精度為藍通道 10 位、綠通道 11 位、紅通道 11 位。

DataFormat DATA_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 122

無符號浮點數曝光、藍、綠、紅資料格式,數值原樣儲存,緊縮在 32 個比特位中。該格式的精度為曝光 5 位、藍通道 9 位、綠通道 9 位、紅通道 9 位。

DataFormat DATA_FORMAT_D16_UNORM = 123

16 位元無符號浮點數深度資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_X8_D24_UNORM_PACK32 = 124

24 位元無符號浮點數深度資料格式,使用正規化的值,另有 8 位未使用,緊縮在 32 個比特位中。深度取值在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_D32_SFLOAT = 125

32 位元無符號浮點數深度資料格式,數值原樣儲存。

DataFormat DATA_FORMAT_S8_UINT = 126

8 位元不帶正負號的整數範本資料格式。

DataFormat DATA_FORMAT_D16_UNORM_S8_UINT = 127

16 位元無符號浮點數深度資料格式,使用正規化的值,另有 8 位使用不帶正負號的整數格式的範本。深度取值在 [0.0, 1.0] 的範圍內。範本取值在 [0, 255] 的範圍內。

DataFormat DATA_FORMAT_D24_UNORM_S8_UINT = 128

24 位元無符號浮點數深度資料格式,使用正規化的值,另有 8 位使用不帶正負號的整數格式的範本。深度取值在 [0.0, 1.0] 的範圍內。範本取值在 [0, 255] 的範圍內。

DataFormat DATA_FORMAT_D32_SFLOAT_S8_UINT = 129

32 位元無符號浮點數深度資料格式,數值原樣儲存,另有 8 位使用不帶正負號的整數格式的模板。範本取值在 [0, 255] 的範圍內。

DataFormat DATA_FORMAT_BC1_RGB_UNORM_BLOCK = 130

顯存壓縮的無符號紅、綠、藍通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。該格式的精度為紅通道 5 位、綠通道 6 位、藍通道 5 位。使用 BC1 紋理壓縮(也叫 S3TC DXT1)。

DataFormat DATA_FORMAT_BC1_RGB_SRGB_BLOCK = 131

VRAM-compressed unsigned red/green/blue channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range. The format's precision is 5 bits of red channel, 6 bits of green channel, and 5 bits of blue channel. Using BC1 texture compression (also known as S3TC DXT1).

DataFormat DATA_FORMAT_BC1_RGBA_UNORM_BLOCK = 132

顯存壓縮的無符號紅、綠、藍、Alpha 通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。該格式的精度為紅通道 5 位、綠通道 6 位、藍通道 5 位、Alpha 通道 1 位。使用 BC1 紋理壓縮(也叫 S3TC DXT1)。

DataFormat DATA_FORMAT_BC1_RGBA_SRGB_BLOCK = 133

VRAM-compressed unsigned red/green/blue/alpha channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range. The format's precision is 5 bits of red channel, 6 bits of green channel, 5 bits of blue channel, and 1 bit of alpha channel. Using BC1 texture compression (also known as S3TC DXT1).

DataFormat DATA_FORMAT_BC2_UNORM_BLOCK = 134

顯存壓縮的無符號紅、綠、藍、Alpha 通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。該格式的精度為紅通道 5 位、綠通道 6 位、藍通道 5 位、Alpha 通道 4 位。使用 BC2 紋理壓縮(也叫 S3TC DXT3)。

DataFormat DATA_FORMAT_BC2_SRGB_BLOCK = 135

VRAM-compressed unsigned red/green/blue/alpha channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range. The format's precision is 5 bits of red channel, 6 bits of green channel, 5 bits of blue channel, and 4 bits of alpha channel. Using BC2 texture compression (also known as S3TC DXT3).

DataFormat DATA_FORMAT_BC3_UNORM_BLOCK = 136

顯存壓縮的無符號紅、綠、藍、Alpha 通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。該格式的精度為紅通道 5 位、綠通道 6 位、藍通道 5 位、Alpha 通道 8 位。使用 BC3 紋理壓縮(也叫 S3TC DXT5)。

DataFormat DATA_FORMAT_BC3_SRGB_BLOCK = 137

VRAM-compressed unsigned red/green/blue/alpha channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range. The format's precision is 5 bits of red channel, 6 bits of green channel, 5 bits of blue channel, and 8 bits of alpha channel. Using BC3 texture compression (also known as S3TC DXT5).

DataFormat DATA_FORMAT_BC4_UNORM_BLOCK = 138

顯存壓縮的無符號紅通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。該格式的精度為紅通道 8 位。使用 BC4 紋理壓縮。

DataFormat DATA_FORMAT_BC4_SNORM_BLOCK = 139

顯存壓縮的帶符號紅通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。該格式的精度為紅通道 8 位。使用 BC4 紋理壓縮。

DataFormat DATA_FORMAT_BC5_UNORM_BLOCK = 140

顯存壓縮的無符號紅、綠通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。該格式的精度為紅通道 8 位、綠通道 8 位。使用 BC5 紋理壓縮(也叫 S3TC RGTC)。

DataFormat DATA_FORMAT_BC5_SNORM_BLOCK = 141

顯存壓縮的帶符號紅、綠通道資料格式,使用正規化的值。取值均在 [-1.0, 1.0] 的範圍內。該格式的精度為紅通道 8 位、綠通道 8 位。使用 BC5 紋理壓縮(也叫 S3TC RGTC)。

DataFormat DATA_FORMAT_BC6H_UFLOAT_BLOCK = 142

VRAM-compressed unsigned red/green/blue channel data format with the floating-point value stored as-is. The format's precision is between 10 and 13 bits for the red/green/blue channels. Using BC6H texture compression (also known as BPTC HDR).

DataFormat DATA_FORMAT_BC6H_SFLOAT_BLOCK = 143

VRAM-compressed signed red/green/blue channel data format with the floating-point value stored as-is. The format's precision is between 10 and 13 bits for the red/green/blue channels. Using BC6H texture compression (also known as BPTC HDR).

DataFormat DATA_FORMAT_BC7_UNORM_BLOCK = 144

顯存壓縮的無符號紅、綠、藍、Alpha 通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。該格式的精度為紅、綠、藍通道在 4 到 7 位之間,Alpha 通道在 0 到 8 位之間。使用 BC7 紋理壓縮。也叫 BPTC HDR。

DataFormat DATA_FORMAT_BC7_SRGB_BLOCK = 145

VRAM-compressed unsigned red/green/blue/alpha channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range. The format's precision is between 4 and 7 bits for the red/green/blue channels and between 0 and 8 bits for the alpha channel. Also known as BPTC LDR.

DataFormat DATA_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 146

顯存壓縮的無符號紅、綠、藍通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。使用 ETC2 紋理壓縮。

DataFormat DATA_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 147

VRAM-compressed unsigned red/green/blue channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range. Using ETC2 texture compression.

DataFormat DATA_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 148

顯存壓縮的無符號紅、綠、藍、Alpha 通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。紅、綠、藍均使用 8 位精度,Alpha 使用 1 位精度。使用 ETC2 紋理壓縮。

DataFormat DATA_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 149

VRAM-compressed unsigned red/green/blue/alpha channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range. Red/green/blue use 8 bit of precision each, with alpha using 1 bit of precision. Using ETC2 texture compression.

DataFormat DATA_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 150

顯存壓縮的無符號紅、綠、藍、Alpha 通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。紅、綠、藍均使用 8 位精度,Alpha 使用 8 位精度。使用 ETC2 紋理壓縮。

DataFormat DATA_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 151

VRAM-compressed unsigned red/green/blue/alpha channel data format with normalized value and nonlinear sRGB encoding. Values are in the [0.0, 1.0] range. Red/green/blue use 8 bits of precision each, with alpha using 8 bits of precision. Using ETC2 texture compression.

DataFormat DATA_FORMAT_EAC_R11_UNORM_BLOCK = 152

11 位元顯存壓縮的無符號紅通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。使用 ETC2 紋理壓縮。

DataFormat DATA_FORMAT_EAC_R11_SNORM_BLOCK = 153

11-bit VRAM-compressed signed red channel data format with normalized value. Values are in the [-1.0, 1.0] range. Using ETC2 texture compression.

DataFormat DATA_FORMAT_EAC_R11G11_UNORM_BLOCK = 154

11 位元顯存壓縮的無符號紅、綠通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。使用 ETC2 紋理壓縮。

DataFormat DATA_FORMAT_EAC_R11G11_SNORM_BLOCK = 155

11-bit VRAM-compressed signed red/green channel data format with normalized value. Values are in the [-1.0, 1.0] range. Using ETC2 texture compression.

DataFormat DATA_FORMAT_ASTC_4x4_UNORM_BLOCK = 156

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 4x4 的區塊內(品質最高)。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_4x4_SRGB_BLOCK = 157

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 4×4 blocks (highest quality). Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_5x4_UNORM_BLOCK = 158

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 5x4 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_5x4_SRGB_BLOCK = 159

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 5×4 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_5x5_UNORM_BLOCK = 160

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 5x5 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_5x5_SRGB_BLOCK = 161

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 5×5 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_6x5_UNORM_BLOCK = 162

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 6x5 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_6x5_SRGB_BLOCK = 163

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 6×5 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_6x6_UNORM_BLOCK = 164

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 6x6 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_6x6_SRGB_BLOCK = 165

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 6×6 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_8x5_UNORM_BLOCK = 166

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 8x5 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_8x5_SRGB_BLOCK = 167

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 8×5 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_8x6_UNORM_BLOCK = 168

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 8x6 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_8x6_SRGB_BLOCK = 169

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 8×6 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_8x8_UNORM_BLOCK = 170

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 8x8 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_8x8_SRGB_BLOCK = 171

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 8×8 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_10x5_UNORM_BLOCK = 172

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 10x5 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_10x5_SRGB_BLOCK = 173

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 10×5 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_10x6_UNORM_BLOCK = 174

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 10x6 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_10x6_SRGB_BLOCK = 175

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 10×6 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_10x8_UNORM_BLOCK = 176

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 10x8 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_10x8_SRGB_BLOCK = 177

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 10×8 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_10x10_UNORM_BLOCK = 178

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 10x10 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_10x10_SRGB_BLOCK = 179

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 10×10 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_12x10_UNORM_BLOCK = 180

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 12x10 的區塊內。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_12x10_SRGB_BLOCK = 181

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 12×10 blocks. Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_ASTC_12x12_UNORM_BLOCK = 182

顯存壓縮的無符號浮點數資料格式,使用正規化的值,緊縮在 12 個區塊內(品質最低)。取值均在 [0.0, 1.0] 的範圍內。使用 ASTC 壓縮。

DataFormat DATA_FORMAT_ASTC_12x12_SRGB_BLOCK = 183

VRAM-compressed unsigned floating-point data format with normalized value and nonlinear sRGB encoding, packed in 12 blocks (lowest quality). Values are in the [0.0, 1.0] range. Using ASTC compression.

DataFormat DATA_FORMAT_G8B8G8R8_422_UNORM = 184

每通道 8 位元的無符號浮點數綠、藍、紅通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_B8G8R8G8_422_UNORM = 185

每通道 8 位元的無符號浮點數藍、綠、紅通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 186

每通道 8 位元的無符號浮點數綠、藍、紅通道資料格式,使用正規化的值,分別在三個獨立平面儲存(綠 + 藍 + 紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料縱橫半解析度儲存(即 2x2 相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G8_B8R8_2PLANE_420_UNORM = 187

每通道 8 位元的無符號浮點數綠、藍、紅通道資料格式,使用正規化的值,分別在兩個獨立平面儲存(綠 + 藍、紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料縱橫半解析度儲存(即 2x2 相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 188

每通道 8 位元的無符號浮點數綠、藍、紅通道資料格式,使用正規化的值,分別在兩個獨立平面儲存(綠 + 藍 + 紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G8_B8R8_2PLANE_422_UNORM = 189

每通道 8 位元的無符號浮點數綠、藍、紅通道資料格式,使用正規化的值,分別在兩個獨立平面儲存(綠 + 藍、紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 190

每通道 8 位元的無符號浮點數綠、藍、紅通道資料格式,使用正規化的值,分別在三個獨立平面儲存。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R10X6_UNORM_PACK16 = 191

每通道 10 位元的無符號浮點數紅通道資料,使用正規化的值,另有 6 位未使用,緊縮在 16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R10X6G10X6_UNORM_2PACK16 = 192

每通道 10 位元的無符號浮點數紅、綠通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 2x16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 193

每通道 10 位元的無符號浮點數紅、綠、藍、Alpha 通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 4x16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 194

每通道 10 位元的無符號浮點數綠、藍、綠、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 4x16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。綠通道出現兩次,但包含不同的值,因此能夠表示為完整的解析度。

DataFormat DATA_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 195

每通道 10 位元的無符號浮點數藍、綠、紅、綠通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 4x16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。綠通道出現兩次,但包含不同的值,因此能夠表示為完整的解析度。

DataFormat DATA_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 196

每通道 10 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 3x16 個比特位中,分別在兩個獨立平面儲存(綠 + 藍 + 紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料縱橫半解析度儲存(即 2x2 相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 197

每通道 10 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 3x16 個比特位中,分別在兩個獨立平面儲存(綠 + 藍、紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料縱橫半解析度儲存(即 2x2 相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 198

每通道 10 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 3x16 個比特位中,分別在三個獨立平面儲存(綠 + 藍 + 紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 199

每通道 10 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 3x16 個比特位中,分別在三個獨立平面儲存(綠 + 藍、紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 200

每通道 10 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 3x16 個比特位中,分別在三個獨立平面儲存(綠 + 藍 + 紅)。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R12X4_UNORM_PACK16 = 201

每通道 12 位元的無符號浮點數紅通道資料,使用正規化的值,另有 6 位未使用,緊縮在 16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R12X4G12X4_UNORM_2PACK16 = 202

每通道 12 位元的無符號浮點數紅、綠通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 2x16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 203

每通道 12 位元的無符號浮點數紅、綠、藍、Alpha 通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 4x16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 204

每通道 12 位元的無符號浮點數綠、藍、綠、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 4x16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。綠通道出現兩次,但包含不同的值,因此能夠表示為完整的解析度。

DataFormat DATA_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 205

每通道 12 位元的無符號浮點數藍、綠、紅、綠通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 4x16 個比特位中。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。綠通道出現兩次,但包含不同的值,因此能夠表示為完整的解析度。

DataFormat DATA_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 206

每通道 12 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 3x16 個比特位中,分別在兩個獨立平面儲存(綠 + 藍 + 紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料縱橫半解析度儲存(即 2x2 相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 207

每通道 12 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 3x16 個比特位中,分別在兩個獨立平面儲存(綠 + 藍、紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料縱橫半解析度儲存(即 2x2 相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 208

每通道 12 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 3x16 個比特位中,分別在三個獨立平面儲存(綠 + 藍 + 紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 209

每通道 12 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 3x16 個比特位中,分別在三個獨立平面儲存(綠 + 藍、紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 210

每通道 12 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用,緊縮在 3x16 個比特位中,分別在三個獨立平面儲存(綠 + 藍 + 紅)。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_G16B16G16R16_422_UNORM = 211

每通道 16 位元的無符號浮點數綠、藍、紅通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_B16G16R16G16_422_UNORM = 212

每通道 16 位元的無符號浮點數藍、綠、紅通道資料格式,使用正規化的值。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 213

每通道 16 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用。分別在兩個獨立平面儲存(綠 + 藍 + 紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料縱橫半解析度儲存(即 2x2 相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G16_B16R16_2PLANE_420_UNORM = 214

每通道 16 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用。分別在兩個獨立平面儲存(綠 + 藍、紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料縱橫半解析度儲存(即 2x2 相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 215

每通道 16 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用。分別在三個獨立平面儲存(綠 + 藍 + 紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G16_B16R16_2PLANE_422_UNORM = 216

每通道 16 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用。分別在三個獨立平面儲存(綠 + 藍、紅)。取值均在 [0.0, 1.0] 的範圍內。藍、紅通道資料橫向半解析度儲存(即兩個橫向相鄰的圖元共用同一個藍、紅通道數值)。

DataFormat DATA_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 217

每通道 16 位元的無符號浮點數綠、藍、紅通道資料,使用正規化的值,每個通道均另有 6 位未使用。分別在三個獨立平面儲存(綠 + 藍 + 紅)。取值均在 [0.0, 1.0] 的範圍內。

DataFormat DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 218

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 219

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 220

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 221

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 222

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 223

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 224

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 225

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 226

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 227

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 228

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 229

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 230

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 231

There is currently no description for this enum. Please help us by contributing one!

DataFormat DATA_FORMAT_MAX = 232

代表 DataFormat 列舉的大小。


flags BarrierMask: 🔗

BarrierMask BARRIER_MASK_VERTEX = 1

傳輸屏障遮罩。

BarrierMask BARRIER_MASK_FRAGMENT = 8

傳輸屏障遮罩。

BarrierMask BARRIER_MASK_COMPUTE = 2

計算屏障遮罩。

BarrierMask BARRIER_MASK_TRANSFER = 4

傳輸屏障遮罩。

BarrierMask BARRIER_MASK_RASTER = 9

所有型別的屏障遮罩(柵格化、計算、傳輸)。等價於 BARRIER_MASK_RASTER | BARRIER_MASK_COMPUTE | BARRIER_MASK_TRANSFER

BarrierMask BARRIER_MASK_ALL_BARRIERS = 32767

所有型別(頂點、片段、計算、傳輸)的屏障遮罩。

BarrierMask BARRIER_MASK_NO_BARRIER = 32768

沒有任何型別的屏障。


enum TextureType: 🔗

TextureType TEXTURE_TYPE_1D = 0

一維紋理。

TextureType TEXTURE_TYPE_2D = 1

二維紋理。

TextureType TEXTURE_TYPE_3D = 2

三維紋理。

TextureType TEXTURE_TYPE_CUBE = 3

Cubemap 紋理。

TextureType TEXTURE_TYPE_1D_ARRAY = 4

一維紋理陣列。

TextureType TEXTURE_TYPE_2D_ARRAY = 5

二維紋理陣列。

TextureType TEXTURE_TYPE_CUBE_ARRAY = 6

Cubemap 紋理陣列。

TextureType TEXTURE_TYPE_MAX = 7

代表 TextureType 列舉的大小。


enum TextureSamples: 🔗

TextureSamples TEXTURE_SAMPLES_1 = 0

執行 1 次紋理取樣(最快,但抗鋸齒品質最低)。

TextureSamples TEXTURE_SAMPLES_2 = 1

執行 2 次紋理取樣。

TextureSamples TEXTURE_SAMPLES_4 = 2

執行 4 次紋理取樣。

TextureSamples TEXTURE_SAMPLES_8 = 3

執行 8 次紋理取樣。移動 GPU 不支援(包括 Apple Silicon)。

TextureSamples TEXTURE_SAMPLES_16 = 4

執行 16 次紋理取樣。移動 GPU 及許多桌面 GPU 均不支援。

TextureSamples TEXTURE_SAMPLES_32 = 5

執行 32 次紋理取樣。大多數 GPU 均不支援。

TextureSamples TEXTURE_SAMPLES_64 = 6

執行 64 次紋理取樣(最慢,但抗鋸齒品質最高)。大多數 GPU 均不支援。

TextureSamples TEXTURE_SAMPLES_MAX = 7

代表 TextureSamples 列舉的大小。


flags TextureUsageBits: 🔗

TextureUsageBits TEXTURE_USAGE_SAMPLING_BIT = 1

紋理可以取樣。

TextureUsageBits TEXTURE_USAGE_COLOR_ATTACHMENT_BIT = 2

紋理可以用作影格緩衝的顏色附件。

TextureUsageBits TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 4

紋理可以用作影格緩衝的深度/範本附件。

TextureUsageBits TEXTURE_USAGE_DEPTH_RESOLVE_ATTACHMENT_BIT = 4096

Texture can be used as a depth/stencil resolve attachment in a framebuffer.

TextureUsageBits TEXTURE_USAGE_STORAGE_BIT = 8

紋理可以用作儲存圖像

TextureUsageBits TEXTURE_USAGE_STORAGE_ATOMIC_BIT = 16

紋理可以用作支援不可分割操作的儲存圖像

TextureUsageBits TEXTURE_USAGE_CPU_READ_BIT = 32

紋理可以在 CPU 上使用 texture_get_data() 讀取,比不設定這一位要快,因為會始終在系統記憶體中保留。

TextureUsageBits TEXTURE_USAGE_CAN_UPDATE_BIT = 64

紋理可以使用 texture_update() 更新。

TextureUsageBits TEXTURE_USAGE_CAN_COPY_FROM_BIT = 128

紋理可以作為 texture_copy() 的來源。

TextureUsageBits TEXTURE_USAGE_CAN_COPY_TO_BIT = 256

紋理可以作為 texture_copy() 的目標。

TextureUsageBits TEXTURE_USAGE_INPUT_ATTACHMENT_BIT = 512

紋理可以用作影格緩衝的輸入附件


enum TextureSwizzle: 🔗

TextureSwizzle TEXTURE_SWIZZLE_IDENTITY = 0

原樣返回取樣數值。

TextureSwizzle TEXTURE_SWIZZLE_ZERO = 1

取樣時使用返回 0.0

TextureSwizzle TEXTURE_SWIZZLE_ONE = 2

取樣時使用返回 1.0

TextureSwizzle TEXTURE_SWIZZLE_R = 3

對紅色通道進行取樣。

TextureSwizzle TEXTURE_SWIZZLE_G = 4

對綠色通道進行取樣。

TextureSwizzle TEXTURE_SWIZZLE_B = 5

對藍色通道進行取樣。

TextureSwizzle TEXTURE_SWIZZLE_A = 6

對 Alpha 通道進行取樣。

TextureSwizzle TEXTURE_SWIZZLE_MAX = 7

代表 TextureSwizzle 列舉的大小。


enum TextureSliceType: 🔗

TextureSliceType TEXTURE_SLICE_2D = 0

二維紋理切片。

TextureSliceType TEXTURE_SLICE_CUBEMAP = 1

立方體貼圖紋理切片。

TextureSliceType TEXTURE_SLICE_3D = 2

三維紋理切片。


enum SamplerFilter: 🔗

SamplerFilter SAMPLER_FILTER_NEAREST = 0

最近鄰取樣器篩選。按照比源更高解析度取樣時,會產生圖元化的效果。

SamplerFilter SAMPLER_FILTER_LINEAR = 1

雙線性取樣器篩選。按照比源更高解析度取樣時,會產生模糊的效果。


enum SamplerRepeatMode: 🔗

SamplerRepeatMode SAMPLER_REPEAT_MODE_REPEAT = 0

啟用重複取樣。

SamplerRepeatMode SAMPLER_REPEAT_MODE_MIRRORED_REPEAT = 1

啟用鏡像重複取樣。對 [0.0, 1.0] 範圍外進行取樣時,返回取樣器的鏡像版本。如果取樣的是更遠的位置,則會對鏡像版本再次鏡像,並按照這樣的規律無限重複下去。

SamplerRepeatMode SAMPLER_REPEAT_MODE_CLAMP_TO_EDGE = 2

禁用重複取樣。對 [0.0, 1.0] 範圍外進行取樣時,返回邊緣上最後一個圖元的顏色。

SamplerRepeatMode SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER = 3

禁用重複取樣。對 [0.0, 1.0] 範圍外進行取樣時,返回指定的邊框顏色 RDSamplerState.border_color

SamplerRepeatMode SAMPLER_REPEAT_MODE_MIRROR_CLAMP_TO_EDGE = 4

啟用單次鏡像重複取樣。對 [-1.0, 0.0] 範圍進行取樣時,返回取樣器的鏡像版本。對 [-1.0, 1.0] 範圍外進行取樣時,返回邊緣上最後一個圖元的顏色。

SamplerRepeatMode SAMPLER_REPEAT_MODE_MAX = 5

代表 SamplerRepeatMode 列舉的大小。


enum SamplerBorderColor: 🔗

SamplerBorderColor SAMPLER_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0

[0.0, 1.0] 範圍外進行取樣時,返回浮點型的透明黑色。僅在取樣器的重複模式為 SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER 時有效。

SamplerBorderColor SAMPLER_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1

Return an integer transparent black color when sampling outside the [0.0, 1.0] range. Only effective if the sampler repeat mode is SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER.

SamplerBorderColor SAMPLER_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2

[0.0, 1.0] 範圍外進行取樣時,返回浮點型的不透明黑色。僅在取樣器的重複模式為 SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER 時有效。

SamplerBorderColor SAMPLER_BORDER_COLOR_INT_OPAQUE_BLACK = 3

Return an integer opaque black color when sampling outside the [0.0, 1.0] range. Only effective if the sampler repeat mode is SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER.

SamplerBorderColor SAMPLER_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4

[0.0, 1.0] 範圍外進行取樣時,返回浮點型的不透明白色。僅在取樣器的重複模式為 SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER 時有效。

SamplerBorderColor SAMPLER_BORDER_COLOR_INT_OPAQUE_WHITE = 5

Return an integer opaque white color when sampling outside the [0.0, 1.0] range. Only effective if the sampler repeat mode is SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER.

SamplerBorderColor SAMPLER_BORDER_COLOR_MAX = 6

代表 SamplerBorderColor 列舉的大小。


enum VertexFrequency: 🔗

VertexFrequency VERTEX_FREQUENCY_VERTEX = 0

頂點屬性定址是頂點的功能。用於指定從緩衝中拉取頂點屬性的頻率。

VertexFrequency VERTEX_FREQUENCY_INSTANCE = 1

頂點屬性定址是實例索引的功能。用於指定從緩衝中拉取頂點屬性的頻率。


enum IndexBufferFormat: 🔗

IndexBufferFormat INDEX_BUFFER_FORMAT_UINT16 = 0

16 位元不帶正負號的整數格式的索引緩衝。對可指定索引最大值的限制為 65535

IndexBufferFormat INDEX_BUFFER_FORMAT_UINT32 = 1

32 位元不帶正負號的整數格式的索引緩衝。對可指定索引最大值的限制為 4294967295


flags StorageBufferUsage: 🔗

StorageBufferUsage STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT = 1

There is currently no description for this enum. Please help us by contributing one!


flags BufferCreationBits: 🔗

BufferCreationBits BUFFER_CREATION_DEVICE_ADDRESS_BIT = 1

Optionally, set this flag if you wish to use buffer_get_device_address() functionality. You must first check the GPU supports it:

rd = RenderingServer.get_rendering_device()

if rd.has_feature(RenderingDevice.SUPPORTS_BUFFER_DEVICE_ADDRESS):
    storage_buffer = rd.storage_buffer_create(bytes.size(), bytes, RenderingDevice.STORAGE_BUFFER_USAGE_SHADER_DEVICE_ADDRESS)
    storage_buffer_address = rd.buffer_get_device_address(storage_buffer)

BufferCreationBits BUFFER_CREATION_AS_STORAGE_BIT = 2

Set this flag so that it is created as storage. This is useful if Compute Shaders need access (for reading or writing) to the buffer, e.g. skeletal animations are processed in Compute Shaders which need access to vertex buffers, to be later consumed by vertex shaders as part of the regular rasterization pipeline.

BufferCreationBits BUFFER_CREATION_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT = 8

實驗性: 此常數可能在未來版本中變更或移除。

Allows usage of this buffer as input data for an acceleration structure build operation. You must first check that the GPU supports it:

rd = RenderingServer.get_rendering_device()

if rd.has_feature(RenderingDevice.SUPPORTS_RAYTRACING_PIPELINE):
    storage_buffer = rd.storage_buffer_create(bytes.size(), bytes, RenderingDevice.BUFFER_CREATION_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT)

flags AccelerationStructureFlagBits: 🔗

AccelerationStructureFlagBits ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT = 1

實驗性: 此常數可能在未來版本中變更或移除。

Allows the acceleration structure to be updated after it has been built.

AccelerationStructureFlagBits ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT = 2

實驗性: 此常數可能在未來版本中變更或移除。

Allows the acceleration structure to be compacted to reduce memory usage after it has been built.

AccelerationStructureFlagBits ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT = 4

實驗性: 此常數可能在未來版本中變更或移除。

Prioritizes ray traversal performance over build performance when building the acceleration structure.

AccelerationStructureFlagBits ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT = 8

實驗性: 此常數可能在未來版本中變更或移除。

Prioritizes build performance over ray traversal performance when building the acceleration structure.

AccelerationStructureFlagBits ACCELERATION_STRUCTURE_LOW_MEMORY_BIT = 16

實驗性: 此常數可能在未來版本中變更或移除。

Reduces the memory usage of the acceleration structure, potentially at the cost of reduced ray traversal performance.


flags AccelerationStructureGeometryFlagBits: 🔗

AccelerationStructureGeometryFlagBits ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT = 1

實驗性: 此常數可能在未來版本中變更或移除。

An opaque geometry does not invoke the any hit shaders.

AccelerationStructureGeometryFlagBits ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT = 2

實驗性: 此常數可能在未來版本中變更或移除。

This geometry only calls the any hit shader a single time for each primitive.


flags AccelerationStructureInstanceFlagBits: 🔗

AccelerationStructureInstanceFlagBits ACCELERATION_STRUCTURE_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT = 1

實驗性: 此常數可能在未來版本中變更或移除。

Disables triangle face culling for this instance during ray traversal.

AccelerationStructureInstanceFlagBits ACCELERATION_STRUCTURE_INSTANCE_TRIANGLE_FLIP_FACING_BIT = 2

實驗性: 此常數可能在未來版本中變更或移除。

Flips the triangle facing direction for this instance during ray traversal.

AccelerationStructureInstanceFlagBits ACCELERATION_STRUCTURE_INSTANCE_FORCE_OPAQUE_BIT = 4

實驗性: 此常數可能在未來版本中變更或移除。

Forces all geometries in this instance to be treated as opaque, preventing any hit shaders from being invoked.

AccelerationStructureInstanceFlagBits ACCELERATION_STRUCTURE_INSTANCE_FORCE_NO_OPAQUE_BIT = 8

實驗性: 此常數可能在未來版本中變更或移除。

Forces all geometries in this instance to be treated as non-opaque, allowing any hit shaders to be invoked.


enum UniformType: 🔗

UniformType UNIFORM_TYPE_SAMPLER = 0

取樣器 uniform。

UniformType UNIFORM_TYPE_SAMPLER_WITH_TEXTURE = 1

帶有紋理的取樣器 uniform。

UniformType UNIFORM_TYPE_TEXTURE = 2

紋理 uniform。

UniformType UNIFORM_TYPE_IMAGE = 3

圖像 uniform。

UniformType UNIFORM_TYPE_TEXTURE_BUFFER = 4

紋理緩衝 uniform。

UniformType UNIFORM_TYPE_SAMPLER_WITH_TEXTURE_BUFFER = 5

帶有紋理的取樣器 uniform。

UniformType UNIFORM_TYPE_IMAGE_BUFFER = 6

圖像緩衝 uniform。

UniformType UNIFORM_TYPE_UNIFORM_BUFFER = 7

Uniform 緩衝區 uniform。

UniformType UNIFORM_TYPE_STORAGE_BUFFER = 8

儲存緩衝區 uniform。

UniformType UNIFORM_TYPE_INPUT_ATTACHMENT = 9

輸入附件 uniform。

UniformType UNIFORM_TYPE_UNIFORM_BUFFER_DYNAMIC = 10

Same as UNIFORM_TYPE_UNIFORM_BUFFER but for buffers created with BUFFER_CREATION_DYNAMIC_PERSISTENT_BIT.

Note: This flag is not available to GD users due to being too dangerous (i.e. wrong usage can result in visual glitches).

It's exposed in case GD users receive a buffer created with such flag from Godot.

UniformType UNIFORM_TYPE_STORAGE_BUFFER_DYNAMIC = 11

Same as UNIFORM_TYPE_STORAGE_BUFFER but for buffers created with BUFFER_CREATION_DYNAMIC_PERSISTENT_BIT.

Note: This flag is not available to GD users due to being too dangerous (i.e. wrong usage can result in visual glitches).

It's exposed in case GD users receive a buffer created with such flag from Godot.

UniformType UNIFORM_TYPE_ACCELERATION_STRUCTURE = 12

Acceleration structure uniform.

UniformType UNIFORM_TYPE_MAX = 13

表示 UniformType 列舉的大小。


enum RenderPrimitive: 🔗

RenderPrimitive RENDER_PRIMITIVE_POINTS = 0

算繪點的圖元(大小為常數,和與相機之間的距離無關)。

RenderPrimitive RENDER_PRIMITIVE_LINES = 1

算繪線段列表的圖元。線段在繪製時是彼此獨立的。

RenderPrimitive RENDER_PRIMITIVE_LINES_WITH_ADJACENCY = 2

算繪線段列表的圖元,提供鄰接資料。

注意:鄰接資料僅在幾何著色器中有用,但 Godot 並沒有暴露。

RenderPrimitive RENDER_PRIMITIVE_LINESTRIPS = 3

算繪線段條帶的圖元。繪製的線段與它的前一個頂點是相連的。

RenderPrimitive RENDER_PRIMITIVE_LINESTRIPS_WITH_ADJACENCY = 4

算繪線段條帶的圖元,提供鄰接資料。

注意:鄰接資料僅在幾何著色器中有用,但 Godot 並沒有暴露。

RenderPrimitive RENDER_PRIMITIVE_TRIANGLES = 5

算繪三角形列表的圖元。三角形在繪製時是彼此獨立的。

RenderPrimitive RENDER_PRIMITIVE_TRIANGLES_WITH_ADJACENCY = 6

Triangle list rendering primitive with adjacency.

Note: Adjacency is only useful with geometry shaders, which Godot does not expose.

RenderPrimitive RENDER_PRIMITIVE_TRIANGLE_STRIPS = 7

算繪三角形條帶的圖元。繪製的三角形與它的前一個三角形是相連的。

RenderPrimitive RENDER_PRIMITIVE_TRIANGLE_STRIPS_WITH_AJACENCY = 8

算繪三角形條帶的圖元,提供鄰接數據。

注意:鄰接資料僅在幾何著色器中有用,但 Godot 並沒有暴露。

RenderPrimitive RENDER_PRIMITIVE_TRIANGLE_STRIPS_WITH_RESTART_INDEX = 9

算繪三角形條帶的圖元,啟用圖元重啟。繪製的三角形與它的前一個三角形是相連的,但是在繪製前可以指定圖元重啟索引,這樣在指定索引之後就會再建立一條三角形條帶。

注意:僅相容索引繪圖。

RenderPrimitive RENDER_PRIMITIVE_TESSELATION_PATCH = 10

曲面細分面片算繪圖元。僅對曲面細分著色器有用,可以將面片變形。

RenderPrimitive RENDER_PRIMITIVE_MAX = 11

代表 RenderPrimitive 列舉的大小。


enum PolygonCullMode: 🔗

PolygonCullMode POLYGON_CULL_DISABLED = 0

不使用多邊形的正面和背面剔除。

PolygonCullMode POLYGON_CULL_FRONT = 1

使用多邊形的正面剔除(隱藏正對相機的面)。

PolygonCullMode POLYGON_CULL_BACK = 2

使用多邊形的背面剔除(隱藏背對相機的面)。


enum PolygonFrontFace: 🔗

PolygonFrontFace POLYGON_FRONT_FACE_CLOCKWISE = 0

決定多邊形面為是否為正面時,使用順時針纏繞順序。

PolygonFrontFace POLYGON_FRONT_FACE_COUNTER_CLOCKWISE = 1

決定多邊形面為是否為正面時,使用逆時針纏繞順序。


enum StencilOperation: 🔗

StencilOperation STENCIL_OP_KEEP = 0

保留目前的範本值。

StencilOperation STENCIL_OP_ZERO = 1

將範本值設定為 0

StencilOperation STENCIL_OP_REPLACE = 2

將現有的範本值替換為新值。

StencilOperation STENCIL_OP_INCREMENT_AND_CLAMP = 3

將現有的範本值加一,到達能夠表示的最大無符號值之後就不會再增長。會將範本位元視作不帶正負號的整數。

StencilOperation STENCIL_OP_DECREMENT_AND_CLAMP = 4

將現有的範本值減一,到達最小值之後就不會再降低。會將範本位元視作不帶正負號的整數。

StencilOperation STENCIL_OP_INVERT = 5

將現有的範本值按位元取反。

StencilOperation STENCIL_OP_INCREMENT_AND_WRAP = 6

將現有的範本值加一,到達能夠表示的最大無符號值之後環繞至 0。會將範本位元視作不帶正負號的整數。

StencilOperation STENCIL_OP_DECREMENT_AND_WRAP = 7

將現有的範本值減一,到達最小值之後環繞至能夠表示的最大無符號值。會將範本位元視作不帶正負號的整數。

StencilOperation STENCIL_OP_MAX = 8

代表 StencilOperation 列舉的大小。


enum CompareOperator: 🔗

CompareOperator COMPARE_OP_NEVER = 0

“永不”比較(與 COMPARE_OP_ALWAYS 相對)。

CompareOperator COMPARE_OP_LESS = 1

“小於”比較。

CompareOperator COMPARE_OP_EQUAL = 2

“等於”比較。

CompareOperator COMPARE_OP_LESS_OR_EQUAL = 3

“小於等於”比較。

CompareOperator COMPARE_OP_GREATER = 4

“大於”比較。

CompareOperator COMPARE_OP_NOT_EQUAL = 5

“不等於”比較。

CompareOperator COMPARE_OP_GREATER_OR_EQUAL = 6

“大於等於”比較。

CompareOperator COMPARE_OP_ALWAYS = 7

“始終”比較(與 COMPARE_OP_NEVER 相對)。

CompareOperator COMPARE_OP_MAX = 8

代表 CompareOperator 列舉的大小。


enum LogicOperation: 🔗

LogicOperation LOGIC_OP_CLEAR = 0

邏輯清除運算(結果始終為 0)。另見 LOGIC_OP_SET

LogicOperation LOGIC_OP_AND = 1

邏輯與(AND)運算。

LogicOperation LOGIC_OP_AND_REVERSE = 2

邏輯與(AND)運算,翻轉目標運算元。另見 LOGIC_OP_AND_INVERTED

LogicOperation LOGIC_OP_COPY = 3

邏輯複製運算(保留來源的值)。另見 LOGIC_OP_COPY_INVERTEDLOGIC_OP_NO_OP

LogicOperation LOGIC_OP_AND_INVERTED = 4

邏輯與(AND)運算,翻轉來源運算元。另見 LOGIC_OP_AND_REVERSE

LogicOperation LOGIC_OP_NO_OP = 5

邏輯空運算(保留目標值)。另見 LOGIC_OP_COPY

LogicOperation LOGIC_OP_XOR = 6

邏輯異或(XOR)運算。

LogicOperation LOGIC_OP_OR = 7

邏輯或(OR)運算。

LogicOperation LOGIC_OP_NOR = 8

邏輯非或(NOR)運算。

LogicOperation LOGIC_OP_EQUIVALENT = 9

邏輯非異或(XNOR)運算。

LogicOperation LOGIC_OP_INVERT = 10

邏輯翻轉運算。

LogicOperation LOGIC_OP_OR_REVERSE = 11

邏輯或(OR)運算,翻轉目標運算元。另見 LOGIC_OP_OR_REVERSE

LogicOperation LOGIC_OP_COPY_INVERTED = 12

邏輯非(NOT)運算(將值翻轉)。另見 LOGIC_OP_COPY

LogicOperation LOGIC_OP_OR_INVERTED = 13

邏輯或(OR)運算,翻轉來源運算元。另見 LOGIC_OP_OR_REVERSE

LogicOperation LOGIC_OP_NAND = 14

邏輯非與(NAND)運算。

LogicOperation LOGIC_OP_SET = 15

邏輯設定運算(結果始終為 1)。另見 LOGIC_OP_CLEAR

LogicOperation LOGIC_OP_MAX = 16

代表 LogicOperation 列舉的大小。


enum BlendFactor: 🔗

BlendFactor BLEND_FACTOR_ZERO = 0

混合係數常數 0.0

BlendFactor BLEND_FACTOR_ONE = 1

混合係數常數 1.0

BlendFactor BLEND_FACTOR_SRC_COLOR = 2

顏色混合係數為 source color。Alpha 混合係數為 source alpha

BlendFactor BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3

顏色混合係數為 1.0 - source color。Alpha 混合係數為 1.0 - source alpha

BlendFactor BLEND_FACTOR_DST_COLOR = 4

顏色混合係數為 destination color。Alpha 混合係數為 destination alpha

BlendFactor BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5

顏色混合係數為 1.0 - destination color。Alpha 混合係數為 1.0 - destination alpha

BlendFactor BLEND_FACTOR_SRC_ALPHA = 6

顏色混合和 Alpha 混合係數為 source alpha

BlendFactor BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7

顏色混合和 Alpha 混合係數為 1.0 - source alpha

BlendFactor BLEND_FACTOR_DST_ALPHA = 8

顏色混合和 Alpha 混合係數為 destination alpha

BlendFactor BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9

顏色混合和 Alpha 混合係數為 1.0 - destination alpha

BlendFactor BLEND_FACTOR_CONSTANT_COLOR = 10

顏色混合係數為 blend constant color。Alpha 混合係數為 blend constant alpha(見 draw_list_set_blend_constants())。

BlendFactor BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11

顏色混合係數為 1.0 - blend constant color。Alpha 混合係數為 1.0 - blend constant alpha(見 draw_list_set_blend_constants())。

BlendFactor BLEND_FACTOR_CONSTANT_ALPHA = 12

顏色混合和 Alpha 混合係數為 blend constant alpha(見 draw_list_set_blend_constants())。

BlendFactor BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13

顏色混合和 Alpha 混合係數為 1.0 - blend constant alpha(見 draw_list_set_blend_constants())。

BlendFactor BLEND_FACTOR_SRC_ALPHA_SATURATE = 14

顏色混合係數為 min(source alpha, 1.0 - destination alpha)。Alpha 混合係數為 1.0

BlendFactor BLEND_FACTOR_SRC1_COLOR = 15

顏色混合係數為 second source color。Alpha 混合係數為 second source alpha。僅適用於雙源混合。

BlendFactor BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16

顏色混合係數為 1.0 - second source color。Alpha 混合係數為 1.0 - second source alpha。僅適用於雙源混合。

BlendFactor BLEND_FACTOR_SRC1_ALPHA = 17

顏色混合和 Alpha 混合係數為 second source alpha。僅適用於雙源混合。

BlendFactor BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18

顏色混合和 Alpha 混合係數為 1.0 - second source alpha。僅適用於雙源混合。

BlendFactor BLEND_FACTOR_MAX = 19

代表 BlendFactor 列舉的大小。


enum BlendOperation: 🔗

BlendOperation BLEND_OP_ADD = 0

加法混合運算(source + destination)。

BlendOperation BLEND_OP_SUBTRACT = 1

減法混合運算(source - destination)。

BlendOperation BLEND_OP_REVERSE_SUBTRACT = 2

逆減法混合運算(destination - source)。

BlendOperation BLEND_OP_MINIMUM = 3

最小混合運算(保留兩者之間的較小值)。

BlendOperation BLEND_OP_MAXIMUM = 4

最大混合運算(保留兩者之間的較大值)。

BlendOperation BLEND_OP_MAX = 5

代表 BlendOperation 列舉的大小。


flags PipelineDynamicStateFlags: 🔗

PipelineDynamicStateFlags DYNAMIC_STATE_LINE_WIDTH = 1

Allows dynamically changing the width of rendering lines.

PipelineDynamicStateFlags DYNAMIC_STATE_DEPTH_BIAS = 2

Allows dynamically changing the depth bias.

PipelineDynamicStateFlags DYNAMIC_STATE_BLEND_CONSTANTS = 4

There is currently no description for this enum. Please help us by contributing one!

PipelineDynamicStateFlags DYNAMIC_STATE_DEPTH_BOUNDS = 8

There is currently no description for this enum. Please help us by contributing one!

PipelineDynamicStateFlags DYNAMIC_STATE_STENCIL_COMPARE_MASK = 16

There is currently no description for this enum. Please help us by contributing one!

PipelineDynamicStateFlags DYNAMIC_STATE_STENCIL_WRITE_MASK = 32

There is currently no description for this enum. Please help us by contributing one!

PipelineDynamicStateFlags DYNAMIC_STATE_STENCIL_REFERENCE = 64

There is currently no description for this enum. Please help us by contributing one!


enum InitialAction: 🔗

InitialAction INITIAL_ACTION_LOAD = 0

已棄用: Initial actions are solved automatically by RenderingDevice.

Load the previous contents of the framebuffer.

InitialAction INITIAL_ACTION_CLEAR = 1

已棄用: Initial actions are solved automatically by RenderingDevice.

Clear the whole framebuffer or its specified region.

InitialAction INITIAL_ACTION_DISCARD = 2

已棄用: Initial actions are solved automatically by RenderingDevice.

Ignore the previous contents of the framebuffer. This is the fastest option if you'll overwrite all of the pixels and don't need to read any of them.

InitialAction INITIAL_ACTION_MAX = 3

已棄用: Initial actions are solved automatically by RenderingDevice.

代表 InitialAction 列舉的大小。

InitialAction INITIAL_ACTION_CLEAR_REGION = 1

已棄用: Initial actions are solved automatically by RenderingDevice.

InitialAction INITIAL_ACTION_CLEAR_REGION_CONTINUE = 1

已棄用: Initial actions are solved automatically by RenderingDevice.

InitialAction INITIAL_ACTION_KEEP = 0

已棄用: Initial actions are solved automatically by RenderingDevice.

InitialAction INITIAL_ACTION_DROP = 2

已棄用: Initial actions are solved automatically by RenderingDevice.

InitialAction INITIAL_ACTION_CONTINUE = 0

已棄用: Initial actions are solved automatically by RenderingDevice.


enum FinalAction: 🔗

FinalAction FINAL_ACTION_STORE = 0

已棄用: Final actions are solved automatically by RenderingDevice.

Store the result of the draw list in the framebuffer. This is generally what you want to do.

FinalAction FINAL_ACTION_DISCARD = 1

已棄用: Final actions are solved automatically by RenderingDevice.

Discard the contents of the framebuffer. This is the fastest option if you don't need to use the results of the draw list.

FinalAction FINAL_ACTION_MAX = 2

已棄用: Final actions are solved automatically by RenderingDevice.

代表 FinalAction 列舉的大小。

FinalAction FINAL_ACTION_READ = 0

已棄用: Final actions are solved automatically by RenderingDevice.

FinalAction FINAL_ACTION_CONTINUE = 0

已棄用: Final actions are solved automatically by RenderingDevice.


enum ShaderStage: 🔗

ShaderStage SHADER_STAGE_VERTEX = 0

頂點著色器階段。可用於在著色器中操作頂點(但無法新建頂點)。

ShaderStage SHADER_STAGE_FRAGMENT = 1

片段著色器階段(Direct3D 中成為“圖元著色器”)。可用於在著色器中操作圖元。

ShaderStage SHADER_STAGE_TESSELATION_CONTROL = 2

曲面細分控制著色器階段。可用於在著色器中建立額外的幾何體。

ShaderStage SHADER_STAGE_TESSELATION_EVALUATION = 3

曲面細分求值著色器階段。可用於在著色器中建立額外的幾何體。

ShaderStage SHADER_STAGE_COMPUTE = 4

計算著色器階段。可用於在著色器中執行任意計算工作,在 GPU 而不是 CPU 上進行計算。

ShaderStage SHADER_STAGE_RAYGEN = 5

Ray generation shader stage. This can be used to generate primary rays.

ShaderStage SHADER_STAGE_ANY_HIT = 6

Any hit shader stage. Invoked when ray intersections are not opaque. This can be used to specify what happens when a ray hits any of the geometry in the scene.

ShaderStage SHADER_STAGE_CLOSEST_HIT = 7

Closest hit shader stage. This can be used to specify what happens when a ray hits the closest geometry in the scene.

ShaderStage SHADER_STAGE_MISS = 8

Miss shader stage. This can be used to specify what happens if a ray does not hit anything in the scene.

ShaderStage SHADER_STAGE_INTERSECTION = 9

Intersection shader stage. The intersection shader for triangles is built-in. This can be used to compute ray intersections with primitives that are not triangles.

ShaderStage SHADER_STAGE_MAX = 10

代表 ShaderStage 列舉的大小。

ShaderStage SHADER_STAGE_VERTEX_BIT = 1

頂點著色器階段位(另見 SHADER_STAGE_VERTEX)。

ShaderStage SHADER_STAGE_FRAGMENT_BIT = 2

片段著色器階段位(另見 SHADER_STAGE_FRAGMENT)。

ShaderStage SHADER_STAGE_TESSELATION_CONTROL_BIT = 4

曲面細分控制著色器階段位(另見 SHADER_STAGE_TESSELATION_CONTROL)。

ShaderStage SHADER_STAGE_TESSELATION_EVALUATION_BIT = 8

曲面細分求值著色器階段位(另見 SHADER_STAGE_TESSELATION_EVALUATION)。

ShaderStage SHADER_STAGE_COMPUTE_BIT = 16

計算著色器階段位(另見 SHADER_STAGE_COMPUTE)。

ShaderStage SHADER_STAGE_RAYGEN_BIT = 32

Ray generation shader stage bit (see also SHADER_STAGE_RAYGEN).

ShaderStage SHADER_STAGE_ANY_HIT_BIT = 64

Any hit shader stage bit (see also SHADER_STAGE_ANY_HIT).

ShaderStage SHADER_STAGE_CLOSEST_HIT_BIT = 128

Closest hit shader stage bit (see also SHADER_STAGE_CLOSEST_HIT).

ShaderStage SHADER_STAGE_MISS_BIT = 256

Miss shader stage bit (see also SHADER_STAGE_MISS).

ShaderStage SHADER_STAGE_INTERSECTION_BIT = 512

Intersection shader stage bit (see also SHADER_STAGE_INTERSECTION).


enum ShaderLanguage: 🔗

ShaderLanguage SHADER_LANGUAGE_GLSL = 0

Khronos 的 GLSL 著色語言(OpenGL 和 Vulkan 原生使用)。這是核心 Godot 著色器所使用的語言。

ShaderLanguage SHADER_LANGUAGE_HLSL = 1

Microsoft 的高級著色器語言(Direct3D 原生使用,Vulkan 中也能使用)。


enum PipelineSpecializationConstantType: 🔗

PipelineSpecializationConstantType PIPELINE_SPECIALIZATION_CONSTANT_TYPE_BOOL = 0

布林型特化常數。

PipelineSpecializationConstantType PIPELINE_SPECIALIZATION_CONSTANT_TYPE_INT = 1

整型特化常數。

PipelineSpecializationConstantType PIPELINE_SPECIALIZATION_CONSTANT_TYPE_FLOAT = 2

浮點型特化常數。


enum Features: 🔗

Features SUPPORTS_METALFX_SPATIAL = 3

Support for MetalFX spatial upscaling.

Features SUPPORTS_METALFX_TEMPORAL = 4

Support for MetalFX temporal upscaling.

Features SUPPORTS_BUFFER_DEVICE_ADDRESS = 6

Features support for buffer device address extension.

Features SUPPORTS_IMAGE_ATOMIC_32_BIT = 7

Support for 32-bit image atomic operations.

Features SUPPORTS_RAY_QUERY = 11

Support for ray query extension.

Note: This is currently only supported when using Vulkan. This is not supported on macOS and iOS (even on hardware supporting raytracing) due to MoltenVK limitations.

Features SUPPORTS_RAYTRACING_PIPELINE = 12

Support for raytracing pipeline extension.

Note: This is currently only supported when using Vulkan. This is not supported on macOS and iOS (even on hardware supporting raytracing) due to MoltenVK limitations.

Features SUPPORTS_HDR_OUTPUT = 13

Support for high dynamic range (HDR) output.


enum Limit: 🔗

Limit LIMIT_MAX_BOUND_UNIFORM_SETS = 0

能夠同時綁定的最大 uniform 集的數量。

Limit LIMIT_MAX_FRAMEBUFFER_COLOR_ATTACHMENTS = 1

能夠同時使用的最大顏色影格緩衝附件的數量。

Limit LIMIT_MAX_TEXTURES_PER_UNIFORM_SET = 2

單個 uniform 集能夠使用的最大紋理數量。

Limit LIMIT_MAX_SAMPLERS_PER_UNIFORM_SET = 3

單個 uniform 集能夠使用的最大取樣器數量。

Limit LIMIT_MAX_STORAGE_BUFFERS_PER_UNIFORM_SET = 4

單個 uniform 集的最大儲存緩衝數量。

Limit LIMIT_MAX_STORAGE_IMAGES_PER_UNIFORM_SET = 5

單個 uniform 集的最大儲存圖像數量。

Limit LIMIT_MAX_UNIFORM_BUFFERS_PER_UNIFORM_SET = 6

單個 uniform 集的最大 uniform 緩衝數量。

Limit LIMIT_MAX_DRAW_INDEXED_INDEX = 7

索引繪圖指令的最大索引。

Limit LIMIT_MAX_FRAMEBUFFER_HEIGHT = 8

影格緩衝的最大高度(單位為圖元)。

Limit LIMIT_MAX_FRAMEBUFFER_WIDTH = 9

影格緩衝的最大寬度(單位為圖元)。

Limit LIMIT_MAX_TEXTURE_ARRAY_LAYERS = 10

紋理陣列的最大層數。

Limit LIMIT_MAX_TEXTURE_SIZE_1D = 11

支援的一維紋理的最大尺寸(單軸圖元數)。

Limit LIMIT_MAX_TEXTURE_SIZE_2D = 12

支援的二維紋理的最大尺寸(單軸圖元數)。

Limit LIMIT_MAX_TEXTURE_SIZE_3D = 13

支援的三維紋理的最大尺寸(單軸圖元數)。

Limit LIMIT_MAX_TEXTURE_SIZE_CUBE = 14

支援的立方體貼圖紋理的最大尺寸(單軸圖元數)。

Limit LIMIT_MAX_TEXTURES_PER_SHADER_STAGE = 15

每個著色器階段的最大紋理數。

Limit LIMIT_MAX_SAMPLERS_PER_SHADER_STAGE = 16

每個著色器階段的最大取樣器數。

Limit LIMIT_MAX_STORAGE_BUFFERS_PER_SHADER_STAGE = 17

每個著色器階段的最大儲存緩衝數。

Limit LIMIT_MAX_STORAGE_IMAGES_PER_SHADER_STAGE = 18

每個著色器階段的最大儲存圖像數。

Limit LIMIT_MAX_UNIFORM_BUFFERS_PER_SHADER_STAGE = 19

單個 uniform 集的最大 uniform 緩衝數量。

Limit LIMIT_MAX_PUSH_CONSTANT_SIZE = 20

推送常數的最大大小。許多裝置都有 128 位元組的限制,所以即便你的 GPU 彙報的值更大,也請嘗試避免讓推送常數超過 127 位元組,從而確保相容性。

Limit LIMIT_MAX_UNIFORM_BUFFER_SIZE = 21

Uniform 緩衝的最大大小。

Limit LIMIT_MAX_VERTEX_INPUT_ATTRIBUTE_OFFSET = 22

頂點輸入屬性的最大偏移。

Limit LIMIT_MAX_VERTEX_INPUT_ATTRIBUTES = 23

頂點輸入屬性的最大數量。

Limit LIMIT_MAX_VERTEX_INPUT_BINDINGS = 24

頂點輸入綁定的最大數量。

Limit LIMIT_MAX_VERTEX_INPUT_BINDING_STRIDE = 25

頂點輸入綁定的最大步幅。

Limit LIMIT_MIN_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 26

Uniform 緩衝的最小偏移對齊。

Limit LIMIT_MAX_COMPUTE_SHARED_MEMORY_SIZE = 27

計算著色器的最大共用記憶體大小。

Limit LIMIT_MAX_COMPUTE_WORKGROUP_COUNT_X = 28

計算著色器在 X 軸上的最大工作組數量。

Limit LIMIT_MAX_COMPUTE_WORKGROUP_COUNT_Y = 29

計算著色器在 Y 軸上的最大工作組數量。

Limit LIMIT_MAX_COMPUTE_WORKGROUP_COUNT_Z = 30

計算著色器在 Z 軸上的最大工作組數量。

Limit LIMIT_MAX_COMPUTE_WORKGROUP_INVOCATIONS = 31

計算著色器的最大工作組呼叫數量。

Limit LIMIT_MAX_COMPUTE_WORKGROUP_SIZE_X = 32

計算著色器在 X 軸上的最大工作組大小。

Limit LIMIT_MAX_COMPUTE_WORKGROUP_SIZE_Y = 33

計算著色器在 Y 軸上的最大工作組大小。

Limit LIMIT_MAX_COMPUTE_WORKGROUP_SIZE_Z = 34

計算著色器在 Z 軸上的最大工作組大小。

Limit LIMIT_MAX_VIEWPORT_DIMENSIONS_X = 35

視口的最大寬度(單位為圖元)。

Limit LIMIT_MAX_VIEWPORT_DIMENSIONS_Y = 36

視口的最大高度(單位為圖元)。

Limit LIMIT_METALFX_TEMPORAL_SCALER_MIN_SCALE = 46

Returns the smallest value for ProjectSettings.rendering/scaling_3d/scale when using the MetalFX temporal upscaler.

Note: The returned value is multiplied by a factor of 1000000 to preserve 6 digits of precision. It must be divided by 1000000.0 to convert the value to a floating point number.

Limit LIMIT_METALFX_TEMPORAL_SCALER_MAX_SCALE = 47

Returns the largest value for ProjectSettings.rendering/scaling_3d/scale when using the MetalFX temporal upscaler.

Note: The returned value is multiplied by a factor of 1000000 to preserve 6 digits of precision. It must be divided by 1000000.0 to convert the value to a floating point number.


enum MemoryType: 🔗

MemoryType MEMORY_TEXTURES = 0

紋理佔用的記憶體。

MemoryType MEMORY_BUFFERS = 1

緩衝區佔用的記憶體。

MemoryType MEMORY_TOTAL = 2

記憶體中佔用。比 MEMORY_TEXTURESMEMORY_BUFFERS 的總和要大,因為還會包含其他雜項記憶體佔用。


enum BreadcrumbMarker: 🔗

BreadcrumbMarker NONE = 0

No breadcrumb marker will be added.

BreadcrumbMarker REFLECTION_PROBES = 65536

During a GPU crash in dev or debug mode, Godot's error message will include "REFLECTION_PROBES" for added context as to when the crash occurred.

BreadcrumbMarker SKY_PASS = 131072

During a GPU crash in dev or debug mode, Godot's error message will include "SKY_PASS" for added context as to when the crash occurred.

BreadcrumbMarker LIGHTMAPPER_PASS = 196608

During a GPU crash in dev or debug mode, Godot's error message will include "LIGHTMAPPER_PASS" for added context as to when the crash occurred.

BreadcrumbMarker SHADOW_PASS_DIRECTIONAL = 262144

During a GPU crash in dev or debug mode, Godot's error message will include "SHADOW_PASS_DIRECTIONAL" for added context as to when the crash occurred.

BreadcrumbMarker SHADOW_PASS_CUBE = 327680

During a GPU crash in dev or debug mode, Godot's error message will include "SHADOW_PASS_CUBE" for added context as to when the crash occurred.

BreadcrumbMarker OPAQUE_PASS = 393216

During a GPU crash in dev or debug mode, Godot's error message will include "OPAQUE_PASS" for added context as to when the crash occurred.

BreadcrumbMarker ALPHA_PASS = 458752

During a GPU crash in dev or debug mode, Godot's error message will include "ALPHA_PASS" for added context as to when the crash occurred.

BreadcrumbMarker TRANSPARENT_PASS = 524288

During a GPU crash in dev or debug mode, Godot's error message will include "TRANSPARENT_PASS" for added context as to when the crash occurred.

BreadcrumbMarker POST_PROCESSING_PASS = 589824

During a GPU crash in dev or debug mode, Godot's error message will include "POST_PROCESSING_PASS" for added context as to when the crash occurred.

BreadcrumbMarker BLIT_PASS = 655360

During a GPU crash in dev or debug mode, Godot's error message will include "BLIT_PASS" for added context as to when the crash occurred.

BreadcrumbMarker UI_PASS = 720896

During a GPU crash in dev or debug mode, Godot's error message will include "UI_PASS" for added context as to when the crash occurred.

BreadcrumbMarker DEBUG_PASS = 786432

During a GPU crash in dev or debug mode, Godot's error message will include "DEBUG_PASS" for added context as to when the crash occurred.


flags DrawFlags: 🔗

DrawFlags DRAW_DEFAULT_ALL = 0

Do not clear or ignore any attachments.

DrawFlags DRAW_CLEAR_COLOR_0 = 1

Clear the first color attachment.

DrawFlags DRAW_CLEAR_COLOR_1 = 2

Clear the second color attachment.

DrawFlags DRAW_CLEAR_COLOR_2 = 4

Clear the third color attachment.

DrawFlags DRAW_CLEAR_COLOR_3 = 8

Clear the fourth color attachment.

DrawFlags DRAW_CLEAR_COLOR_4 = 16

Clear the fifth color attachment.

DrawFlags DRAW_CLEAR_COLOR_5 = 32

Clear the sixth color attachment.

DrawFlags DRAW_CLEAR_COLOR_6 = 64

Clear the seventh color attachment.

DrawFlags DRAW_CLEAR_COLOR_7 = 128

Clear the eighth color attachment.

DrawFlags DRAW_CLEAR_COLOR_MASK = 255

Mask for clearing all color attachments.

DrawFlags DRAW_CLEAR_COLOR_ALL = 255

Clear all color attachments.

DrawFlags DRAW_IGNORE_COLOR_0 = 256

Ignore the previous contents of the first color attachment.

DrawFlags DRAW_IGNORE_COLOR_1 = 512

Ignore the previous contents of the second color attachment.

DrawFlags DRAW_IGNORE_COLOR_2 = 1024

Ignore the previous contents of the third color attachment.

DrawFlags DRAW_IGNORE_COLOR_3 = 2048

Ignore the previous contents of the fourth color attachment.

DrawFlags DRAW_IGNORE_COLOR_4 = 4096

Ignore the previous contents of the fifth color attachment.

DrawFlags DRAW_IGNORE_COLOR_5 = 8192

Ignore the previous contents of the sixth color attachment.

DrawFlags DRAW_IGNORE_COLOR_6 = 16384

Ignore the previous contents of the seventh color attachment.

DrawFlags DRAW_IGNORE_COLOR_7 = 32768

Ignore the previous contents of the eighth color attachment.

DrawFlags DRAW_IGNORE_COLOR_MASK = 65280

Mask for ignoring all the previous contents of the color attachments.

DrawFlags DRAW_IGNORE_COLOR_ALL = 65280

Ignore the previous contents of all color attachments.

DrawFlags DRAW_CLEAR_DEPTH = 65536

Clear the depth attachment.

DrawFlags DRAW_IGNORE_DEPTH = 131072

Ignore the previous contents of the depth attachment.

DrawFlags DRAW_CLEAR_STENCIL = 262144

Clear the stencil attachment.

DrawFlags DRAW_IGNORE_STENCIL = 524288

Ignore the previous contents of the stencil attachment.

DrawFlags DRAW_CLEAR_ALL = 327935

Clear all attachments.

DrawFlags DRAW_IGNORE_ALL = 720640

Ignore the previous contents of all attachments.


常數

INVALID_ID = -1 🔗

返回 ID 的函式會在值無效時返回此值。

INVALID_FORMAT_ID = -1 🔗

返回格式 ID 的函式會在值無效時返回此值。


方法說明

void barrier(from: BitField[BarrierMask] = 32767, to: BitField[BarrierMask] = 32767) 🔗

已棄用: Barriers are automatically inserted by RenderingDevice.

This method does nothing.


Error blas_build(blas: RID) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Builds the blas.


RID blas_create(geometries: Array[RDAccelerationStructureGeometry], flags: BitField[AccelerationStructureFlagBits]) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Creates a new Bottom-Level Acceleration Structure (BLAS). It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.


Error buffer_clear(buffer: RID, offset: int, size_bytes: int) 🔗

Clears the contents of the buffer, clearing size_bytes bytes, starting at offset.

Prints an error if:

  • the size isn't a multiple of four

  • the region specified by offset + size_bytes exceeds the buffer

  • a draw list is currently active (created by draw_list_begin())

  • a compute list is currently active (created by compute_list_begin())


Error buffer_copy(src_buffer: RID, dst_buffer: RID, src_offset: int, dst_offset: int, size: int) 🔗

Copies size bytes from the src_buffer at src_offset into dst_buffer at dst_offset.

Prints an error if:

  • size exceeds the size of either src_buffer or dst_buffer at their corresponding offsets

  • a draw list is currently active (created by draw_list_begin())

  • a compute list is currently active (created by compute_list_begin())


PackedByteArray buffer_get_data(buffer: RID, offset_bytes: int = 0, size_bytes: int = 0) 🔗

Returns a copy of the data of the specified buffer, optionally offset_bytes and size_bytes can be set to copy only a portion of the buffer.

Note: This method will block the GPU from working until the data is retrieved. Refer to buffer_get_data_async() for an alternative that returns the data in more performant way.


Error buffer_get_data_async(buffer: RID, callback: Callable, offset_bytes: int = 0, size_bytes: int = 0) 🔗

Asynchronous version of buffer_get_data(). RenderingDevice will call callback in a certain amount of frames with the data the buffer had at the time of the request.

Note: At the moment, the delay corresponds to the amount of frames specified by ProjectSettings.rendering/rendering_device/vsync/frame_queue_size.

Note: Downloading large buffers can have a prohibitive cost for real-time even when using the asynchronous method due to hardware bandwidth limitations. When dealing with large resources, you can adjust settings such as ProjectSettings.rendering/rendering_device/staging_buffer/block_size_kb to improve the transfer speed at the cost of extra memory.

func _buffer_get_data_callback(array):
    value = array.decode_u32(0)

...

rd.buffer_get_data_async(buffer, _buffer_get_data_callback)

int buffer_get_device_address(buffer: RID) 🔗

Returns the address of the given buffer which can be passed to shaders in any way to access underlying data. Buffer must have been created with this feature enabled.

Note: You must check that the GPU supports this functionality by calling has_feature() with SUPPORTS_BUFFER_DEVICE_ADDRESS as a parameter.


Error buffer_update(buffer: RID, offset: int, size_bytes: int, data: PackedByteArray) 🔗

Updates a region of size_bytes bytes, starting at offset, in the buffer, with the specified data.

Prints an error if:

  • the region specified by offset + size_bytes exceeds the buffer

  • a draw list is currently active (created by draw_list_begin())

  • a compute list is currently active (created by compute_list_begin())


void capture_timestamp(name: String) 🔗

使用指定的名稱 name 建立時間戳記標記。用於 get_captured_timestamp_cpu_time()get_captured_timestamp_gpu_time()get_captured_timestamp_name() 等方法的性能彙報。


void compute_list_add_barrier(compute_list: int) 🔗

Raises a Vulkan compute barrier in the specified compute_list.


int compute_list_begin() 🔗

Starts a list of compute commands created with the compute_* methods. The returned value should be passed to other compute_list_* functions.

Multiple compute lists cannot be created at the same time; you must finish the previous compute list first using compute_list_end().

A simple compute operation might look like this (code is not a complete example):

var rd = RenderingDevice.new()
var compute_list = rd.compute_list_begin()

rd.compute_list_bind_compute_pipeline(compute_list, compute_shader_dilate_pipeline)
rd.compute_list_bind_uniform_set(compute_list, compute_base_uniform_set, 0)
rd.compute_list_bind_uniform_set(compute_list, dilate_uniform_set, 1)

for i in atlas_slices:
    rd.compute_list_set_push_constant(compute_list, push_constant, push_constant.size())
    rd.compute_list_dispatch(compute_list, group_size.x, group_size.y, group_size.z)
    # No barrier, let them run all together.

rd.compute_list_end()

void compute_list_bind_compute_pipeline(compute_list: int, compute_pipeline: RID) 🔗

告訴 GPU 在處理計算列表時要使用什麼計算管道。如果自上次呼叫此函式以來著色器已更改,Godot 將取消綁定所有描述符集並重新綁定它們在compute_list_dispatch()中。


void compute_list_bind_uniform_set(compute_list: int, uniform_set: RID, set_index: int) 🔗

uniform_set 綁定到此 compute_list。Godot 確保均勻集中的所有紋理都具有正確的 Vulkan 存取掩碼。如果 Godot 必須更改紋理的存取掩碼,它將引發Vulkan 影像記憶體障礙。


void compute_list_dispatch(compute_list: int, x_groups: int, y_groups: int, z_groups: int) 🔗

將計算列表提交給 GPU 處理。相當於是計算版本的 draw_list_draw()


void compute_list_dispatch_indirect(compute_list: int, buffer: RID, offset: int) 🔗

Submits the compute list for processing on the GPU with the given group counts stored in the buffer at offset. Buffer must have been created with STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT flag.


void compute_list_end() 🔗

結束由 compute_* 方法建立的計算命令列表。


void compute_list_set_push_constant(compute_list: int, buffer: PackedByteArray, size_bytes: int) 🔗

為指定的 compute_list 設定 buffer 的推送常數資料。如何使用這個二進位資料由著色器決定。另外還必須在 size_bytes 中指定緩衝的位元組大小(可以通過對 buffer 呼叫 PackedByteArray.size() 獲取)。


RID compute_pipeline_create(shader: RID, specialization_constants: Array[RDPipelineSpecializationConstant] = []) 🔗

Creates a new compute pipeline. It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.

This will be freed automatically when the shader is freed.


bool compute_pipeline_is_valid(compute_pipeline: RID) 🔗

如果由 compute_pipeline RID 指定的計算管線有效,則返回 true,否則返回 false


RenderingDevice create_local_device() 🔗

新建局部 RenderingDevice。主要用於在 GPU 上執行計算操作,獨立於引擎的其他部分。


void draw_command_begin_label(name: String, color: Color) 🔗

Create a command buffer debug label region that can be displayed in third-party tools such as RenderDoc. All regions must be ended with a draw_command_end_label() call. When viewed from the linear series of submissions to a single queue, calls to draw_command_begin_label() and draw_command_end_label() must be matched and balanced.

The VK_EXT_DEBUG_UTILS_EXTENSION_NAME Vulkan extension must be available and enabled for command buffer debug label region to work. See also draw_command_end_label().


void draw_command_end_label() 🔗

結束命令緩衝除錯標籤區域,該區域由 draw_command_begin_label() 呼叫開啟。


void draw_command_insert_label(name: String, color: Color) 🔗

已棄用: Inserting labels no longer applies due to command reordering.

This method does nothing.


int draw_list_begin(framebuffer: RID, draw_flags: BitField[DrawFlags] = 0, clear_color_values: PackedColorArray = PackedColorArray(), clear_depth_value: float = 1.0, clear_stencil_value: int = 0, region: Rect2 = Rect2(0, 0, 0, 0), breadcrumb: int = 0) 🔗

Starts a list of raster drawing commands created with the draw_* methods. The returned value should be passed to other draw_list_* functions.

Multiple draw lists cannot be created at the same time; you must finish the previous draw list first using draw_list_end().

A simple drawing operation might look like this (code is not a complete example):

var rd = RenderingDevice.new()
var clear_colors = PackedColorArray([Color(0, 0, 0, 0), Color(0, 0, 0, 0), Color(0, 0, 0, 0)])
var draw_list = rd.draw_list_begin(framebuffers[i], RenderingDevice.CLEAR_COLOR_ALL, clear_colors, true, 1.0f, true, 0, Rect2(), RenderingDevice.OPAQUE_PASS)

# Draw opaque.
rd.draw_list_bind_render_pipeline(draw_list, raster_pipeline)
rd.draw_list_bind_uniform_set(draw_list, raster_base_uniform, 0)
rd.draw_list_set_push_constant(draw_list, raster_push_constant, raster_push_constant.size())
rd.draw_list_draw(draw_list, false, 1, slice_triangle_count[i] * 3)
# Draw wire.
rd.draw_list_bind_render_pipeline(draw_list, raster_pipeline_wire)
rd.draw_list_bind_uniform_set(draw_list, raster_base_uniform, 0)
rd.draw_list_set_push_constant(draw_list, raster_push_constant, raster_push_constant.size())
rd.draw_list_draw(draw_list, false, 1, slice_triangle_count[i] * 3)

rd.draw_list_end()

The draw_flags indicates if the texture attachments of the framebuffer should be cleared or ignored. Only one of the two flags can be used for each individual attachment. Ignoring an attachment means that any contents that existed before the draw list will be completely discarded, reducing the memory bandwidth used by the render pass but producing garbage results if the pixels aren't replaced. The default behavior allows the engine to figure out the right operation to use if the texture is discardable, which can result in increased performance. See RDTextureFormat or texture_set_discardable().

The breadcrumb parameter can be an arbitrary 32-bit integer that is useful to diagnose GPU crashes. If Godot is built in dev or debug mode; when the GPU crashes Godot will dump all shaders that were being executed at the time of the crash and the breadcrumb is useful to diagnose what passes did those shaders belong to.

It does not affect rendering behavior and can be set to 0. It is recommended to use BreadcrumbMarker enumerations for consistency but it's not required. It is also possible to use bitwise operations to add extra data. e.g.

rd.draw_list_begin(fb[i], RenderingDevice.CLEAR_COLOR_ALL, clear_colors, true, 1.0f, true, 0, Rect2(), RenderingDevice.OPAQUE_PASS | 5)

int draw_list_begin_for_screen(screen: int = 0, clear_color: Color = Color(0, 0, 0, 1)) 🔗

draw_list_begin() 的高階變體,會針對繪製到 screen ID 指定的窗口上自動調整參數。

注意:局部 RenderingDevice 沒有螢幕,所以無法使用。如果對局部 RenderingDevice 呼叫,draw_list_begin_for_screen() 會返回 INVALID_ID


PackedInt64Array draw_list_begin_split(framebuffer: RID, splits: int, initial_color_action: InitialAction, final_color_action: FinalAction, initial_depth_action: InitialAction, final_depth_action: FinalAction, clear_color_values: PackedColorArray = PackedColorArray(), clear_depth: float = 1.0, clear_stencil: int = 0, region: Rect2 = Rect2(0, 0, 0, 0), storage_textures: Array[RID] = []) 🔗

已棄用: Split draw lists are used automatically by RenderingDevice.

This method does nothing and always returns an empty PackedInt64Array.


void draw_list_bind_index_array(draw_list: int, index_array: RID) 🔗

index_array 綁定到指定的 draw_list


void draw_list_bind_render_pipeline(draw_list: int, render_pipeline: RID) 🔗

render_pipeline 綁定到指定的 draw_list


void draw_list_bind_uniform_set(draw_list: int, uniform_set: RID, set_index: int) 🔗

uniform_set 綁定到指定的 draw_list。還必須指定 set_index,這是從 0 開始的識別字,必須與繪製列表中所需要的相匹配。


void draw_list_bind_vertex_array(draw_list: int, vertex_array: RID) 🔗

vertex_array 綁定到指定的 draw_list


void draw_list_bind_vertex_buffers_format(draw_list: int, vertex_format: int, vertex_count: int, vertex_buffers: Array[RID], offsets: PackedInt64Array = PackedInt64Array()) 🔗

Binds a set of vertex_buffers directly to the specified draw_list using vertex_format without creating a vertex array RID. Provide the number of vertices in vertex_count; optional per-buffer byte offsets may also be supplied.


void draw_list_disable_scissor(draw_list: int) 🔗

為指定的 draw_list 移除並禁用裁剪矩形。另見 draw_list_enable_scissor()


void draw_list_draw(draw_list: int, use_indices: bool, instances: int, procedural_vertex_count: int = 0) 🔗

draw_list 提交給 GPU 算繪。相當於是柵格版本的 compute_list_dispatch()


void draw_list_draw_indirect(draw_list: int, use_indices: bool, buffer: RID, offset: int = 0, draw_count: int = 1, stride: int = 0) 🔗

Submits draw_list for rendering on the GPU with the given parameters stored in the buffer at offset. Parameters being integers: vertex count, instance count, first vertex, first instance. And when using indices: index count, instance count, first index, vertex offset, first instance. Buffer must have been created with STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT flag.


void draw_list_enable_scissor(draw_list: int, rect: Rect2 = Rect2(0, 0, 0, 0)) 🔗

建立裁剪矩形並為指定的 draw_list 啟用。裁剪矩形可以用來實作裁剪,會丟棄落在螢幕上指定矩形範圍之外的片段。另見 draw_list_disable_scissor()

注意:指定的 rect 會自動與螢幕尺寸求交集,也就是說裁剪矩形無法超出螢幕的範圍。


void draw_list_end() 🔗

結束由 draw_* 方法建立的柵格繪圖命令列表。


void draw_list_set_blend_constants(draw_list: int, color: Color) 🔗

將指定 draw_list 的混合常數設定為 color。建立圖形管線時設定了 DYNAMIC_STATE_BLEND_CONSTANTS 旗標時才會使用混合常數。


void draw_list_set_push_constant(draw_list: int, buffer: PackedByteArray, size_bytes: int) 🔗

為指定的 draw_list 設定 buffer 的推送常數資料。如何使用這個二進制資料由著色器決定。另外還必須在 size_bytes 中指定緩衝的位元組大小(可以通過對 buffer 呼叫 PackedByteArray.size() 獲取)。


int draw_list_switch_to_next_pass() 🔗

Switches to the next draw pass.


PackedInt64Array draw_list_switch_to_next_pass_split(splits: int) 🔗

已棄用: Split draw lists are used automatically by RenderingDevice.

This method does nothing and always returns an empty PackedInt64Array.


RID framebuffer_create(textures: Array[RID], validate_with_format: int = -1, view_count: int = 1) 🔗

Creates a new framebuffer. It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.

This will be freed automatically when any of the textures is freed.


RID framebuffer_create_empty(size: Vector2i, samples: TextureSamples = 0, validate_with_format: int = -1) 🔗

新建空的影格緩衝。可以通過返回的 RID 進行存取。

RID 使用結束後,應該使用 RenderingServer 的 free_rid() 方法進行釋放。


RID framebuffer_create_multipass(textures: Array[RID], passes: Array[RDFramebufferPass], validate_with_format: int = -1, view_count: int = 1) 🔗

Creates a new multipass framebuffer. It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.

This will be freed automatically when any of the textures is freed.


int framebuffer_format_create(attachments: Array[RDAttachmentFormat], view_count: int = 1) 🔗

新建影格緩衝格式,附件為 attachments、視圖數為 view_count。返回的是新影格緩衝的唯一影格緩衝格式 ID。

如果 view_count 大於等於 2,則會針對 VR 算繪啟用多視圖。要求支援 Vulkan 的多視圖擴充。


int framebuffer_format_create_empty(samples: TextureSamples = 0) 🔗

新建空的影格緩衝格式並返回其 ID,取樣數為 samples


int framebuffer_format_create_multipass(attachments: Array[RDAttachmentFormat], passes: Array[RDFramebufferPass], view_count: int = 1) 🔗

建立多階段影格緩衝格式並返回其 ID,附件為 attachments、階段數為 passes、視圖數為 view_count。如果 view_count 大於等於 2,則會針對 VR 算繪啟用多視圖。要求支援 Vulkan 的多視圖擴充。


TextureSamples framebuffer_format_get_texture_samples(format: int, render_pass: int = 0) 🔗

返回給定影格緩衝格式 ID format 所使用的紋理取樣數量(格式由 framebuffer_get_format() 返回)。


int framebuffer_get_format(framebuffer: RID) 🔗

返回由影格緩衝 RID framebuffer 指定的影格緩衝的格式 ID。相同格式下,這個 ID 一定是唯一的,不需要釋放。


bool framebuffer_is_valid(framebuffer: RID) const 🔗

返回由影格緩衝 RID framebuffer 指定的影格緩衝有效,則返回 true,否則返回 false


void free_rid(rid: RID) 🔗

嘗試釋放 RenderingDevice 中的某個物件。為了防止記憶體洩漏,物件使用完後就應該調用這個方法,因為直接使用 RenderingDevice 時並不會自動進行記憶體管理。


void full_barrier() 🔗

已棄用: Barriers are automatically inserted by RenderingDevice.

This method does nothing.


int get_captured_timestamp_cpu_time(index: int) const 🔗

返回算繪步驟的 CPU 時間戳記(引擎啟動後經過的毫秒數),算繪步驟由 index 指定。另見 get_captured_timestamp_gpu_time()capture_timestamp()


int get_captured_timestamp_gpu_time(index: int) const 🔗

返回算繪步驟的 GPU 時間戳記(引擎啟動後經過的毫秒數),算繪步驟由 index 指定。另見 get_captured_timestamp_cpu_time()capture_timestamp()


String get_captured_timestamp_name(index: int) const 🔗

返回算繪步驟的時間戳記的名稱,算繪步驟由 index 指定。另見 capture_timestamp()


int get_captured_timestamps_count() const 🔗

返回能夠進行性能分析的時間戳記(算繪步驟)總數。


int get_captured_timestamps_frame() const 🔗

返回能夠進行算繪時間戳記查詢的最後一個算繪影格的索引。


int get_device_allocation_count() const 🔗

Returns how many allocations the GPU has performed for internal driver structures.

This is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.


int get_device_allocs_by_object_type(type: int) const 🔗

Same as get_device_allocation_count() but filtered for a given object type.

The type argument must be in range [0; get_tracked_object_type_count - 1]. If get_tracked_object_type_count() is 0, then type argument is ignored and always returns 0.

This is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.


int get_device_memory_by_object_type(type: int) const 🔗

Same as get_device_total_memory() but filtered for a given object type.

The type argument must be in range [0; get_tracked_object_type_count - 1]. If get_tracked_object_type_count() is 0, then type argument is ignored and always returns 0.

This is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.


String get_device_name() const 🔗

返回視訊卡的名稱(例如 "GeForce GTX 1080/PCIe/SSE2")。等價於 RenderingServer.get_video_adapter_name()。另見 get_device_vendor_name()


String get_device_pipeline_cache_uuid() const 🔗

返回管線快取的通用唯一識別碼。用於將著色器檔快取到磁片,避免後續運作引擎時進行著色器的重新編譯。這個 UUID 會根據顯卡型號以及驅動版本的不同而不同。因此,更新圖形驅動會使著色器快取失效。


int get_device_total_memory() const 🔗

Returns how much bytes the GPU is using.

This is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.


String get_device_vendor_name() const 🔗

返回視訊卡的供應商(例如 "NVIDIA Corporation")。等價於 RenderingServer.get_video_adapter_vendor()。另見 get_device_name()


int get_driver_allocation_count() const 🔗

Returns how many allocations the GPU driver has performed for internal driver structures.

This is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.


int get_driver_allocs_by_object_type(type: int) const 🔗

Same as get_driver_allocation_count() but filtered for a given object type.

The type argument must be in range [0; get_tracked_object_type_count - 1]. If get_tracked_object_type_count() is 0, then type argument is ignored and always returns 0.

This is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.


String get_driver_and_device_memory_report() const 🔗

Returns string report in CSV format using the following methods:

This is only used by Vulkan in debug builds. Godot must also be started with the --extra-gpu-memory-tracking command line argument.


int get_driver_memory_by_object_type(type: int) const 🔗

Same as get_driver_total_memory() but filtered for a given object type.

The type argument must be in range [0; get_tracked_object_type_count - 1]. If get_tracked_object_type_count() is 0, then type argument is ignored and always returns 0.

This is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.


int get_driver_resource(resource: DriverResource, rid: RID, index: int) 🔗

Returns the unique identifier of the driver resource for the specified rid. Some driver resource types ignore the specified rid. index is always ignored but must be specified anyway.


int get_driver_total_memory() const 🔗

Returns how much bytes the GPU driver is using for internal driver structures.

This is only used by Vulkan in debug builds and can return 0 when this information is not tracked or unknown.


int get_frame_delay() const 🔗

返回圖形 API 所記錄的影格數。值越高輸入延遲就越高,但輸送量也更一致。對於主 RenderingDevice 而言,影格會進行迴圈(啟用三緩衝垂直同步時通常為 3)。但是局部 RenderingDevice 只有 1 影格。


int get_memory_usage(type: MemoryType) const 🔗

返回與型別 type 對應的記憶體用量,單位為位元組。使用 Vulkan 時,會通過 Vulkan Memory Allocator 計算這些統計資訊。


String get_perf_report() const 🔗

Returns a string with a performance report from the past frame. Updates every frame.


String get_tracked_object_name(type_index: int) const 🔗

Returns the name of the type of object for the given type_index. This value must be in range [0; get_tracked_object_type_count - 1]. If get_tracked_object_type_count() is 0, then type argument is ignored and always returns the same string.

The return value is important because it gives meaning to the types passed to get_driver_memory_by_object_type(), get_driver_allocs_by_object_type(), get_device_memory_by_object_type(), and get_device_allocs_by_object_type(). Examples of strings it can return (not exhaustive):

  • DEVICE_MEMORY

  • PIPELINE_CACHE

  • SWAPCHAIN_KHR

  • COMMAND_POOL

Thus if e.g. get_tracked_object_name(5) returns "COMMAND_POOL", then get_device_memory_by_object_type(5) returns the bytes used by the GPU for command pools.

This is only used by Vulkan in debug builds. Godot must also be started with the --extra-gpu-memory-tracking command line argument.


int get_tracked_object_type_count() const 🔗

Returns how many types of trackable objects there are.

This is only used by Vulkan in debug builds. Godot must also be started with the --extra-gpu-memory-tracking command line argument.


bool has_feature(feature: Features) const 🔗

Returns true if the feature is supported by the GPU.


RID hit_sbt_create(raytracing_pipeline: RID, initial_hit_group_capacity: int) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Creates a new hit shader binding table (SBT). It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.

This will be freed automatically when the raytracing_pipeline is freed.

The hit SBT resizes itself as needed. initial_hit_group_capacity is used to allocate the initial backing memory.


int hit_sbt_range_alloc(hit_sbt: RID, hit_group_count: int) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Allocates a contiguous range of SBT entries from hit_sbt.

The returned value should be assigned to RDAccelerationStructureInstance.hit_sbt_range.

During ray traversal, hit group index is computed as:

(geometry index in RDAccelerationStructureInstance.blas)

× (SBT stride used in traceRayEXT)

  • (SBT offset used in traceRayEXT)

  • (range offset)

hit_group_count must be large enough to cover all SBT entries that may be indexed by this equation. This typically corresponds to:

(geometry count in RDAccelerationStructureInstance.blas)

× (SBT stride used in traceRayEXT)

The allocated range is uninitialized and must be filled using hit_sbt_range_update().


Error hit_sbt_range_free(hit_sbt: RID, range: int) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Frees a hit SBT range previously allocated with hit_sbt_range_alloc().

The range must not be in use by any acceleration structure after being freed.


Error hit_sbt_range_update(hit_sbt: RID, range: int, offset: int, hit_group_indices: PackedInt32Array) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Updates the contents of a hit SBT range.

hit_group_indices specifies indices into the hit group array provided in raytracing_pipeline_create().

The offset parameter specifies where within the allocated range the writing begins. This allows partial updates of a range. However, the complete range must be fully initialized before it is used in a raytracing dispatch.


Error hit_sbt_set_pipeline(hit_sbt: RID, raytracing_pipeline: RID) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Sets a new raytracing_pipeline for hit_sbt.

The new pipeline must be a superset of the previous one. Existing hit groups must keep the same order and new hit groups should be appended to the end. This preserves existing SBT entries.

The previous pipeline must remain valid during the call.


RID index_array_create(index_buffer: RID, index_offset: int, index_count: int) 🔗

Creates a new index array. It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.

This will be freed automatically when the index_buffer is freed.


RID index_buffer_create(size_indices: int, format: IndexBufferFormat, data: PackedByteArray = PackedByteArray(), use_restart_indices: bool = false, creation_bits: BitField[BufferCreationBits] = 0) 🔗

Creates a new index buffer. It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.


int limit_get(limit: Limit) const 🔗

返回指定 limit 的值。這個極限值取決於目前的圖形硬體(有時也和驅動版本有關)。如果超出了給定的極限,則會發生算繪錯誤。

各種圖形硬體的極限可以在 Vulkan 硬體資料庫中找到。


int raytracing_list_begin() 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Starts a list of raytracing commands. The returned value should be passed to other raytracing_list_* functions.

Multiple raytracing lists cannot be created at the same time; you must finish the previous raytracing list first using raytracing_list_end().

A simple raytracing operation might look like this (code is not a complete example):

var rd = RenderingDevice.new()
assert(rd.has_feature(RenderingDevice.SUPPORTS_RAYTRACING_PIPELINE))

# Create a BLAS for a mesh.
var geometry = RDAccelerationStructureGeometry.new()
geometry.flags = RenderingDevice.ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT
geometry.vertex_buffer = vertex_buffer
geometry.vertex_stride = 12
geometry.vertex_format = RenderingDevice.DATA_FORMAT_R32G32B32_SFLOAT
geometry.vertex_count = 3
geometry.index_buffer = index_buffer
geometry.index_count = 3
geometries.push_back(geometry)

blas = rd.blas_create([geometry], 0)

# Create TLAS.
tlas = rd.tlas_create(1, 0)

# Build acceleration structures.
rd.blas_build(blas)

var instance = RDAccelerationStructureInstance.new()
instance.blas = blas

instance.hit_sbt_range = rd.hit_sbt_range_alloc(hit_sbt, 1)
rd.hit_sbt_range_update(hit_sbt, instance.hit_sbt_range, 0, [0])

rd.tlas_build(tlas, [instance])

var raylist = rd.raytracing_list_begin()

# Bind pipeline and uniforms.
rd.raytracing_list_bind_raytracing_pipeline(raylist, raytracing_pipeline)
rd.raytracing_list_bind_uniform_set(raylist, uniform_set, 0)

# Trace rays.
var width = get_viewport().size.x
var height = get_viewport().size.y
rd.raytracing_list_trace_rays(raylist, 0, hit_sbt, width, height, 1)

rd.raytracing_list_end()

void raytracing_list_bind_raytracing_pipeline(raytracing_list: int, raytracing_pipeline: RID) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Binds raytracing_pipeline to the specified raytracing_list.


void raytracing_list_bind_uniform_set(raytracing_list: int, uniform_set: RID, set_index: int) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Binds the uniform_set to this raytracing_list.


void raytracing_list_end() 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Finishes a list of raytracing commands created with the raytracing_* methods.


void raytracing_list_set_push_constant(raytracing_list: int, buffer: PackedByteArray, size_bytes: int) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Sets the push constant data to buffer for the specified raytracing_list. The shader determines how this binary data is used. The buffer's size in bytes must also be specified in size_bytes (this can be obtained by calling the PackedByteArray.size() method on the passed buffer).


void raytracing_list_trace_rays(raytracing_list: int, raygen_shader_index: int, hit_sbt: RID, width: int, height: int, depth: int) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Initializes a raytracing dispatch for raytracing_list, launching width × height × depth rays.

raygen_shader_index selects the ray generation shader from the pipeline bound with raytracing_list_bind_raytracing_pipeline().

hit_sbt must use the same pipeline bound to raytracing_list.


RID raytracing_pipeline_create(raygen_shaders: Array[RDPipelineShader], miss_shaders: Array[RDPipelineShader], hit_groups: Array[RDHitGroup], max_trace_recursion_depth: int) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Creates a new raytracing pipeline. It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.

Each shader must provide the required stage. All stages must use compatible pipeline layouts. The pipeline selects the required stage from each shader.

Input order defines stable indices used by the API:


bool raytracing_pipeline_is_valid(raytracing_pipeline: RID) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Returns true if the raytracing pipeline specified by the raytracing_pipeline RID is valid, false otherwise.


RID render_pipeline_create(shader: RID, framebuffer_format: int, vertex_format: int, primitive: RenderPrimitive, rasterization_state: RDPipelineRasterizationState, multisample_state: RDPipelineMultisampleState, stencil_state: RDPipelineDepthStencilState, color_blend_state: RDPipelineColorBlendState, dynamic_state_flags: BitField[PipelineDynamicStateFlags] = 0, for_render_pass: int = 0, specialization_constants: Array[RDPipelineSpecializationConstant] = []) 🔗

Creates a new render pipeline. It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.

This will be freed automatically when the shader is freed.


bool render_pipeline_is_valid(render_pipeline: RID) 🔗

如果由 render_pipeline RID 指定的算繪管線有效則返回 true,否則返回 false


RID sampler_create(state: RDSamplerState) 🔗

新建取樣器。可以通過返回的 RID 進行存取。

RID 使用結束後,應該使用 RenderingServer 的 free_rid() 方法進行釋放。


bool sampler_is_format_supported_for_filter(format: DataFormat, sampler_filter: SamplerFilter) const 🔗

如果實作支援使用格式為 formatsampler_filter 取樣篩選的紋理,則返回 true


int screen_get_framebuffer_format(screen: int = 0) const 🔗

Returns the framebuffer format of the given screen.

Note: Only the main RenderingDevice returned by RenderingServer.get_rendering_device() has a format. If called on a local RenderingDevice, this method prints an error and returns INVALID_ID.


int screen_get_height(screen: int = 0) const 🔗

返回與給定視窗 ID 圖形 API 本文相配對的視窗高度(單位為圖元)。雖然參數的名字叫 screen,但返回的是視窗的大小。另見 screen_get_width()

注意:只有 RenderingServer.get_rendering_device() 返回的主 RenderingDevice 有高度。如果對局部 RenderingDevice 呼叫,則會輸出錯誤並返回 INVALID_ID


int screen_get_width(screen: int = 0) const 🔗

返回與給定視窗 ID 圖形 API 本文相配對的視窗寬度(單位為圖元)。雖然參數的名字叫 screen,但返回的是視窗的大小。另見 screen_get_height()

注意:只有 RenderingServer.get_rendering_device() 返回的主 RenderingDevice 有寬度。如果對局部 RenderingDevice 呼叫,則會輸出錯誤並返回 INVALID_ID


void set_resource_name(id: RID, name: String) 🔗

將 ID 為 id 的資源名稱設定為 name。用於使用 RenderDoc 等協力廠商工具進行除錯。

可以為以下型別的資源命名:紋理、取樣器、頂點緩衝、索引緩衝、uniform 緩衝、紋理緩衝、儲存緩衝、uniform 集緩衝、著色器、算繪管線、計算管線。無法為影格緩衝命名。嘗試為不相容的資源型別命名會輸出錯誤。

注意:引擎以詳細模式運作時(OS.is_stdout_verbose() = true),或者使用 dev_mode=yes SCons 選項編譯引擎構建時,才會設定資源的名稱。圖形驅動也必須支援 Vulkan 擴充 VK_EXT_DEBUG_UTILS_EXTENSION_NAME 具名資源才能正常工作。


PackedByteArray shader_compile_binary_from_spirv(spirv_data: RDShaderSPIRV, name: String = "") 🔗

spirv_data 編譯二進位著色器,並將編譯得到的二進位資料以 PackedByteArray 的形式返回。編譯後的著色器與所使用的 GPU 型號和驅動版本對應;無法在不同的 GPU 型號甚至不同的驅動版本上正常工作。另見 shader_compile_spirv_from_source()

name 是可選的人類可讀名稱,會給予編譯後的著色器,方便組織。


RDShaderSPIRV shader_compile_spirv_from_source(shader_source: RDShaderSource, allow_cache: bool = true) 🔗

Compiles a SPIR-V from the shader source code in shader_source and returns the SPIR-V as an RDShaderSPIRV. This intermediate language shader is portable across different GPU models and driver versions, but cannot be run directly by GPUs until compiled into a binary shader using shader_compile_binary_from_spirv().

If allow_cache is true, make use of the shader cache generated by Godot. This avoids a potentially lengthy shader compilation step if the shader is already in cache. If allow_cache is false, Godot's shader cache is ignored and the shader will always be recompiled.


RID shader_create_from_bytecode(binary_data: PackedByteArray, placeholder_rid: RID = RID()) 🔗

根據二進位的已編譯著色器建立新的著色器實例。可以通過返回的 RID 進行存取。

RID 使用結束後,應該使用 RenderingDevice 的 free_rid() 方法進行釋放。另見 shader_compile_binary_from_spirv()shader_create_from_spirv()


RID shader_create_from_spirv(spirv_data: RDShaderSPIRV, name: String = "") 🔗

根據 SPIR-V 中間程式碼建立新的著色器實例。可以通過返回的 RID 進行存取。

RID 使用結束後,應該使用 RenderingDevice 的 free_rid() 方法進行釋放。另見 shader_compile_spirv_from_source()shader_create_from_bytecode()


RID shader_create_placeholder() 🔗

透過指派RID 來建立佔位符RID,而不將其初始化以在shader_create_from_bytecode() 中使用。這允許您為著色器建立RID 並將其傳遞,但延遲編譯著色器稍後。


int shader_get_vertex_input_attribute_mask(shader: RID) 🔗

傳回內部頂點輸入遮罩。在內部,頂點輸入遮罩是由位置組成的無符號整數(透過GLSL 指定。layout(location = ...) ``\ )輸入變數(在 GLSL 中由 ``in 關鍵字指定)。


RID storage_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), usage: BitField[StorageBufferUsage] = 0, creation_bits: BitField[BufferCreationBits] = 0) 🔗

建立帶有指定資料 data 用法為 usage儲存緩衝。可以通過返回的 RID 進行訪問。

RID 使用結束後,應該使用 RenderingServer 的 free_rid() 方法進行釋放。


void submit() 🔗

推送影格設定與繪圖命令緩衝,然後將局部裝置標記為目前正在處理(這樣就能夠呼叫 sync())。

注意:僅在局部 RenderingDevice 上可用。


void sync() 🔗

讓 CPU 與 GPU 進行強制同步,部分場合可能需要進行這樣的操作。請只在需要時調用,因為 CPU 與 GPU 的同步存在性能開銷。

注意:僅在局部 RenderingDevice 上可用。

注意:只能在 submit() 後呼叫 sync()


RID texture_buffer_create(size_bytes: int, format: DataFormat, data: PackedByteArray = PackedByteArray()) 🔗

新建紋理緩衝。可以通過返回的 RID 進行存取。

RID 使用結束後,應該使用 RenderingServer 的 free_rid() 方法進行釋放。


Error texture_clear(texture: RID, color: Color, base_mipmap: int, mipmap_count: int, base_layer: int, layer_count: int) 🔗

Clears the specified texture by replacing all of its pixels with the specified color. base_mipmap and mipmap_count determine which mipmaps of the texture are affected by this clear operation, while base_layer and layer_count determine which layers of a 3D texture (or texture array) are affected by this clear operation. For 2D textures (which only have one layer by design), base_layer must be 0 and layer_count must be 1.

Note: texture can't be cleared while a draw list that uses it as part of a framebuffer is being created. Ensure the draw list is finalized (and that the color/depth texture using it is not set to FINAL_ACTION_CONTINUE) to clear this texture.


Error texture_copy(from_texture: RID, to_texture: RID, from_pos: Vector3, to_pos: Vector3, size: Vector3, src_mipmap: int, dst_mipmap: int, src_layer: int, dst_layer: int) 🔗

Copies the from_texture to to_texture with the specified from_pos, to_pos and size coordinates. For 2-dimensional textures, from_pos and to_pos must have a Z axis of 0, and size must have a Z axis of 1. Source and destination mipmaps/layers must also be specified, with these parameters being 0 for textures without mipmaps or single-layer textures. Returns @GlobalScope.OK if the texture copy was successful or @GlobalScope.ERR_INVALID_PARAMETER otherwise.

Note: from_texture texture can't be copied while a draw list that uses it as part of a framebuffer is being created. Ensure the draw list is finalized (and that the color/depth texture using it is not set to FINAL_ACTION_CONTINUE) to copy this texture.

Note: from_texture texture requires the TEXTURE_USAGE_CAN_COPY_FROM_BIT to be retrieved.

Note: to_texture can't be copied while a draw list that uses it as part of a framebuffer is being created. Ensure the draw list is finalized (and that the color/depth texture using it is not set to FINAL_ACTION_CONTINUE) to copy this texture.

Note: to_texture requires the TEXTURE_USAGE_CAN_COPY_TO_BIT to be retrieved.

Note: from_texture and to_texture must be of the same type (color or depth).


RID texture_create(format: RDTextureFormat, view: RDTextureView, data: Array[PackedByteArray] = []) 🔗

Creates a new texture. It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.

Note: data takes an Array of PackedByteArrays. For TEXTURE_TYPE_1D, TEXTURE_TYPE_2D, and TEXTURE_TYPE_3D types, this array should only have one element, a PackedByteArray containing all the data for the texture. For _ARRAY and _CUBE types, the length should be the same as the number of RDTextureFormat.array_layers in format.

Note: Not to be confused with RenderingServer.texture_2d_create(), which creates the Godot-specific Texture2D resource as opposed to the graphics API's own texture type.


RID texture_create_from_extension(type: TextureType, format: DataFormat, samples: TextureSamples, usage_flags: BitField[TextureUsageBits], image: int, width: int, height: int, depth: int, layers: int, mipmaps: int = 1) 🔗

Returns an RID for an existing image (VkImage) with the given type, format, samples, usage_flags, width, height, depth, layers, and mipmaps. This can be used to allow Godot to render onto foreign images.


RID texture_create_shared(view: RDTextureView, with_texture: RID) 🔗

Creates a shared texture using the specified view and the texture information from with_texture.

This will be freed automatically when the with_texture is freed.


RID texture_create_shared_from_slice(view: RDTextureView, with_texture: RID, layer: int, mipmap: int, mipmaps: int = 1, slice_type: TextureSliceType = 0) 🔗

Creates a shared texture using the specified view and the texture information from with_texture's layer and mipmap. The number of included mipmaps from the original texture can be controlled using the mipmaps parameter. Only relevant for textures with multiple layers, such as 3D textures, texture arrays and cubemaps. For single-layer textures, use texture_create_shared().

For 2D textures (which only have one layer), layer must be 0.

Note: Layer slicing is only supported for 2D texture arrays, not 3D textures or cubemaps.

This will be freed automatically when the with_texture is freed.


PackedByteArray texture_get_data(texture: RID, layer: int) 🔗

Returns the texture data for the specified layer as raw binary data. For 2D textures (which only have one layer), layer must be 0.

Note: texture can't be retrieved while a draw list that uses it as part of a framebuffer is being created. Ensure the draw list is finalized (and that the color/depth texture using it is not set to FINAL_ACTION_CONTINUE) to retrieve this texture. Otherwise, an error is printed and an empty PackedByteArray is returned.

Note: texture requires the TEXTURE_USAGE_CAN_COPY_FROM_BIT to be retrieved. Otherwise, an error is printed and an empty PackedByteArray is returned.

Note: This method will block the GPU from working until the data is retrieved. Refer to texture_get_data_async() for an alternative that returns the data in more performant way.


Error texture_get_data_async(texture: RID, layer: int, callback: Callable) 🔗

Asynchronous version of texture_get_data(). RenderingDevice will call callback in a certain amount of frames with the data the texture had at the time of the request.

Note: At the moment, the delay corresponds to the amount of frames specified by ProjectSettings.rendering/rendering_device/vsync/frame_queue_size.

Note: Downloading large textures can have a prohibitive cost for real-time even when using the asynchronous method due to hardware bandwidth limitations. When dealing with large resources, you can adjust settings such as ProjectSettings.rendering/rendering_device/staging_buffer/texture_download_region_size_px and ProjectSettings.rendering/rendering_device/staging_buffer/block_size_kb to improve the transfer speed at the cost of extra memory.

func _texture_get_data_callback(array):
    value = array.decode_u32(0)

...

rd.texture_get_data_async(texture, 0, _texture_get_data_callback)

RDTextureFormat texture_get_format(texture: RID) 🔗

返回用於生成 MSDF 紋理的源字形大小。


int texture_get_native_handle(texture: RID) 🔗

已棄用: Use get_driver_resource() with DRIVER_RESOURCE_TEXTURE instead.

返回該紋理物件的內部圖形控制碼。主要用於 GDExtension 與協力廠商 API 通訊。

注意:這個函式返回的是 uint64_t,內部對應到 GLuint(OpenGL)或 VkImage(Vulkan)。


bool texture_is_discardable(texture: RID) 🔗

Returns true if the texture is discardable, false otherwise. See RDTextureFormat or texture_set_discardable().


bool texture_is_format_supported_for_usage(format: DataFormat, usage_flags: BitField[TextureUsageBits]) const 🔗

如果指定的格式 format 支援給定的用途旗標 usage_flags,則返回 true,否則返回 false


bool texture_is_shared(texture: RID) 🔗

如果 texture 是共用紋理,則返回 true,否則返回 false。見 RDTextureView


bool texture_is_valid(texture: RID) 🔗

如果 texture 有效,則返回 true,否則返回 false


Error texture_resolve_multisample(from_texture: RID, to_texture: RID) 🔗

啟用多重取樣抗鋸齒,將 from_texture 紋理溶解至 to_texture。啟用後才能夠正常算繪 MSAA 影格緩衝。成功時返回 @GlobalScope.OK,否則返回 @GlobalScope.ERR_INVALID_PARAMETER

注意:from_textureto_texture 的尺寸、格式、型別(顏色或深度)都必須相同。

注意:如果使用 from_texture 紋理的繪圖列表是建立的影格緩衝的一部分,則無法複製。請確保繪圖列表已經完成(並且使用它的顏色/深度紋理沒有設定為 FINAL_ACTION_CONTINUE),然後再複製紋理。

注意:from_texture 紋理需要獲取 TEXTURE_USAGE_CAN_COPY_FROM_BIT

注意:from_texture 紋理必須為多重取樣,並且必須為 2D 紋理(或者是 3D/立方體貼圖紋理的切片)。

注意:如果使用 to_texture 紋理的繪圖列表是建立的影格緩衝的一部分,則無法複製。請確保繪圖列表已經完成(並且使用它的顏色/深度紋理沒有設定為 FINAL_ACTION_CONTINUE),然後再溶解紋理。

注意:to_texture 紋理需要獲取 TEXTURE_USAGE_CAN_COPY_TO_BIT

注意:from_texture 紋理必須不能是多重取樣,並且必須為 2D 紋理(或者是 3D/立方體貼圖紋理的切片)。


void texture_set_discardable(texture: RID, discardable: bool) 🔗

Updates the discardable property of texture.

If a texture is discardable, its contents do not need to be preserved between frames. This flag is only relevant when the texture is used as target in a draw list.

This information is used by RenderingDevice to figure out if a texture's contents can be discarded, eliminating unnecessary writes to memory and boosting performance.


Error texture_update(texture: RID, layer: int, data: PackedByteArray) 🔗

使用新的資料更新紋理資料,會原地替換之前的資料。更新後的紋理資料必須和原有尺寸、格式一致。2D 紋理(只有一層)的 layer 必須為 0。如果更新成功則返回 @GlobalScope.OK,否則返回 @GlobalScope.ERR_INVALID_PARAMETER

注意:精緻在建立繪圖列表或計算列表時更新紋理。

注意:如果使用 texture 紋理的繪圖列表是建立的影格緩衝的一部分,則無法更新。請確保繪圖列表已經完成(並且使用它的顏色/深度紋理沒有設定為 FINAL_ACTION_CONTINUE),然後再更新紋理。

注意:texture 紋理需要獲取 TEXTURE_USAGE_CAN_UPDATE_BIT


Error tlas_build(tlas: RID, instances: Array[RDAccelerationStructureInstance]) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Builds the tlas. The contents of previous builds are discarded.

Any BLAS provided through the RDAccelerationStructureInstance.blas member must already have been built using the blas_build() method.

The number of instances can be equal to or smaller than the maximum instance count provided in the tlas_create() method.

Note: Freeing or rebuilding any of the provided BLASes after this method invalidates the TLAS and requires it to be rebuilt.


RID tlas_create(max_instance_count: int, flags: BitField[AccelerationStructureFlagBits]) 🔗

實驗性: 此方法可能在未來版本中變更或移除。

Creates a new Top-Level Acceleration Structure (TLAS). It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.


RID uniform_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), creation_bits: BitField[BufferCreationBits] = 0) 🔗

Creates a new uniform buffer. It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.


RID uniform_set_create(uniforms: Array[RDUniform], shader: RID, shader_set: int) 🔗

Creates a new uniform set. It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.

This will be freed automatically when the shader or any of the RIDs in the uniforms is freed.


bool uniform_set_is_valid(uniform_set: RID) 🔗

檢查 uniform_set 是否有效,即是否擁有。


RID vertex_array_create(vertex_count: int, vertex_format: int, src_buffers: Array[RID], offsets: PackedInt64Array = PackedInt64Array()) 🔗

Creates a vertex array based on the specified buffers. Optionally, offsets (in bytes) may be defined for each buffer.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.

This will be freed automatically when any of the src_buffers is freed.


RID vertex_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), creation_bits: BitField[BufferCreationBits] = 0) 🔗

Creates a new vertex buffer. It can be accessed with the RID that is returned.

Once finished with your RID, you will want to free the RID using the RenderingDevice's free_rid() method.


int vertex_format_create(vertex_descriptions: Array[RDVertexAttribute]) 🔗

新建頂點描述為 vertex_descriptions 的頂點格式。返回與新建頂點格式對應的唯一格式 ID。