mirror of https://github.com/bkaradzic/bgfx
Removing VR leftovers.
This commit is contained in:
parent
5a996c95d9
commit
22fb0f7ad7
|
@ -1547,7 +1547,6 @@ namespace bgfx
|
|||
, uint32_t _numX = 1
|
||||
, uint32_t _numY = 1
|
||||
, uint32_t _numZ = 1
|
||||
, uint8_t _flags = BGFX_SUBMIT_EYE_FIRST
|
||||
);
|
||||
|
||||
/// Dispatch compute indirect.
|
||||
|
@ -1570,7 +1569,6 @@ namespace bgfx
|
|||
, IndirectBufferHandle _indirectHandle
|
||||
, uint16_t _start = 0
|
||||
, uint16_t _num = 1
|
||||
, uint8_t _flags = BGFX_SUBMIT_EYE_FIRST
|
||||
);
|
||||
|
||||
/// Discard all previously set state for draw or compute call.
|
||||
|
@ -3283,22 +3281,14 @@ namespace bgfx
|
|||
///
|
||||
/// @param[in] _id View id.
|
||||
/// @param[in] _view View matrix.
|
||||
/// @param[in] _projL Projection matrix. When using stereo rendering this projection matrix
|
||||
/// represent projection matrix for left eye.
|
||||
/// @param[in] _flags View flags. Use
|
||||
/// - `BGFX_VIEW_NONE` - View will be rendered only once if stereo mode is enabled.
|
||||
/// - `BGFX_VIEW_STEREO` - View will be rendered for both eyes if stereo mode is enabled. When
|
||||
/// stereo mode is disabled this flag doesn't have effect.
|
||||
/// @param[in] _projR Projection matrix for right eye in stereo mode.
|
||||
/// @param[in] _projProjection matrix.
|
||||
///
|
||||
/// @attention C99 equivalent are `bgfx_set_view_transform`, `bgfx_set_view_transform_stereo`.
|
||||
/// @attention C99 equivalent is `bgfx_set_view_transform`.
|
||||
///
|
||||
void setViewTransform(
|
||||
ViewId _id
|
||||
, const void* _view
|
||||
, const void* _projL
|
||||
, uint8_t _flags = BGFX_VIEW_STEREO
|
||||
, const void* _projR = NULL
|
||||
, const void* _proj
|
||||
);
|
||||
|
||||
/// Post submit view reordering.
|
||||
|
@ -3891,7 +3881,6 @@ namespace bgfx
|
|||
, uint32_t _numX = 1
|
||||
, uint32_t _numY = 1
|
||||
, uint32_t _numZ = 1
|
||||
, uint8_t _flags = BGFX_SUBMIT_EYE_FIRST
|
||||
);
|
||||
|
||||
/// Dispatch compute indirect.
|
||||
|
@ -3914,7 +3903,6 @@ namespace bgfx
|
|||
, IndirectBufferHandle _indirectHandle
|
||||
, uint16_t _start = 0
|
||||
, uint16_t _num = 1
|
||||
, uint8_t _flags = BGFX_SUBMIT_EYE_FIRST
|
||||
);
|
||||
|
||||
/// Discard all previously set state for draw or compute call.
|
||||
|
|
|
@ -940,9 +940,6 @@ BGFX_C_API void bgfx_set_view_frame_buffer(bgfx_view_id_t _id, bgfx_frame_buffer
|
|||
/**/
|
||||
BGFX_C_API void bgfx_set_view_transform(bgfx_view_id_t _id, const void* _view, const void* _proj);
|
||||
|
||||
/**/
|
||||
BGFX_C_API void bgfx_set_view_transform_stereo(bgfx_view_id_t _id, const void* _view, const void* _projL, uint8_t _flags, const void* _projR);
|
||||
|
||||
/**/
|
||||
BGFX_C_API void bgfx_set_view_order(bgfx_view_id_t _id, uint16_t _num, const bgfx_view_id_t* _order);
|
||||
|
||||
|
@ -1046,10 +1043,10 @@ BGFX_C_API void bgfx_set_compute_dynamic_vertex_buffer(uint8_t _stage, bgfx_dyna
|
|||
BGFX_C_API void bgfx_set_compute_indirect_buffer(uint8_t _stage, bgfx_indirect_buffer_handle_t _handle, bgfx_access_t _access);
|
||||
|
||||
/**/
|
||||
BGFX_C_API void bgfx_dispatch(bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags);
|
||||
BGFX_C_API void bgfx_dispatch(bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ);
|
||||
|
||||
/**/
|
||||
BGFX_C_API void bgfx_dispatch_indirect(bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags);
|
||||
BGFX_C_API void bgfx_dispatch_indirect(bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num);
|
||||
|
||||
/**/
|
||||
BGFX_C_API void bgfx_discard(void);
|
||||
|
@ -1151,10 +1148,10 @@ BGFX_C_API void bgfx_encoder_set_compute_dynamic_vertex_buffer(struct bgfx_encod
|
|||
BGFX_C_API void bgfx_encoder_set_compute_indirect_buffer(struct bgfx_encoder_s* _encoder, uint8_t _stage, bgfx_indirect_buffer_handle_t _handle, bgfx_access_t _access);
|
||||
|
||||
/**/
|
||||
BGFX_C_API void bgfx_encoder_dispatch(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags);
|
||||
BGFX_C_API void bgfx_encoder_dispatch(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ);
|
||||
|
||||
/**/
|
||||
BGFX_C_API void bgfx_encoder_dispatch_indirect(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags);
|
||||
BGFX_C_API void bgfx_encoder_dispatch_indirect(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num);
|
||||
|
||||
/**/
|
||||
BGFX_C_API void bgfx_encoder_discard(struct bgfx_encoder_s* _encoder);
|
||||
|
|
|
@ -154,7 +154,6 @@ typedef struct bgfx_interface_vtbl
|
|||
void (*set_view_mode)(bgfx_view_id_t _id, bgfx_view_mode_t _mode);
|
||||
void (*set_view_frame_buffer)(bgfx_view_id_t _id, bgfx_frame_buffer_handle_t _handle);
|
||||
void (*set_view_transform)(bgfx_view_id_t _id, const void* _view, const void* _proj);
|
||||
void (*set_view_transform_stereo)(bgfx_view_id_t _id, const void* _view, const void* _projL, uint8_t _flags, const void* _projR);
|
||||
void (*set_view_order)(bgfx_view_id_t _id, uint16_t _num, const bgfx_view_id_t* _order);
|
||||
void (*encoder_set_marker)(struct bgfx_encoder_s* _encoder, const char* _marker);
|
||||
void (*encoder_set_state)(struct bgfx_encoder_s* _encoder, uint64_t _state, uint32_t _rgba);
|
||||
|
@ -188,8 +187,8 @@ typedef struct bgfx_interface_vtbl
|
|||
void (*encoder_set_compute_dynamic_index_buffer)(struct bgfx_encoder_s* _encoder, uint8_t _stage, bgfx_dynamic_index_buffer_handle_t _handle, bgfx_access_t _access);
|
||||
void (*encoder_set_compute_dynamic_vertex_buffer)(struct bgfx_encoder_s* _encoder, uint8_t _stage, bgfx_dynamic_vertex_buffer_handle_t _handle, bgfx_access_t _access);
|
||||
void (*encoder_set_compute_indirect_buffer)(struct bgfx_encoder_s* _encoder, uint8_t _stage, bgfx_indirect_buffer_handle_t _handle, bgfx_access_t _access);
|
||||
void (*encoder_dispatch)(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags);
|
||||
void (*encoder_dispatch_indirect)(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags);
|
||||
void (*encoder_dispatch)(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ);
|
||||
void (*encoder_dispatch_indirect)(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num);
|
||||
void (*encoder_discard)(struct bgfx_encoder_s* _encoder);
|
||||
void (*encoder_blit)(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_texture_handle_t _dst, uint8_t _dstMip, uint16_t _dstX, uint16_t _dstY, uint16_t _dstZ, bgfx_texture_handle_t _src, uint8_t _srcMip, uint16_t _srcX, uint16_t _srcY, uint16_t _srcZ, uint16_t _width, uint16_t _height, uint16_t _depth);
|
||||
void (*request_screen_shot)(bgfx_frame_buffer_handle_t _handle, const char* _filePath);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#ifndef BGFX_DEFINES_H_HEADER_GUARD
|
||||
#define BGFX_DEFINES_H_HEADER_GUARD
|
||||
|
||||
#define BGFX_API_VERSION UINT32_C(90)
|
||||
#define BGFX_API_VERSION UINT32_C(91)
|
||||
|
||||
/// Color RGB/alpha/depth write. When it's not specified write will be disabled.
|
||||
#define BGFX_STATE_WRITE_R UINT64_C(0x0000000000000001) //!< Enable R write.
|
||||
|
@ -521,19 +521,6 @@
|
|||
#define BGFX_CAPS_FORMAT_TEXTURE_MSAA UINT16_C(0x2000) //!< Texture can be sampled as MSAA.
|
||||
#define BGFX_CAPS_FORMAT_TEXTURE_MIP_AUTOGEN UINT16_C(0x4000) //!< Texture format supports auto-generated mips.
|
||||
|
||||
///
|
||||
#define BGFX_VIEW_NONE UINT8_C(0x00) //!<
|
||||
#define BGFX_VIEW_STEREO UINT8_C(0x01) //!< View will be rendered in stereo mode.
|
||||
|
||||
///
|
||||
#define BGFX_SUBMIT_EYE_LEFT UINT8_C(0x01) //!< Submit to left eye.
|
||||
#define BGFX_SUBMIT_EYE_RIGHT UINT8_C(0x02) //!< Submit to right eye.
|
||||
#define BGFX_SUBMIT_EYE_MASK UINT8_C(0x03) //!<
|
||||
#define BGFX_SUBMIT_EYE_FIRST BGFX_SUBMIT_EYE_LEFT
|
||||
|
||||
#define BGFX_SUBMIT_RESERVED_SHIFT 7 //!< Internal bits shift.
|
||||
#define BGFX_SUBMIT_RESERVED_MASK UINT8_C(0x80) //!< Internal bits mask.
|
||||
|
||||
///
|
||||
#define BGFX_RESOLVE_NONE UINT8_C(0x00) //!< No resolve flags.
|
||||
#define BGFX_RESOLVE_AUTO_GEN_MIPS UINT8_C(0x01) //!< Auto-generate mip maps on resolve.
|
||||
|
|
45
src/bgfx.cpp
45
src/bgfx.cpp
|
@ -1224,7 +1224,7 @@ namespace bgfx
|
|||
}
|
||||
}
|
||||
|
||||
void EncoderImpl::dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags)
|
||||
void EncoderImpl::dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ)
|
||||
{
|
||||
if (BX_ENABLED(BGFX_CONFIG_DEBUG_UNIFORM) )
|
||||
{
|
||||
|
@ -1255,7 +1255,6 @@ namespace bgfx
|
|||
m_compute.m_numX = bx::max(_numX, 1u);
|
||||
m_compute.m_numY = bx::max(_numY, 1u);
|
||||
m_compute.m_numZ = bx::max(_numZ, 1u);
|
||||
m_compute.m_submitFlags = _flags;
|
||||
|
||||
m_key.m_program = _handle;
|
||||
m_key.m_depth = 0;
|
||||
|
@ -3590,20 +3589,20 @@ namespace bgfx
|
|||
BGFX_ENCODER(setImage(_stage, _handle, _mip, _access, _format) );
|
||||
}
|
||||
|
||||
void Encoder::dispatch(ViewId _id, ProgramHandle _program, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags)
|
||||
void Encoder::dispatch(ViewId _id, ProgramHandle _program, uint32_t _numX, uint32_t _numY, uint32_t _numZ)
|
||||
{
|
||||
BGFX_CHECK_CAPS(BGFX_CAPS_COMPUTE, "Compute is not supported!");
|
||||
BGFX_CHECK_HANDLE_INVALID_OK("dispatch", s_ctx->m_programHandle, _program);
|
||||
BGFX_ENCODER(dispatch(_id, _program, _numX, _numY, _numZ, _flags) );
|
||||
BGFX_ENCODER(dispatch(_id, _program, _numX, _numY, _numZ) );
|
||||
}
|
||||
|
||||
void Encoder::dispatch(ViewId _id, ProgramHandle _program, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags)
|
||||
void Encoder::dispatch(ViewId _id, ProgramHandle _program, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num)
|
||||
{
|
||||
BGFX_CHECK_CAPS(BGFX_CAPS_DRAW_INDIRECT, "Dispatch indirect is not supported!");
|
||||
BGFX_CHECK_CAPS(BGFX_CAPS_COMPUTE, "Compute is not supported!");
|
||||
BGFX_CHECK_HANDLE_INVALID_OK("dispatch", s_ctx->m_programHandle, _program);
|
||||
BGFX_CHECK_HANDLE("dispatch", s_ctx->m_vertexBufferHandle, _indirectHandle);
|
||||
BGFX_ENCODER(dispatch(_id, _program, _indirectHandle, _start, _num, _flags) );
|
||||
BGFX_ENCODER(dispatch(_id, _program, _indirectHandle, _start, _num) );
|
||||
}
|
||||
|
||||
void Encoder::discard()
|
||||
|
@ -4504,10 +4503,10 @@ namespace bgfx
|
|||
s_ctx->setViewFrameBuffer(_id, _handle);
|
||||
}
|
||||
|
||||
void setViewTransform(ViewId _id, const void* _view, const void* _projL, uint8_t _flags, const void* _projR)
|
||||
void setViewTransform(ViewId _id, const void* _view, const void* _proj)
|
||||
{
|
||||
BX_CHECK(checkView(_id), "Invalid view id: %d", _id);
|
||||
s_ctx->setViewTransform(_id, _view, _projL, _flags, _projR);
|
||||
s_ctx->setViewTransform(_id, _view, _proj);
|
||||
}
|
||||
|
||||
void setViewOrder(ViewId _id, uint16_t _num, const ViewId* _order)
|
||||
|
@ -4750,16 +4749,16 @@ namespace bgfx
|
|||
s_ctx->m_encoder0->setImage(_stage, _handle, _mip, _access, _format);
|
||||
}
|
||||
|
||||
void dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags)
|
||||
void dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ)
|
||||
{
|
||||
BGFX_CHECK_API_THREAD();
|
||||
s_ctx->m_encoder0->dispatch(_id, _handle, _numX, _numY, _numZ, _flags);
|
||||
s_ctx->m_encoder0->dispatch(_id, _handle, _numX, _numY, _numZ);
|
||||
}
|
||||
|
||||
void dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags)
|
||||
void dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num)
|
||||
{
|
||||
BGFX_CHECK_API_THREAD();
|
||||
s_ctx->m_encoder0->dispatch(_id, _handle, _indirectHandle, _start, _num, _flags);
|
||||
s_ctx->m_encoder0->dispatch(_id, _handle, _indirectHandle, _start, _num);
|
||||
}
|
||||
|
||||
void discard()
|
||||
|
@ -5744,11 +5743,6 @@ BGFX_C_API void bgfx_set_view_transform(bgfx_view_id_t _id, const void* _view, c
|
|||
bgfx::setViewTransform(_id, _view, _proj);
|
||||
}
|
||||
|
||||
BGFX_C_API void bgfx_set_view_transform_stereo(bgfx_view_id_t _id, const void* _view, const void* _projL, uint8_t _flags, const void* _projR)
|
||||
{
|
||||
bgfx::setViewTransform(_id, _view, _projL, _flags, _projR);
|
||||
}
|
||||
|
||||
BGFX_C_API void bgfx_set_view_order(bgfx_view_id_t _id, uint16_t _num, const bgfx_view_id_t* _order)
|
||||
{
|
||||
bgfx::setViewOrder(_id, _num, _order);
|
||||
|
@ -5940,17 +5934,17 @@ BGFX_C_API void bgfx_set_compute_indirect_buffer(uint8_t _stage, bgfx_indirect_b
|
|||
bgfx::setBuffer(_stage, handle.cpp, bgfx::Access::Enum(_access) );
|
||||
}
|
||||
|
||||
BGFX_C_API void bgfx_dispatch(bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags)
|
||||
BGFX_C_API void bgfx_dispatch(bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ)
|
||||
{
|
||||
union { bgfx_program_handle_t c; bgfx::ProgramHandle cpp; } handle = { _handle };
|
||||
bgfx::dispatch(_id, handle.cpp, _numX, _numY, _numZ, _flags);
|
||||
bgfx::dispatch(_id, handle.cpp, _numX, _numY, _numZ);
|
||||
}
|
||||
|
||||
BGFX_C_API void bgfx_dispatch_indirect(bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags)
|
||||
BGFX_C_API void bgfx_dispatch_indirect(bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num)
|
||||
{
|
||||
union { bgfx_program_handle_t c; bgfx::ProgramHandle cpp; } handle = { _handle };
|
||||
union { bgfx_indirect_buffer_handle_t c; bgfx::IndirectBufferHandle cpp; } indirectHandle = { _indirectHandle };
|
||||
bgfx::dispatch(_id, handle.cpp, indirectHandle.cpp, _start, _num, _flags);
|
||||
bgfx::dispatch(_id, handle.cpp, indirectHandle.cpp, _start, _num);
|
||||
}
|
||||
|
||||
BGFX_C_API void bgfx_discard(void)
|
||||
|
@ -6148,17 +6142,17 @@ BGFX_C_API void bgfx_encoder_set_compute_indirect_buffer(bgfx_encoder_s* _encode
|
|||
BGFX_ENCODER(setBuffer(_stage, handle.cpp, bgfx::Access::Enum(_access) ) );
|
||||
}
|
||||
|
||||
BGFX_C_API void bgfx_encoder_dispatch(bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags)
|
||||
BGFX_C_API void bgfx_encoder_dispatch(bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ)
|
||||
{
|
||||
union { bgfx_program_handle_t c; bgfx::ProgramHandle cpp; } handle = { _handle };
|
||||
BGFX_ENCODER(dispatch(_id, handle.cpp, _numX, _numY, _numZ, _flags) );
|
||||
BGFX_ENCODER(dispatch(_id, handle.cpp, _numX, _numY, _numZ) );
|
||||
}
|
||||
|
||||
BGFX_C_API void bgfx_encoder_dispatch_indirect(bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags)
|
||||
BGFX_C_API void bgfx_encoder_dispatch_indirect(bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num)
|
||||
{
|
||||
union { bgfx_program_handle_t c; bgfx::ProgramHandle cpp; } handle = { _handle };
|
||||
union { bgfx_indirect_buffer_handle_t c; bgfx::IndirectBufferHandle cpp; } indirectHandle = { _indirectHandle };
|
||||
BGFX_ENCODER(dispatch(_id, handle.cpp, indirectHandle.cpp, _start, _num, _flags) );
|
||||
BGFX_ENCODER(dispatch(_id, handle.cpp, indirectHandle.cpp, _start, _num) );
|
||||
}
|
||||
|
||||
BGFX_C_API void bgfx_encoder_discard(bgfx_encoder_s* _encoder)
|
||||
|
@ -6312,7 +6306,6 @@ BGFX_C_API bgfx_interface_vtbl_t* bgfx_get_interface(uint32_t _version)
|
|||
BGFX_IMPORT_FUNC(set_view_mode) \
|
||||
BGFX_IMPORT_FUNC(set_view_frame_buffer) \
|
||||
BGFX_IMPORT_FUNC(set_view_transform) \
|
||||
BGFX_IMPORT_FUNC(set_view_transform_stereo) \
|
||||
BGFX_IMPORT_FUNC(set_view_order) \
|
||||
BGFX_IMPORT_FUNC(encoder_set_marker) \
|
||||
BGFX_IMPORT_FUNC(encoder_set_state) \
|
||||
|
|
37
src/bgfx_p.h
37
src/bgfx_p.h
|
@ -213,6 +213,7 @@ namespace stl = std;
|
|||
#define BGFX_STATE_INTERNAL_SCISSOR UINT64_C(0x2000000000000000)
|
||||
#define BGFX_STATE_INTERNAL_OCCLUSION_QUERY UINT64_C(0x4000000000000000)
|
||||
|
||||
#define BGFX_SUBMIT_RESERVED_MASK UINT8_C(0xff)
|
||||
#define BGFX_SUBMIT_INTERNAL_OCCLUSION_VISIBLE UINT8_C(0x80)
|
||||
|
||||
#define BGFX_RENDERER_DIRECT3D9_NAME "Direct3D 9"
|
||||
|
@ -1549,7 +1550,7 @@ namespace bgfx
|
|||
m_startIndirect = 0;
|
||||
m_numIndirect = UINT16_MAX;
|
||||
m_numMatrices = 1;
|
||||
m_submitFlags = BGFX_SUBMIT_EYE_FIRST;
|
||||
m_submitFlags = 0;
|
||||
m_scissor = UINT16_MAX;
|
||||
m_streamMask = 0;
|
||||
m_stream[0].clear();
|
||||
|
@ -1607,7 +1608,7 @@ namespace bgfx
|
|||
m_numY = 0;
|
||||
m_numZ = 0;
|
||||
m_numMatrices = 0;
|
||||
m_submitFlags = BGFX_SUBMIT_EYE_FIRST;
|
||||
m_submitFlags = 0;
|
||||
m_uniformIdx = UINT8_MAX;
|
||||
|
||||
m_indirectBuffer.idx = kInvalidHandle;
|
||||
|
@ -1694,7 +1695,7 @@ namespace bgfx
|
|||
setClear(BGFX_CLEAR_NONE, 0, 0.0f, 0);
|
||||
setMode(ViewMode::Default);
|
||||
setFrameBuffer(BGFX_INVALID_HANDLE);
|
||||
setTransform(NULL, NULL, BGFX_VIEW_NONE, NULL);
|
||||
setTransform(NULL, NULL);
|
||||
}
|
||||
|
||||
void setRect(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
|
||||
|
@ -1733,10 +1734,8 @@ namespace bgfx
|
|||
m_fbh = _handle;
|
||||
}
|
||||
|
||||
void setTransform(const void* _view, const void* _proj, uint8_t _flags, const void* _proj1)
|
||||
void setTransform(const void* _view, const void* _proj)
|
||||
{
|
||||
m_flags = _flags;
|
||||
|
||||
if (NULL != _view)
|
||||
{
|
||||
bx::memCopy(m_view.un.val, _view, sizeof(Matrix4) );
|
||||
|
@ -1748,20 +1747,11 @@ namespace bgfx
|
|||
|
||||
if (NULL != _proj)
|
||||
{
|
||||
bx::memCopy(m_proj[0].un.val, _proj, sizeof(Matrix4) );
|
||||
bx::memCopy(m_proj.un.val, _proj, sizeof(Matrix4) );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_proj[0].setIdentity();
|
||||
}
|
||||
|
||||
if (NULL != _proj1)
|
||||
{
|
||||
bx::memCopy(m_proj[1].un.val, _proj1, sizeof(Matrix4) );
|
||||
}
|
||||
else
|
||||
{
|
||||
bx::memCopy(m_proj[1].un.val, m_proj[0].un.val, sizeof(Matrix4) );
|
||||
m_proj.setIdentity();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1769,10 +1759,9 @@ namespace bgfx
|
|||
Rect m_rect;
|
||||
Rect m_scissor;
|
||||
Matrix4 m_view;
|
||||
Matrix4 m_proj[2];
|
||||
Matrix4 m_proj;
|
||||
FrameBufferHandle m_fbh;
|
||||
uint8_t m_mode;
|
||||
uint8_t m_flags;
|
||||
};
|
||||
|
||||
struct FrameCache
|
||||
|
@ -2393,14 +2382,14 @@ namespace bgfx
|
|||
submit(_id, _program, handle, _depth, _preserveState);
|
||||
}
|
||||
|
||||
void dispatch(ViewId _id, ProgramHandle _handle, uint32_t _ngx, uint32_t _ngy, uint32_t _ngz, uint8_t _flags);
|
||||
void dispatch(ViewId _id, ProgramHandle _handle, uint32_t _ngx, uint32_t _ngy, uint32_t _ngz);
|
||||
|
||||
void dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags)
|
||||
void dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num)
|
||||
{
|
||||
m_compute.m_indirectBuffer = _indirectHandle;
|
||||
m_compute.m_startIndirect = _start;
|
||||
m_compute.m_numIndirect = _num;
|
||||
dispatch(_id, _handle, 0, 0, 0, _flags);
|
||||
dispatch(_id, _handle, 0, 0, 0);
|
||||
}
|
||||
|
||||
void blit(ViewId _id, TextureHandle _dst, uint8_t _dstMip, uint16_t _dstX, uint16_t _dstY, uint16_t _dstZ, TextureHandle _src, uint8_t _srcMip, uint16_t _srcX, uint16_t _srcY, uint16_t _srcZ, uint16_t _width, uint16_t _height, uint16_t _depth);
|
||||
|
@ -4533,9 +4522,9 @@ namespace bgfx
|
|||
m_view[_id].setFrameBuffer(_handle);
|
||||
}
|
||||
|
||||
BGFX_API_FUNC(void setViewTransform(ViewId _id, const void* _view, const void* _proj, uint8_t _flags, const void* _proj1) )
|
||||
BGFX_API_FUNC(void setViewTransform(ViewId _id, const void* _view, const void* _proj) )
|
||||
{
|
||||
m_view[_id].setTransform(_view, _proj, _flags, _proj1);
|
||||
m_view[_id].setTransform(_view, _proj);
|
||||
}
|
||||
|
||||
BGFX_API_FUNC(void resetView(ViewId _id) )
|
||||
|
|
|
@ -47,74 +47,36 @@ namespace bgfx
|
|||
{
|
||||
}
|
||||
|
||||
ViewState(Frame* _frame, bool _stereo)
|
||||
ViewState(Frame* _frame)
|
||||
{
|
||||
reset(_frame, _stereo);
|
||||
reset(_frame);
|
||||
}
|
||||
|
||||
void reset(Frame* _frame, bool _stereo)
|
||||
void reset(Frame* _frame)
|
||||
{
|
||||
m_alphaRef = 0.0f;
|
||||
m_invViewCached = UINT16_MAX;
|
||||
m_invProjCached = UINT16_MAX;
|
||||
m_invViewProjCached = UINT16_MAX;
|
||||
|
||||
m_view[0] = m_viewTmp[0];
|
||||
m_view[1] = m_viewTmp[1];
|
||||
m_view = m_viewTmp;
|
||||
|
||||
if (_stereo)
|
||||
for (uint32_t ii = 0; ii < BGFX_CONFIG_MAX_VIEWS; ++ii)
|
||||
{
|
||||
m_view[0] = m_viewTmp[0];
|
||||
Matrix4 viewAdjust;
|
||||
bx::mtxIdentity(viewAdjust.un.val);
|
||||
|
||||
for (uint32_t eye = 0; eye < 2; ++eye)
|
||||
{
|
||||
/*
|
||||
const HMD::Eye& hmdEye = hmd.eye[eye];
|
||||
viewAdjust.un.val[12] = hmdEye.viewOffset[0];
|
||||
viewAdjust.un.val[13] = hmdEye.viewOffset[1];
|
||||
viewAdjust.un.val[14] = hmdEye.viewOffset[2];
|
||||
|
||||
for (uint32_t ii = 0; ii < BGFX_CONFIG_MAX_VIEWS; ++ii)
|
||||
{
|
||||
if (BGFX_VIEW_STEREO == (_frame->m_view[ii].m_flags & BGFX_VIEW_STEREO) )
|
||||
{
|
||||
bx::float4x4_mul(&m_view[eye][ii].un.f4x4
|
||||
, &_frame->m_view[ii].m_view.un.f4x4
|
||||
, &viewAdjust.un.f4x4
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
bx::memCopy(&m_view[0][ii].un.f4x4, &_frame->m_view[ii].m_view.un.f4x4, sizeof(Matrix4) );
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (uint32_t ii = 0; ii < BGFX_CONFIG_MAX_VIEWS; ++ii)
|
||||
{
|
||||
bx::memCopy(&m_view[0][ii].un.f4x4, &_frame->m_view[ii].m_view.un.f4x4, sizeof(Matrix4) );
|
||||
}
|
||||
bx::memCopy(&m_view[ii].un.f4x4, &_frame->m_view[ii].m_view.un.f4x4, sizeof(Matrix4) );
|
||||
}
|
||||
|
||||
for (uint32_t ii = 0; ii < BGFX_CONFIG_MAX_VIEWS; ++ii)
|
||||
{
|
||||
for (uint32_t eye = 0; eye < uint32_t(_stereo)+1; ++eye)
|
||||
{
|
||||
bx::float4x4_mul(&m_viewProj[eye][ii].un.f4x4
|
||||
, &m_view[eye][ii].un.f4x4
|
||||
, &_frame->m_view[ii].m_proj[eye].un.f4x4
|
||||
);
|
||||
}
|
||||
bx::float4x4_mul(&m_viewProj[ii].un.f4x4
|
||||
, &m_view[ii].un.f4x4
|
||||
, &_frame->m_view[ii].m_proj.un.f4x4
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
template<uint16_t mtxRegs, typename RendererContext, typename Program, typename Draw>
|
||||
void setPredefined(RendererContext* _renderer, uint16_t _view, uint8_t _eye, const Program& _program, const Frame* _frame, const Draw& _draw)
|
||||
void setPredefined(RendererContext* _renderer, uint16_t _view, const Program& _program, const Frame* _frame, const Draw& _draw)
|
||||
{
|
||||
const FrameCache& frameCache = _frame->m_frameCache;
|
||||
|
||||
|
@ -158,7 +120,7 @@ namespace bgfx
|
|||
{
|
||||
_renderer->setShaderUniform4x4f(flags
|
||||
, predefined.m_loc
|
||||
, m_view[_eye][_view].un.val
|
||||
, m_view[_view].un.val
|
||||
, bx::uint32_min(mtxRegs, predefined.m_count)
|
||||
);
|
||||
}
|
||||
|
@ -166,12 +128,11 @@ namespace bgfx
|
|||
|
||||
case PredefinedUniform::InvView:
|
||||
{
|
||||
uint16_t viewEye = (_view << 1) | _eye;
|
||||
if (viewEye != m_invViewCached)
|
||||
if (_view != m_invViewCached)
|
||||
{
|
||||
m_invViewCached = viewEye;
|
||||
m_invViewCached = _view;
|
||||
bx::float4x4_inverse(&m_invView.un.f4x4
|
||||
, &m_view[_eye][_view].un.f4x4
|
||||
, &m_view[_view].un.f4x4
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -187,7 +148,7 @@ namespace bgfx
|
|||
{
|
||||
_renderer->setShaderUniform4x4f(flags
|
||||
, predefined.m_loc
|
||||
, _frame->m_view[_view].m_proj[_eye].un.val
|
||||
, _frame->m_view[_view].m_proj.un.val
|
||||
, bx::uint32_min(mtxRegs, predefined.m_count)
|
||||
);
|
||||
}
|
||||
|
@ -195,12 +156,11 @@ namespace bgfx
|
|||
|
||||
case PredefinedUniform::InvProj:
|
||||
{
|
||||
uint16_t viewEye = (_view << 1) | _eye;
|
||||
if (viewEye != m_invProjCached)
|
||||
if (_view != m_invProjCached)
|
||||
{
|
||||
m_invProjCached = viewEye;
|
||||
m_invProjCached = _view;
|
||||
bx::float4x4_inverse(&m_invProj.un.f4x4
|
||||
, &_frame->m_view[_view].m_proj[_eye].un.f4x4
|
||||
, &_frame->m_view[_view].m_proj.un.f4x4
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -216,7 +176,7 @@ namespace bgfx
|
|||
{
|
||||
_renderer->setShaderUniform4x4f(flags
|
||||
, predefined.m_loc
|
||||
, m_viewProj[_eye][_view].un.val
|
||||
, m_viewProj[_view].un.val
|
||||
, bx::uint32_min(mtxRegs, predefined.m_count)
|
||||
);
|
||||
}
|
||||
|
@ -224,12 +184,11 @@ namespace bgfx
|
|||
|
||||
case PredefinedUniform::InvViewProj:
|
||||
{
|
||||
uint16_t viewEye = (_view << 1) | _eye;
|
||||
if (viewEye != m_invViewProjCached)
|
||||
if (_view != m_invViewProjCached)
|
||||
{
|
||||
m_invViewProjCached = viewEye;
|
||||
m_invViewProjCached = _view;
|
||||
bx::float4x4_inverse(&m_invViewProj.un.f4x4
|
||||
, &m_viewProj[_eye][_view].un.f4x4
|
||||
, &m_viewProj[_view].un.f4x4
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -258,7 +217,7 @@ namespace bgfx
|
|||
const Matrix4& model = frameCache.m_matrixCache.m_cache[_draw.m_startMatrix];
|
||||
bx::float4x4_mul(&modelView.un.f4x4
|
||||
, &model.un.f4x4
|
||||
, &m_view[_eye][_view].un.f4x4
|
||||
, &m_view[_view].un.f4x4
|
||||
);
|
||||
_renderer->setShaderUniform4x4f(flags
|
||||
, predefined.m_loc
|
||||
|
@ -274,7 +233,7 @@ namespace bgfx
|
|||
const Matrix4& model = frameCache.m_matrixCache.m_cache[_draw.m_startMatrix];
|
||||
bx::float4x4_mul(&modelViewProj.un.f4x4
|
||||
, &model.un.f4x4
|
||||
, &m_viewProj[_eye][_view].un.f4x4
|
||||
, &m_viewProj[_view].un.f4x4
|
||||
);
|
||||
_renderer->setShaderUniform4x4f(flags
|
||||
, predefined.m_loc
|
||||
|
@ -301,9 +260,9 @@ namespace bgfx
|
|||
}
|
||||
}
|
||||
|
||||
Matrix4 m_viewTmp[2][BGFX_CONFIG_MAX_VIEWS];
|
||||
Matrix4 m_viewProj[2][BGFX_CONFIG_MAX_VIEWS];
|
||||
Matrix4* m_view[2];
|
||||
Matrix4 m_viewTmp[BGFX_CONFIG_MAX_VIEWS];
|
||||
Matrix4 m_viewProj[BGFX_CONFIG_MAX_VIEWS];
|
||||
Matrix4* m_view;
|
||||
Rect m_rect;
|
||||
Matrix4 m_invView;
|
||||
Matrix4 m_invProj;
|
||||
|
|
|
@ -5249,9 +5249,8 @@ namespace bgfx { namespace d3d11
|
|||
RenderBind currentBind;
|
||||
currentBind.clear();
|
||||
|
||||
const bool hmdEnabled = false;
|
||||
static ViewState viewState;
|
||||
viewState.reset(_render, hmdEnabled);
|
||||
viewState.reset(_render);
|
||||
|
||||
bool wireframe = !!(_render->m_debug&BGFX_DEBUG_WIREFRAME);
|
||||
bool scissorEnabled = false;
|
||||
|
@ -5299,13 +5298,10 @@ namespace bgfx { namespace d3d11
|
|||
// if we don't do this we'll only see one frame of output and then nothing
|
||||
setFrameBuffer(BGFX_INVALID_HANDLE, true, false);
|
||||
|
||||
bool viewRestart = false;
|
||||
uint8_t eye = 0;
|
||||
uint8_t restartState = 0;
|
||||
viewState.m_rect = _render->m_view[0].m_rect;
|
||||
|
||||
int32_t numItems = _render->m_numRenderItems;
|
||||
for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;)
|
||||
|
||||
for (int32_t item = 0; item < numItems;)
|
||||
{
|
||||
const uint64_t encodedKey = _render->m_sortKeys[item];
|
||||
const bool isCompute = key.decode(encodedKey, _render->m_viewRemap);
|
||||
|
@ -5323,15 +5319,6 @@ namespace bgfx { namespace d3d11
|
|||
|
||||
if (viewChanged)
|
||||
{
|
||||
if (1 == restartState)
|
||||
{
|
||||
restartState = 2;
|
||||
item = restartItem;
|
||||
restartItem = numItems;
|
||||
view = UINT16_MAX;
|
||||
continue;
|
||||
}
|
||||
|
||||
view = key.m_view;
|
||||
currentProgram = BGFX_INVALID_HANDLE;
|
||||
|
||||
|
@ -5341,24 +5328,6 @@ namespace bgfx { namespace d3d11
|
|||
setFrameBuffer(fbh);
|
||||
}
|
||||
|
||||
viewRestart = ( (BGFX_VIEW_STEREO == (_render->m_view[view].m_flags & BGFX_VIEW_STEREO) ) );
|
||||
viewRestart &= hmdEnabled;
|
||||
if (viewRestart)
|
||||
{
|
||||
if (0 == restartState)
|
||||
{
|
||||
restartState = 1;
|
||||
restartItem = item - 1;
|
||||
}
|
||||
|
||||
eye = (restartState - 1) & 1;
|
||||
restartState &= 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
eye = 0;
|
||||
}
|
||||
|
||||
PIX_ENDEVENT();
|
||||
if (item > 1)
|
||||
{
|
||||
|
@ -5367,32 +5336,12 @@ namespace bgfx { namespace d3d11
|
|||
profiler.begin(view);
|
||||
|
||||
viewState.m_rect = _render->m_view[view].m_rect;
|
||||
if (viewRestart)
|
||||
if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) )
|
||||
{
|
||||
if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) )
|
||||
{
|
||||
wchar_t* viewNameW = s_viewNameW[view];
|
||||
viewNameW[3] = L' ';
|
||||
viewNameW[4] = eye ? L'R' : L'L';
|
||||
PIX_BEGINEVENT(0 == ( (view*2+eye)&1)
|
||||
? D3DCOLOR_VIEW_L
|
||||
: D3DCOLOR_VIEW_R
|
||||
, viewNameW
|
||||
);
|
||||
}
|
||||
|
||||
viewState.m_rect.m_x = eye * (viewState.m_rect.m_width+1)/2;
|
||||
viewState.m_rect.m_width /= 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) )
|
||||
{
|
||||
wchar_t* viewNameW = s_viewNameW[view];
|
||||
viewNameW[3] = L' ';
|
||||
viewNameW[4] = L' ';
|
||||
PIX_BEGINEVENT(D3DCOLOR_VIEW, viewNameW);
|
||||
}
|
||||
wchar_t* viewNameW = s_viewNameW[view];
|
||||
viewNameW[3] = L' ';
|
||||
viewNameW[4] = L' ';
|
||||
PIX_BEGINEVENT(D3DCOLOR_VIEW, viewNameW);
|
||||
}
|
||||
|
||||
const Rect& scissorRect = _render->m_view[view].m_scissor;
|
||||
|
@ -5444,12 +5393,6 @@ namespace bgfx { namespace d3d11
|
|||
|
||||
const RenderCompute& compute = renderItem.compute;
|
||||
|
||||
if (0 != eye
|
||||
&& BGFX_SUBMIT_EYE_LEFT == (compute.m_submitFlags&BGFX_SUBMIT_EYE_MASK) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
bool programChanged = false;
|
||||
bool constantsChanged = compute.m_uniformBegin < compute.m_uniformEnd;
|
||||
rendererUpdateUniforms(this, _render->m_uniformBuffer[compute.m_uniformIdx], compute.m_uniformBegin, compute.m_uniformEnd);
|
||||
|
@ -5481,7 +5424,7 @@ namespace bgfx { namespace d3d11
|
|||
}
|
||||
}
|
||||
|
||||
viewState.setPredefined<4>(this, view, eye, program, _render, compute);
|
||||
viewState.setPredefined<4>(this, view, program, _render, compute);
|
||||
|
||||
if (constantsChanged
|
||||
|| program.m_numPredefined > 0)
|
||||
|
@ -5807,7 +5750,7 @@ namespace bgfx { namespace d3d11
|
|||
}
|
||||
}
|
||||
|
||||
viewState.setPredefined<4>(this, view, eye, program, _render, draw);
|
||||
viewState.setPredefined<4>(this, view, program, _render, draw);
|
||||
|
||||
if (constantsChanged
|
||||
|| program.m_numPredefined > 0)
|
||||
|
|
|
@ -5705,9 +5705,8 @@ namespace bgfx { namespace d3d12
|
|||
RenderBind currentBind;
|
||||
currentBind.clear();
|
||||
|
||||
const bool hmdEnabled = false;
|
||||
static ViewState viewState;
|
||||
viewState.reset(_render, hmdEnabled);
|
||||
viewState.reset(_render);
|
||||
|
||||
// bool wireframe = !!(_render->m_debug&BGFX_DEBUG_WIREFRAME);
|
||||
// setDebugWireframe(wireframe);
|
||||
|
@ -5806,9 +5805,9 @@ namespace bgfx { namespace d3d12
|
|||
m_batch.begin();
|
||||
|
||||
viewState.m_rect = _render->m_view[0].m_rect;
|
||||
|
||||
int32_t numItems = _render->m_numRenderItems;
|
||||
for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;)
|
||||
|
||||
for (int32_t item = 0; item < numItems;)
|
||||
{
|
||||
const uint64_t encodedKey = _render->m_sortKeys[item];
|
||||
const bool isCompute = key.decode(encodedKey, _render->m_viewRemap);
|
||||
|
@ -6061,7 +6060,7 @@ namespace bgfx { namespace d3d12
|
|||
|| hasPredefined)
|
||||
{
|
||||
ProgramD3D12& program = m_program[currentProgram.idx];
|
||||
viewState.setPredefined<4>(this, view, 0, program, _render, compute);
|
||||
viewState.setPredefined<4>(this, view, program, _render, compute);
|
||||
commitShaderConstants(key.m_program, gpuAddress);
|
||||
m_commandList->SetComputeRootConstantBufferView(Rdt::CBV, gpuAddress);
|
||||
}
|
||||
|
@ -6457,7 +6456,7 @@ namespace bgfx { namespace d3d12
|
|||
ProgramD3D12& program = m_program[currentProgram.idx];
|
||||
uint32_t ref = (newFlags&BGFX_STATE_ALPHA_REF_MASK)>>BGFX_STATE_ALPHA_REF_SHIFT;
|
||||
viewState.m_alphaRef = ref/255.0f;
|
||||
viewState.setPredefined<4>(this, view, 0, program, _render, draw);
|
||||
viewState.setPredefined<4>(this, view, program, _render, draw);
|
||||
commitShaderConstants(key.m_program, gpuAddress);
|
||||
}
|
||||
|
||||
|
|
|
@ -3745,7 +3745,8 @@ namespace bgfx { namespace d3d9
|
|||
RenderBind currentBind;
|
||||
currentBind.clear();
|
||||
|
||||
ViewState viewState(_render, false);
|
||||
static ViewState viewState;
|
||||
viewState.reset(_render);
|
||||
|
||||
DX_CHECK(device->SetRenderState(D3DRS_FILLMODE, _render->m_debug&BGFX_DEBUG_WIREFRAME ? D3DFILL_WIREFRAME : D3DFILL_SOLID) );
|
||||
ProgramHandle currentProgram = BGFX_INVALID_HANDLE;
|
||||
|
@ -4159,7 +4160,7 @@ namespace bgfx { namespace d3d9
|
|||
}
|
||||
}
|
||||
|
||||
viewState.setPredefined<4>(this, view, 0, program, _render, draw);
|
||||
viewState.setPredefined<4>(this, view, program, _render, draw);
|
||||
}
|
||||
|
||||
{
|
||||
|
|
|
@ -6350,9 +6350,8 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
|||
RenderBind currentBind;
|
||||
currentBind.clear();
|
||||
|
||||
const bool hmdEnabled = false;
|
||||
static ViewState viewState;
|
||||
viewState.reset(_render, hmdEnabled);
|
||||
viewState.reset(_render);
|
||||
|
||||
ProgramHandle currentProgram = BGFX_INVALID_HANDLE;
|
||||
ProgramHandle boundProgram = BGFX_INVALID_HANDLE;
|
||||
|
@ -6409,18 +6408,14 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
|||
m_occlusionQuery.resolve(_render);
|
||||
}
|
||||
|
||||
uint8_t eye = 0;
|
||||
|
||||
if (0 == (_render->m_debug&BGFX_DEBUG_IFH) )
|
||||
{
|
||||
GL_CHECK(glBindFramebuffer(GL_FRAMEBUFFER, m_msaaBackBufferFbo) );
|
||||
|
||||
bool viewRestart = false;
|
||||
uint8_t restartState = 0;
|
||||
viewState.m_rect = _render->m_view[0].m_rect;
|
||||
|
||||
int32_t numItems = _render->m_numRenderItems;
|
||||
for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;)
|
||||
|
||||
for (int32_t item = 0; item < numItems;)
|
||||
{
|
||||
const uint64_t encodedKey = _render->m_sortKeys[item];
|
||||
const bool isCompute = key.decode(encodedKey, _render->m_viewRemap);
|
||||
|
@ -6438,15 +6433,6 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
|||
|
||||
if (viewChanged)
|
||||
{
|
||||
if (1 == restartState)
|
||||
{
|
||||
restartState = 2;
|
||||
item = restartItem;
|
||||
restartItem = numItems;
|
||||
view = UINT16_MAX;
|
||||
continue;
|
||||
}
|
||||
|
||||
view = key.m_view;
|
||||
currentProgram = BGFX_INVALID_HANDLE;
|
||||
|
||||
|
@ -6457,24 +6443,6 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
|||
resolutionHeight = setFrameBuffer(fbh, resolutionHeight, discardFlags);
|
||||
}
|
||||
|
||||
viewRestart = ( (BGFX_VIEW_STEREO == (_render->m_view[view].m_flags & BGFX_VIEW_STEREO) ) );
|
||||
viewRestart &= hmdEnabled;
|
||||
if (viewRestart)
|
||||
{
|
||||
if (0 == restartState)
|
||||
{
|
||||
restartState = 1;
|
||||
restartItem = item - 1;
|
||||
}
|
||||
|
||||
eye = (restartState - 1) & 1;
|
||||
restartState &= 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
eye = 0;
|
||||
}
|
||||
|
||||
if (item > 1)
|
||||
{
|
||||
profiler.end();
|
||||
|
@ -6483,28 +6451,12 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
|||
profiler.begin(view);
|
||||
|
||||
viewState.m_rect = _render->m_view[view].m_rect;
|
||||
if (viewRestart)
|
||||
if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) )
|
||||
{
|
||||
if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) )
|
||||
{
|
||||
char* viewName = s_viewName[view];
|
||||
viewName[3] = ' ';
|
||||
viewName[4] = eye ? 'R' : 'L';
|
||||
GL_CHECK(glInsertEventMarker(0, viewName) );
|
||||
}
|
||||
|
||||
viewState.m_rect.m_x = eye * (viewState.m_rect.m_width+1)/2;
|
||||
viewState.m_rect.m_width /= 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) )
|
||||
{
|
||||
char* viewName = s_viewName[view];
|
||||
viewName[3] = ' ';
|
||||
viewName[4] = ' ';
|
||||
GL_CHECK(glInsertEventMarker(0, viewName) );
|
||||
}
|
||||
char* viewName = s_viewName[view];
|
||||
viewName[3] = ' ';
|
||||
viewName[4] = ' ';
|
||||
GL_CHECK(glInsertEventMarker(0, viewName) );
|
||||
}
|
||||
|
||||
const Rect& scissorRect = _render->m_view[view].m_scissor;
|
||||
|
@ -6615,7 +6567,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
|||
commit(*program.m_constantBuffer);
|
||||
}
|
||||
|
||||
viewState.setPredefined<1>(this, view, eye, program, _render, compute);
|
||||
viewState.setPredefined<1>(this, view, program, _render, compute);
|
||||
|
||||
if (isValid(compute.m_indirectBuffer) )
|
||||
{
|
||||
|
@ -7060,7 +7012,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
|||
commit(*program.m_constantBuffer);
|
||||
}
|
||||
|
||||
viewState.setPredefined<1>(this, view, eye, program, _render, draw);
|
||||
viewState.setPredefined<1>(this, view, program, _render, draw);
|
||||
|
||||
{
|
||||
for (uint32_t stage = 0; stage < BGFX_CONFIG_MAX_TEXTURE_SAMPLERS; ++stage)
|
||||
|
|
|
@ -3449,9 +3449,8 @@ namespace bgfx { namespace mtl
|
|||
RenderBind currentBind;
|
||||
currentBind.clear();
|
||||
|
||||
const bool hmdEnabled = false;
|
||||
static ViewState viewState;
|
||||
viewState.reset(_render, hmdEnabled);
|
||||
viewState.reset(_render);
|
||||
uint32_t blendFactor = 0;
|
||||
|
||||
bool wireframe = !!(_render->m_debug&BGFX_DEBUG_WIREFRAME);
|
||||
|
@ -3485,13 +3484,10 @@ namespace bgfx { namespace mtl
|
|||
|
||||
if (0 == (_render->m_debug&BGFX_DEBUG_IFH) )
|
||||
{
|
||||
bool viewRestart = false;
|
||||
uint8_t eye = 0;
|
||||
uint8_t restartState = 0;
|
||||
viewState.m_rect = _render->m_view[0].m_rect;
|
||||
|
||||
int32_t numItems = _render->m_numRenderItems;
|
||||
for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;)
|
||||
|
||||
for (int32_t item = 0; item < numItems;)
|
||||
{
|
||||
const uint64_t encodedKey = _render->m_sortKeys[item];
|
||||
const bool isCompute = key.decode(encodedKey, _render->m_viewRemap);
|
||||
|
@ -3509,45 +3505,11 @@ namespace bgfx { namespace mtl
|
|||
|
||||
if (viewChanged)
|
||||
{
|
||||
if (1 == restartState)
|
||||
{
|
||||
restartState = 2;
|
||||
item = restartItem;
|
||||
restartItem = numItems;
|
||||
view = UINT16_MAX;
|
||||
continue;
|
||||
}
|
||||
|
||||
view = key.m_view;
|
||||
currentProgram = BGFX_INVALID_HANDLE;
|
||||
|
||||
viewRestart = BGFX_VIEW_STEREO == (_render->m_view[view].m_flags & BGFX_VIEW_STEREO);
|
||||
viewRestart &= hmdEnabled;
|
||||
|
||||
if (viewRestart)
|
||||
{
|
||||
if (0 == restartState)
|
||||
{
|
||||
restartState = 1;
|
||||
restartItem = item - 1;
|
||||
}
|
||||
|
||||
eye = (restartState - 1) & 1;
|
||||
restartState &= 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
eye = 0;
|
||||
}
|
||||
|
||||
viewState.m_rect = _render->m_view[view].m_rect;
|
||||
|
||||
if (viewRestart)
|
||||
{
|
||||
viewState.m_rect.m_x = eye * (viewState.m_rect.m_width+1)/2;
|
||||
viewState.m_rect.m_width /= 2;
|
||||
}
|
||||
|
||||
submitBlit(bs, view);
|
||||
|
||||
const Rect& scissorRect = _render->m_view[view].m_scissor;
|
||||
|
@ -4003,7 +3965,7 @@ namespace bgfx { namespace mtl
|
|||
}
|
||||
}
|
||||
|
||||
viewState.setPredefined<4>(this, view, eye, program, _render, draw);
|
||||
viewState.setPredefined<4>(this, view, program, _render, draw);
|
||||
|
||||
m_uniformBufferFragmentOffset += fragmentUniformBufferSize;
|
||||
m_uniformBufferVertexOffset = m_uniformBufferFragmentOffset;
|
||||
|
|
|
@ -3679,9 +3679,8 @@ VK_DESTROY
|
|||
currentState.m_stateFlags = BGFX_STATE_NONE;
|
||||
currentState.m_stencil = packStencil(BGFX_STENCIL_NONE, BGFX_STENCIL_NONE);
|
||||
|
||||
const bool hmdEnabled = false;
|
||||
ViewState viewState(_render, hmdEnabled);
|
||||
viewState.reset(_render, hmdEnabled);
|
||||
static ViewState viewState;
|
||||
viewState.reset(_render);
|
||||
|
||||
// bool wireframe = !!(_render->m_debug&BGFX_DEBUG_WIREFRAME);
|
||||
// setDebugWireframe(wireframe);
|
||||
|
@ -3771,12 +3770,10 @@ VK_DESTROY
|
|||
{
|
||||
// m_batch.begin();
|
||||
|
||||
// uint8_t eye = 0;
|
||||
// uint8_t restartState = 0;
|
||||
viewState.m_rect = _render->m_view[0].m_rect;
|
||||
|
||||
int32_t numItems = _render->m_numRenderItems;
|
||||
for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;)
|
||||
for (int32_t item = 0; item < numItems;)
|
||||
{
|
||||
const uint64_t encodedKey = _render->m_sortKeys[item];
|
||||
const bool isCompute = key.decode(encodedKey, _render->m_viewRemap);
|
||||
|
@ -3997,7 +3994,7 @@ BX_UNUSED(currentSamplerStateIdx);
|
|||
|| hasPredefined)
|
||||
{
|
||||
ProgramVK& program = m_program[currentProgram.idx];
|
||||
viewState.setPredefined<4>(this, view, 0, program, _render, compute);
|
||||
viewState.setPredefined<4>(this, view, program, _render, compute);
|
||||
// commitShaderConstants(key.m_program, gpuAddress);
|
||||
// m_commandList->SetComputeRootConstantBufferView(Rdt::CBV, gpuAddress);
|
||||
}
|
||||
|
@ -4300,7 +4297,7 @@ BX_UNUSED(currentSamplerStateIdx);
|
|||
ProgramVK& program = m_program[currentProgram.idx];
|
||||
uint32_t ref = (newFlags&BGFX_STATE_ALPHA_REF_MASK)>>BGFX_STATE_ALPHA_REF_SHIFT;
|
||||
viewState.m_alphaRef = ref/255.0f;
|
||||
viewState.setPredefined<4>(this, view, 0, program, _render, draw);
|
||||
viewState.setPredefined<4>(this, view, program, _render, draw);
|
||||
commitShaderUniforms(m_commandBuffer, key.m_program); //, gpuAddress);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue