Updated IDL.

This commit is contained in:
Бранимир Караџић
2023-06-26 11:22:34 -07:00
parent cbd83f57ca
commit c1afaa88e7

View File

@@ -971,6 +971,278 @@ pragma(inline,true) nothrow @nogc pure @safe{
} }
} }
///Transient vertex buffer.
extern(C++, "bgfx") struct TransientVertexBuffer{
ubyte* data; ///Pointer to data.
uint size; ///Data size.
uint startVertex; ///First vertex.
ushort stride; ///Vertex stride.
VertexBufferHandle handle; ///Vertex buffer handle.
VertexLayoutHandle layoutHandle; ///Vertex layout handle.
}
///Encoder stats.
extern(C++, "bgfx") struct EncoderStats{
long cpuTimeBegin; ///Encoder thread CPU submit begin time.
long cpuTimeEnd; ///Encoder thread CPU submit end time.
}
///Texture info.
extern(C++, "bgfx") struct TextureInfo{
TextureFormat format; ///Texture format.
uint storageSize; ///Total amount of bytes required to store texture.
ushort width; ///Texture width.
ushort height; ///Texture height.
ushort depth; ///Texture depth.
ushort numLayers; ///Number of layers in texture array.
ubyte numMIPs; ///Number of MIP maps.
ubyte bitsPerPixel; ///Format bits per pixel.
bool cubeMap; ///Texture is cubemap.
}
///Vertex layout.
extern(C++, "bgfx") struct VertexLayout{
uint hash; ///Hash.
ushort stride; ///Stride.
ushort[Attrib.count] offset; ///Attribute offsets.
ushort[Attrib.count] attributes; ///Used attributes.
extern(D) mixin(joinFnBinds((){
string[][] ret;
ret ~= makeFnBinds([
[q{void}, q{this}, q{}, `C++`],
/**
Start VertexLayout.
Params:
rendererType = Renderer backend type. See: `bgfx::RendererType`
*/
[q{VertexLayout*}, q{begin}, q{bgfx.fakeenum.RendererType.Enum rendererType=RendererType.noop}, `C++`],
/**
Add attribute to VertexLayout.
Remarks: Must be called between begin/end.
Params:
attrib = Attribute semantics. See: `bgfx::Attrib`
num = Number of elements 1, 2, 3 or 4.
type = Element type.
normalized = When using fixed point AttribType (f.e. Uint8)
value will be normalized for vertex shader usage. When normalized
is set to true, AttribType::Uint8 value in range 0-255 will be
in range 0.0-1.0 in vertex shader.
asInt = Packaging rule for vertexPack, vertexUnpack, and
vertexConvert for AttribType::Uint8 and AttribType::Int16.
Unpacking code must be implemented inside vertex shader.
*/
[q{VertexLayout*}, q{add}, q{bgfx.fakeenum.Attrib.Enum attrib, ubyte num, bgfx.fakeenum.AttribType.Enum type, bool normalized=false, bool asInt=false}, `C++`],
/**
Decode attribute.
Params:
attrib = Attribute semantics. See: `bgfx::Attrib`
num = Number of elements.
type = Element type.
normalized = Attribute is normalized.
asInt = Attribute is packed as int.
*/
[q{void}, q{decode}, q{bgfx.fakeenum.Attrib.Enum attrib, ref ubyte num, ref bgfx.fakeenum.AttribType.Enum type, ref bool normalized, ref bool asInt}, `C++`, q{const}],
/**
Returns `true` if VertexLayout contains attribute.
Params:
attrib = Attribute semantics. See: `bgfx::Attrib`
*/
[q{bool}, q{has}, q{bgfx.fakeenum.Attrib.Enum attrib}, `C++`, q{const}],
/**
Skip `_num` bytes in vertex stream.
Params:
num = Number of bytes to skip.
*/
[q{VertexLayout*}, q{skip}, q{ubyte num}, `C++`],
/**
End VertexLayout.
*/
[q{void}, q{end}, q{}, `C++`],
/**
Returns relative attribute offset from the vertex.
Params:
attrib = Attribute semantics. See: `bgfx::Attrib`
*/
[q{ushort}, q{getOffset}, q{bgfx.fakeenum.Attrib.Enum attrib}, `C++`, q{const}],
/**
Returns vertex stride.
*/
[q{ushort}, q{getStride}, q{}, `C++`, q{const}],
/**
Returns size of vertex buffer for number of vertices.
Params:
num = Number of vertices.
*/
[q{uint}, q{getSize}, q{uint num}, `C++`, q{const}],
], true);
return ret;
}(), typeof(this).stringof));
}
///Backbuffer resolution and reset parameters.
extern(C++, "bgfx") struct Resolution{
TextureFormat format; ///Backbuffer format.
uint width; ///Backbuffer width.
uint height; ///Backbuffer height.
uint reset; ///Reset parameters.
ubyte numBackBuffers; ///Number of back buffers.
ubyte maxFrameLatency; ///Maximum frame latency.
ubyte debugTextScale; ///Scale factor for debug text.
extern(D) mixin(joinFnBinds((){
string[][] ret;
ret ~= makeFnBinds([
[q{void}, q{this}, q{}, `C++`],
], true);
return ret;
}(), typeof(this).stringof));
}
///View stats.
extern(C++, "bgfx") struct ViewStats{
char[256] name; ///View name.
ViewId view; ///View id.
long cpuTimeBegin; ///CPU (submit) begin time.
long cpuTimeEnd; ///CPU (submit) end time.
long gpuTimeBegin; ///GPU begin time.
long gpuTimeEnd; ///GPU end time.
uint gpuFrameNum; ///Frame which generated gpuTimeBegin, gpuTimeEnd.
}
/**
Renderer statistics data.
@remarks All time values are high-resolution timestamps, while
time frequencies define timestamps-per-second for that hardware.
*/
extern(C++, "bgfx") struct Stats{
long cpuTimeFrame; ///CPU time between two `bgfx::frame` calls.
long cpuTimeBegin; ///Render thread CPU submit begin time.
long cpuTimeEnd; ///Render thread CPU submit end time.
long cpuTimerFreq; ///CPU timer frequency. Timestamps-per-second
long gpuTimeBegin; ///GPU frame begin time.
long gpuTimeEnd; ///GPU frame end time.
long gpuTimerFreq; ///GPU timer frequency.
long waitRender; ///Time spent waiting for render backend thread to finish issuing draw commands to underlying graphics API.
long waitSubmit; ///Time spent waiting for submit thread to advance to next frame.
uint numDraw; ///Number of draw calls submitted.
uint numCompute; ///Number of compute calls submitted.
uint numBlit; ///Number of blit calls submitted.
uint maxGpuLatency; ///GPU driver latency.
uint gpuFrameNum; ///Frame which generated gpuTimeBegin, gpuTimeEnd.
ushort numDynamicIndexBuffers; ///Number of used dynamic index buffers.
ushort numDynamicVertexBuffers; ///Number of used dynamic vertex buffers.
ushort numFrameBuffers; ///Number of used frame buffers.
ushort numIndexBuffers; ///Number of used index buffers.
ushort numOcclusionQueries; ///Number of used occlusion queries.
ushort numPrograms; ///Number of used programs.
ushort numShaders; ///Number of used shaders.
ushort numTextures; ///Number of used textures.
ushort numUniforms; ///Number of used uniforms.
ushort numVertexBuffers; ///Number of used vertex buffers.
ushort numVertexLayouts; ///Number of used vertex layouts.
long textureMemoryUsed; ///Estimate of texture memory used.
long rtMemoryUsed; ///Estimate of render target memory used.
int transientVbUsed; ///Amount of transient vertex buffer used.
int transientIbUsed; ///Amount of transient index buffer used.
uint[Topology.count] numPrims; ///Number of primitives rendered.
long gpuMemoryMax; ///Maximum available GPU memory for application.
long gpuMemoryUsed; ///Amount of GPU memory used by the application.
ushort width; ///Backbuffer width in pixels.
ushort height; ///Backbuffer height in pixels.
ushort textWidth; ///Debug text width in characters.
ushort textHeight; ///Debug text height in characters.
ushort numViews; ///Number of view stats.
ViewStats* viewStats; ///Array of View stats.
ubyte numEncoders; ///Number of encoders used during frame.
EncoderStats* encoderStats; ///Array of encoder stats.
}
///Renderer capabilities.
extern(C++, "bgfx") struct Caps{
///Renderer runtime limits.
extern(C++, "bgfx") struct Limits{
uint maxDrawCalls; ///Maximum number of draw calls.
uint maxBlits; ///Maximum number of blit calls.
uint maxTextureSize; ///Maximum texture size.
uint maxTextureLayers; ///Maximum texture layers.
uint maxViews; ///Maximum number of views.
uint maxFrameBuffers; ///Maximum number of frame buffer handles.
uint maxFBAttachments; ///Maximum number of frame buffer attachments.
uint maxPrograms; ///Maximum number of program handles.
uint maxShaders; ///Maximum number of shader handles.
uint maxTextures; ///Maximum number of texture handles.
uint maxTextureSamplers; ///Maximum number of texture samplers.
uint maxComputeBindings; ///Maximum number of compute bindings.
uint maxVertexLayouts; ///Maximum number of vertex format layouts.
uint maxVertexStreams; ///Maximum number of vertex streams.
uint maxIndexBuffers; ///Maximum number of index buffer handles.
uint maxVertexBuffers; ///Maximum number of vertex buffer handles.
uint maxDynamicIndexBuffers; ///Maximum number of dynamic index buffer handles.
uint maxDynamicVertexBuffers; ///Maximum number of dynamic vertex buffer handles.
uint maxUniforms; ///Maximum number of uniform handles.
uint maxOcclusionQueries; ///Maximum number of occlusion query handles.
uint maxEncoders; ///Maximum number of encoder threads.
uint minResourceCbSize; ///Minimum resource command buffer size.
uint transientVbSize; ///Maximum transient vertex buffer size.
uint transientIbSize; ///Maximum transient index buffer size.
}
///GPU info.
extern(C++, "bgfx") struct GPU{
ushort vendorID; ///Vendor PCI id. See `BGFX_PCI_ID_*`.
ushort deviceID; ///Device id.
}
RendererType rendererType; ///Renderer backend type. See: `bgfx::RendererType`
/**
Supported functionality.
@attention See `BGFX_CAPS_*` flags at https://bkaradzic.github.io/bgfx/bgfx.html#available-caps
*/
ulong supported;
ushort vendorID; ///Selected GPU vendor PCI id.
ushort deviceID; ///Selected GPU device id.
bool homogeneousDepth; ///True when NDC depth is in [-1, 1] range, otherwise its [0, 1].
bool originBottomLeft; ///True when NDC origin is at bottom left.
ubyte numGPUs; ///Number of enumerated GPUs.
GPU[4] gpu; ///Enumerated GPUs.
Limits limits; ///Renderer runtime limits.
/**
Supported texture format capabilities flags:
- `BGFX_CAPS_FORMAT_TEXTURE_NONE` - Texture format is not supported.
- `BGFX_CAPS_FORMAT_TEXTURE_2D` - Texture format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_2D_SRGB` - Texture as sRGB format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_2D_EMULATED` - Texture format is emulated.
- `BGFX_CAPS_FORMAT_TEXTURE_3D` - Texture format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_3D_SRGB` - Texture as sRGB format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_3D_EMULATED` - Texture format is emulated.
- `BGFX_CAPS_FORMAT_TEXTURE_CUBE` - Texture format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_CUBE_SRGB` - Texture as sRGB format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_CUBE_EMULATED` - Texture format is emulated.
- `BGFX_CAPS_FORMAT_TEXTURE_VERTEX` - Texture format can be used from vertex shader.
- `BGFX_CAPS_FORMAT_TEXTURE_IMAGE_READ` - Texture format can be used as image
and read from.
- `BGFX_CAPS_FORMAT_TEXTURE_IMAGE_WRITE` - Texture format can be used as image
and written to.
- `BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER` - Texture format can be used as frame
buffer.
- `BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA` - Texture format can be used as MSAA
frame buffer.
- `BGFX_CAPS_FORMAT_TEXTURE_MSAA` - Texture can be sampled as MSAA.
- `BGFX_CAPS_FORMAT_TEXTURE_MIP_AUTOGEN` - Texture format supports auto-generated
mips.
*/
ushort[TextureFormat.count] formats;
}
/** /**
Encoders are used for submitting draw calls from multiple threads. Only one encoder Encoders are used for submitting draw calls from multiple threads. Only one encoder
per thread should be used. Use `bgfx::begin()` to obtain an encoder for a thread. per thread should be used. Use `bgfx::begin()` to obtain an encoder for a thread.
@@ -1453,256 +1725,17 @@ extern(C++, "bgfx") struct Encoder{
}(), typeof(this).stringof)); }(), typeof(this).stringof));
} }
///Uniform info.
extern(C++, "bgfx") struct UniformInfo{
char[256] name; ///Uniform name.
UniformType type; ///Uniform type.
ushort num; ///Number of elements in array.
}
///Renderer capabilities.
extern(C++, "bgfx") struct Caps{
///GPU info.
extern(C++, "bgfx") struct GPU{
ushort vendorID; ///Vendor PCI id. See `BGFX_PCI_ID_*`.
ushort deviceID; ///Device id.
}
///Renderer runtime limits.
extern(C++, "bgfx") struct Limits{
uint maxDrawCalls; ///Maximum number of draw calls.
uint maxBlits; ///Maximum number of blit calls.
uint maxTextureSize; ///Maximum texture size.
uint maxTextureLayers; ///Maximum texture layers.
uint maxViews; ///Maximum number of views.
uint maxFrameBuffers; ///Maximum number of frame buffer handles.
uint maxFBAttachments; ///Maximum number of frame buffer attachments.
uint maxPrograms; ///Maximum number of program handles.
uint maxShaders; ///Maximum number of shader handles.
uint maxTextures; ///Maximum number of texture handles.
uint maxTextureSamplers; ///Maximum number of texture samplers.
uint maxComputeBindings; ///Maximum number of compute bindings.
uint maxVertexLayouts; ///Maximum number of vertex format layouts.
uint maxVertexStreams; ///Maximum number of vertex streams.
uint maxIndexBuffers; ///Maximum number of index buffer handles.
uint maxVertexBuffers; ///Maximum number of vertex buffer handles.
uint maxDynamicIndexBuffers; ///Maximum number of dynamic index buffer handles.
uint maxDynamicVertexBuffers; ///Maximum number of dynamic vertex buffer handles.
uint maxUniforms; ///Maximum number of uniform handles.
uint maxOcclusionQueries; ///Maximum number of occlusion query handles.
uint maxEncoders; ///Maximum number of encoder threads.
uint minResourceCbSize; ///Minimum resource command buffer size.
uint transientVbSize; ///Maximum transient vertex buffer size.
uint transientIbSize; ///Maximum transient index buffer size.
}
RendererType rendererType; ///Renderer backend type. See: `bgfx::RendererType`
/**
Supported functionality.
@attention See `BGFX_CAPS_*` flags at https://bkaradzic.github.io/bgfx/bgfx.html#available-caps
*/
ulong supported;
ushort vendorID; ///Selected GPU vendor PCI id.
ushort deviceID; ///Selected GPU device id.
bool homogeneousDepth; ///True when NDC depth is in [-1, 1] range, otherwise its [0, 1].
bool originBottomLeft; ///True when NDC origin is at bottom left.
ubyte numGPUs; ///Number of enumerated GPUs.
GPU[4] gpu; ///Enumerated GPUs.
Limits limits; ///Renderer runtime limits.
/**
Supported texture format capabilities flags:
- `BGFX_CAPS_FORMAT_TEXTURE_NONE` - Texture format is not supported.
- `BGFX_CAPS_FORMAT_TEXTURE_2D` - Texture format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_2D_SRGB` - Texture as sRGB format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_2D_EMULATED` - Texture format is emulated.
- `BGFX_CAPS_FORMAT_TEXTURE_3D` - Texture format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_3D_SRGB` - Texture as sRGB format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_3D_EMULATED` - Texture format is emulated.
- `BGFX_CAPS_FORMAT_TEXTURE_CUBE` - Texture format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_CUBE_SRGB` - Texture as sRGB format is supported.
- `BGFX_CAPS_FORMAT_TEXTURE_CUBE_EMULATED` - Texture format is emulated.
- `BGFX_CAPS_FORMAT_TEXTURE_VERTEX` - Texture format can be used from vertex shader.
- `BGFX_CAPS_FORMAT_TEXTURE_IMAGE_READ` - Texture format can be used as image
and read from.
- `BGFX_CAPS_FORMAT_TEXTURE_IMAGE_WRITE` - Texture format can be used as image
and written to.
- `BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER` - Texture format can be used as frame
buffer.
- `BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA` - Texture format can be used as MSAA
frame buffer.
- `BGFX_CAPS_FORMAT_TEXTURE_MSAA` - Texture can be sampled as MSAA.
- `BGFX_CAPS_FORMAT_TEXTURE_MIP_AUTOGEN` - Texture format supports auto-generated
mips.
*/
ushort[TextureFormat.count] formats;
}
/**
Memory must be obtained by calling `bgfx::alloc`, `bgfx::copy`, or `bgfx::makeRef`.
@attention It is illegal to create this structure on stack and pass it to any bgfx API.
*/
extern(C++, "bgfx") struct Memory{
ubyte* data; ///Pointer to data.
uint size; ///Data size.
}
///Internal data. ///Internal data.
extern(C++, "bgfx") struct InternalData{ extern(C++, "bgfx") struct InternalData{
const(Caps)* caps; ///Renderer capabilities. const(Caps)* caps; ///Renderer capabilities.
void* context; ///GL context, or D3D device. void* context; ///GL context, or D3D device.
} }
/** ///Uniform info.
Renderer statistics data. extern(C++, "bgfx") struct UniformInfo{
@remarks All time values are high-resolution timestamps, while char[256] name; ///Uniform name.
time frequencies define timestamps-per-second for that hardware. UniformType type; ///Uniform type.
*/ ushort num; ///Number of elements in array.
extern(C++, "bgfx") struct Stats{
long cpuTimeFrame; ///CPU time between two `bgfx::frame` calls.
long cpuTimeBegin; ///Render thread CPU submit begin time.
long cpuTimeEnd; ///Render thread CPU submit end time.
long cpuTimerFreq; ///CPU timer frequency. Timestamps-per-second
long gpuTimeBegin; ///GPU frame begin time.
long gpuTimeEnd; ///GPU frame end time.
long gpuTimerFreq; ///GPU timer frequency.
long waitRender; ///Time spent waiting for render backend thread to finish issuing draw commands to underlying graphics API.
long waitSubmit; ///Time spent waiting for submit thread to advance to next frame.
uint numDraw; ///Number of draw calls submitted.
uint numCompute; ///Number of compute calls submitted.
uint numBlit; ///Number of blit calls submitted.
uint maxGpuLatency; ///GPU driver latency.
uint gpuFrameNum; ///Frame which generated gpuTimeBegin, gpuTimeEnd.
ushort numDynamicIndexBuffers; ///Number of used dynamic index buffers.
ushort numDynamicVertexBuffers; ///Number of used dynamic vertex buffers.
ushort numFrameBuffers; ///Number of used frame buffers.
ushort numIndexBuffers; ///Number of used index buffers.
ushort numOcclusionQueries; ///Number of used occlusion queries.
ushort numPrograms; ///Number of used programs.
ushort numShaders; ///Number of used shaders.
ushort numTextures; ///Number of used textures.
ushort numUniforms; ///Number of used uniforms.
ushort numVertexBuffers; ///Number of used vertex buffers.
ushort numVertexLayouts; ///Number of used vertex layouts.
long textureMemoryUsed; ///Estimate of texture memory used.
long rtMemoryUsed; ///Estimate of render target memory used.
int transientVbUsed; ///Amount of transient vertex buffer used.
int transientIbUsed; ///Amount of transient index buffer used.
uint[Topology.count] numPrims; ///Number of primitives rendered.
long gpuMemoryMax; ///Maximum available GPU memory for application.
long gpuMemoryUsed; ///Amount of GPU memory used by the application.
ushort width; ///Backbuffer width in pixels.
ushort height; ///Backbuffer height in pixels.
ushort textWidth; ///Debug text width in characters.
ushort textHeight; ///Debug text height in characters.
ushort numViews; ///Number of view stats.
ViewStats* viewStats; ///Array of View stats.
ubyte numEncoders; ///Number of encoders used during frame.
EncoderStats* encoderStats; ///Array of encoder stats.
}
///Backbuffer resolution and reset parameters.
extern(C++, "bgfx") struct Resolution{
TextureFormat format; ///Backbuffer format.
uint width; ///Backbuffer width.
uint height; ///Backbuffer height.
uint reset; ///Reset parameters.
ubyte numBackBuffers; ///Number of back buffers.
ubyte maxFrameLatency; ///Maximum frame latency.
ubyte debugTextScale; ///Scale factor for debug text.
extern(D) mixin(joinFnBinds((){
string[][] ret;
ret ~= makeFnBinds([
[q{void}, q{this}, q{}, `C++`],
], true);
return ret;
}(), typeof(this).stringof));
}
///Transient vertex buffer.
extern(C++, "bgfx") struct TransientVertexBuffer{
ubyte* data; ///Pointer to data.
uint size; ///Data size.
uint startVertex; ///First vertex.
ushort stride; ///Vertex stride.
VertexBufferHandle handle; ///Vertex buffer handle.
VertexLayoutHandle layoutHandle; ///Vertex layout handle.
}
///Texture info.
extern(C++, "bgfx") struct TextureInfo{
TextureFormat format; ///Texture format.
uint storageSize; ///Total amount of bytes required to store texture.
ushort width; ///Texture width.
ushort height; ///Texture height.
ushort depth; ///Texture depth.
ushort numLayers; ///Number of layers in texture array.
ubyte numMIPs; ///Number of MIP maps.
ubyte bitsPerPixel; ///Format bits per pixel.
bool cubeMap; ///Texture is cubemap.
}
///Transient index buffer.
extern(C++, "bgfx") struct TransientIndexBuffer{
ubyte* data; ///Pointer to data.
uint size; ///Data size.
uint startIndex; ///First index.
IndexBufferHandle handle; ///Index buffer handle.
bool isIndex16; ///Index buffer format is 16-bits if true, otherwise it is 32-bit.
}
///Instance data buffer info.
extern(C++, "bgfx") struct InstanceDataBuffer{
ubyte* data; ///Pointer to data.
uint size; ///Data size.
uint offset; ///Offset in vertex buffer.
uint num; ///Number of instances.
ushort stride; ///Vertex buffer stride.
VertexBufferHandle handle; ///Vertex buffer object handle.
}
///Encoder stats.
extern(C++, "bgfx") struct EncoderStats{
long cpuTimeBegin; ///Encoder thread CPU submit begin time.
long cpuTimeEnd; ///Encoder thread CPU submit end time.
}
///View stats.
extern(C++, "bgfx") struct ViewStats{
char[256] name; ///View name.
ViewId view; ///View id.
long cpuTimeBegin; ///CPU (submit) begin time.
long cpuTimeEnd; ///CPU (submit) end time.
long gpuTimeBegin; ///GPU begin time.
long gpuTimeEnd; ///GPU end time.
uint gpuFrameNum; ///Frame which generated gpuTimeBegin, gpuTimeEnd.
}
///Frame buffer texture attachment info.
extern(C++, "bgfx") struct Attachment{
Access access; ///Attachment access. See `Access::Enum`.
TextureHandle handle; ///Render target texture handle.
ushort mip; ///Mip level.
ushort layer; ///Cubemap side or depth layer/slice to use.
ushort numLayers; ///Number of texture layer/slice(s) in array to use.
ubyte resolve; ///Resolve flags. See: `BGFX_RESOLVE_*`
extern(D) mixin(joinFnBinds((){
string[][] ret;
ret ~= makeFnBinds([
/**
Init attachment.
Params:
handle = Render target texture handle.
access = Access. See `Access::Enum`.
layer = Cubemap side or depth layer/slice to use.
numLayers = Number of texture layer/slice(s) in array to use.
mip = Mip level.
resolve = Resolve flags. See: `BGFX_RESOLVE_*`
*/
[q{void}, q{init}, q{TextureHandle handle, bgfx.fakeenum.Access.Enum access=Access.write, ushort layer=0, ushort numLayers=1, ushort mip=0, ubyte resolve=Resolve.autoGenMIPs}, `C++`],
], true);
return ret;
}(), typeof(this).stringof));
} }
///Platform data. ///Platform data.
@@ -1734,6 +1767,16 @@ extern(C++, "bgfx") struct PlatformData{
void* backBufferDS; void* backBufferDS;
} }
///Instance data buffer info.
extern(C++, "bgfx") struct InstanceDataBuffer{
ubyte* data; ///Pointer to data.
uint size; ///Data size.
uint offset; ///Offset in vertex buffer.
uint num; ///Number of instances.
ushort stride; ///Vertex buffer stride.
VertexBufferHandle handle; ///Vertex buffer object handle.
}
///Initialization parameters used by `bgfx::init`. ///Initialization parameters used by `bgfx::init`.
extern(C++, "bgfx") struct Init{ extern(C++, "bgfx") struct Init{
///Configurable runtime limits parameters. ///Configurable runtime limits parameters.
@@ -1797,94 +1840,51 @@ extern(C++, "bgfx") struct Init{
}(), typeof(this).stringof)); }(), typeof(this).stringof));
} }
///Vertex layout. ///Frame buffer texture attachment info.
extern(C++, "bgfx") struct VertexLayout{ extern(C++, "bgfx") struct Attachment{
uint hash; ///Hash. Access access; ///Attachment access. See `Access::Enum`.
ushort stride; ///Stride. TextureHandle handle; ///Render target texture handle.
ushort[Attrib.count] offset; ///Attribute offsets. ushort mip; ///Mip level.
ushort[Attrib.count] attributes; ///Used attributes. ushort layer; ///Cubemap side or depth layer/slice to use.
ushort numLayers; ///Number of texture layer/slice(s) in array to use.
ubyte resolve; ///Resolve flags. See: `BGFX_RESOLVE_*`
extern(D) mixin(joinFnBinds((){ extern(D) mixin(joinFnBinds((){
string[][] ret; string[][] ret;
ret ~= makeFnBinds([ ret ~= makeFnBinds([
[q{void}, q{this}, q{}, `C++`],
/** /**
Start VertexLayout. Init attachment.
Params: Params:
rendererType = Renderer backend type. See: `bgfx::RendererType` handle = Render target texture handle.
access = Access. See `Access::Enum`.
layer = Cubemap side or depth layer/slice to use.
numLayers = Number of texture layer/slice(s) in array to use.
mip = Mip level.
resolve = Resolve flags. See: `BGFX_RESOLVE_*`
*/ */
[q{VertexLayout*}, q{begin}, q{bgfx.fakeenum.RendererType.Enum rendererType=RendererType.noop}, `C++`], [q{void}, q{init}, q{TextureHandle handle, bgfx.fakeenum.Access.Enum access=Access.write, ushort layer=0, ushort numLayers=1, ushort mip=0, ubyte resolve=Resolve.autoGenMIPs}, `C++`],
/**
Add attribute to VertexLayout.
Remarks: Must be called between begin/end.
Params:
attrib = Attribute semantics. See: `bgfx::Attrib`
num = Number of elements 1, 2, 3 or 4.
type = Element type.
normalized = When using fixed point AttribType (f.e. Uint8)
value will be normalized for vertex shader usage. When normalized
is set to true, AttribType::Uint8 value in range 0-255 will be
in range 0.0-1.0 in vertex shader.
asInt = Packaging rule for vertexPack, vertexUnpack, and
vertexConvert for AttribType::Uint8 and AttribType::Int16.
Unpacking code must be implemented inside vertex shader.
*/
[q{VertexLayout*}, q{add}, q{bgfx.fakeenum.Attrib.Enum attrib, ubyte num, bgfx.fakeenum.AttribType.Enum type, bool normalized=false, bool asInt=false}, `C++`],
/**
Decode attribute.
Params:
attrib = Attribute semantics. See: `bgfx::Attrib`
num = Number of elements.
type = Element type.
normalized = Attribute is normalized.
asInt = Attribute is packed as int.
*/
[q{void}, q{decode}, q{bgfx.fakeenum.Attrib.Enum attrib, ref ubyte num, ref bgfx.fakeenum.AttribType.Enum type, ref bool normalized, ref bool asInt}, `C++`, q{const}],
/**
Returns `true` if VertexLayout contains attribute.
Params:
attrib = Attribute semantics. See: `bgfx::Attrib`
*/
[q{bool}, q{has}, q{bgfx.fakeenum.Attrib.Enum attrib}, `C++`, q{const}],
/**
Skip `_num` bytes in vertex stream.
Params:
num = Number of bytes to skip.
*/
[q{VertexLayout*}, q{skip}, q{ubyte num}, `C++`],
/**
End VertexLayout.
*/
[q{void}, q{end}, q{}, `C++`],
/**
Returns relative attribute offset from the vertex.
Params:
attrib = Attribute semantics. See: `bgfx::Attrib`
*/
[q{ushort}, q{getOffset}, q{bgfx.fakeenum.Attrib.Enum attrib}, `C++`, q{const}],
/**
Returns vertex stride.
*/
[q{ushort}, q{getStride}, q{}, `C++`, q{const}],
/**
Returns size of vertex buffer for number of vertices.
Params:
num = Number of vertices.
*/
[q{uint}, q{getSize}, q{uint num}, `C++`, q{const}],
], true); ], true);
return ret; return ret;
}(), typeof(this).stringof)); }(), typeof(this).stringof));
} }
///Transient index buffer.
extern(C++, "bgfx") struct TransientIndexBuffer{
ubyte* data; ///Pointer to data.
uint size; ///Data size.
uint startIndex; ///First index.
IndexBufferHandle handle; ///Index buffer handle.
bool isIndex16; ///Index buffer format is 16-bits if true, otherwise it is 32-bit.
}
/**
Memory must be obtained by calling `bgfx::alloc`, `bgfx::copy`, or `bgfx::makeRef`.
@attention It is illegal to create this structure on stack and pass it to any bgfx API.
*/
extern(C++, "bgfx") struct Memory{
ubyte* data; ///Pointer to data.
uint size; ///Data size.
}
///Transform data. ///Transform data.
extern(C++, "bgfx") struct Transform{ extern(C++, "bgfx") struct Transform{
float* data; ///Pointer to first 4x4 matrix. float* data; ///Pointer to first 4x4 matrix.
@@ -3596,7 +3596,7 @@ mixin(joinFnBinds((){
]); ]);
return ret; return ret;
}(), __MODULE__, "Encoder, Resolution, Attachment, Init, VertexLayout, ")); }(), __MODULE__, "VertexLayout, Resolution, Encoder, Init, Attachment, "));
static if(!staticBinding): static if(!staticBinding):
import bindbc.loader; import bindbc.loader;