13GX_CORE_NAMESPACE_BEGIN()
22 _priority._view = view;
24 _pPerformanceCounter = &_performanceCounter[
static_cast<s32
>(view)]._subView[
static_cast<s32
>(_priority._subView)];
37 _pPerformanceCounter = &_performanceCounter[
static_cast<s32
>(_priority.
_view)]._subView[
static_cast<s32
>(subView)];
48 _priority.
_pass = pass;
59 if( RENDER_SUB_PRIORITY_LIMIT < subPriority )
61 GX_ERROR(
false,
"最大値を超えるサブプライオリティが指定されました(%d/%d)", subPriority, RENDER_SUB_PRIORITY_LIMIT);
62 subPriority = RENDER_SUB_PRIORITY_LIMIT;
97 _vertexStream[slot].
_offset =
static_cast<u16
>(offset);
98 _vertexStream[slot].
_stride =
static_cast<u8
>(stride);
99 _vertexStream[slot].
_frequencyType =
static_cast<u8
>(frequencyType);
109 _pIndexBuffer = pIndexBuffer;
129#if GX_ENABLE_COMPUTE_SHADER
130 if (renderShader == RENDER_SHADER::COMPUTE)
132 _pComputeShader = pShader;
137 _drawCommandCommonInfo.
_registerSet[
static_cast<u32
>(renderShader)]._pShader = pShader;
148void* GxRenderContext::setParameter(GxParameter& parameter, PARAMETER_TYPE type, u32 size)
150 parameter._type = type;
151 parameter._size = size;
152 parameter._pBuffer = allocParameter(size);
154 GX_ASSERT(parameter._pBuffer,
"パラメータ用のメモリ確保に失敗");
156 return parameter._pBuffer;
163void GxRenderContext::sendPacket(
void* pCommand)
165 if( _packetCountBlock == 1 )
169 GX_ASSERT(pNewPacketBlock,
"メモリの確保に失敗");
176 *ppNext = pNewPacketBlock;
177 _pPacketBlock = pNewPacketBlock;
181 auto* pPacket = _pPacketBlock++;
186 pPacket->_priority = _priority;
201 if( _commandSizeBlock < size )
204 _pCommandBlock = getGxRenderDevice()->allocateCommandBlock();
205 GX_ASSERT(_pCommandBlock,
"コマンドバッファが不足しています。プロジェクト設定でサイズを増やしてください。");
210 _pCommandBlock = GX_POINTER_ADD(_pCommandBlock, size);
211 _commandSizeBlock -= size;
216 return reinterpret_cast<void*
>(pInfo + 1);
224void* GxRenderContext::allocParameter(u32 size)
226 void* pBuffer =
nullptr;
231 if (_commandSizeBlock < size)
234 _pCommandBlock = getGxRenderDevice()->allocateCommandBlock();
235 GX_ASSERT(_pCommandBlock,
"コマンドバッファが不足しています。プロジェクト設定でサイズを増やしてください。");
239 pBuffer = _pCommandBlock;
240 _pCommandBlock = GX_POINTER_ADD(_pCommandBlock, size);
241 _commandSizeBlock -= size;
253 void* pBuffer =
nullptr;
258 if (_commandSizeBlock < size)
261 _pCommandBlock = getGxRenderDevice()->allocateCommandBlock();
262 GX_ASSERT(_pCommandBlock,
"メモリの確保に失敗");
266 pBuffer = _pCommandBlock;
267 _pCommandBlock = GX_POINTER_ADD(_pCommandBlock, size);
268 _commandSizeBlock -= size;
273GX_CORE_NAMESPACE_END()
RENDER_VIEW
描画優先度(ビュー)
Definition GxRender.h:442
RENDER_SHADER
Definition GxRender.h:75
RENDER_PASS
描画優先度(パス)
Definition GxRender.h:515
@ RENDER_VERTEX_STREAM_COUNT_MAX
サポートする頂点ストリーム数
Definition GxRender.h:26
RENDER_SUB_VIEW
描画優先度(サブビュー)
Definition GxRender.h:485
RENDER_STREAM_FREQUENCY_TYPE
頂点頻度タイプ
Definition GxRender.h:225
static constexpr u32 VALUE_16
16
Definition GxMath.h:123
static GX_FORCE_INLINE T getRoundUpFast(T value, size_t alignment)
数値切り上げ(高速版 ※2のべき乗指定)
Definition GxMath.h:537
static GX_FORCE_INLINE f32 getSaturate(const f32 value)
0.0f~1.0の範囲にクランプした値を取得(f32)
Definition GxMath.h:374
描画コマンドの並列発行を管理します。
Definition GxRenderContext.h:28
GX_FORCE_INLINE void setIndexBuffer(GxRenderIndexBuffer *pIndexBuffer)
インデックスバッファの設定
Definition GxRenderContext.inl:107
GX_FORCE_INLINE void setSubPriorityF32(f32 subPriority)
サブプライオリティの設定(パス内での優先度)
Definition GxRenderContext.inl:74
GX_FORCE_INLINE void setSubPriority(u32 subPriority)
サブプライオリティの設定(パス内での優先度)
Definition GxRenderContext.inl:56
GX_FORCE_INLINE void setSubView(RENDER_SUB_VIEW subView)
サブビューの設定(シャドウマップや反射マップなど)
Definition GxRenderContext.inl:33
GX_FORCE_INLINE void setPass(RENDER_PASS pass)
パスの設定(Zプリパス、不透明パスなど)
Definition GxRenderContext.inl:46
GX_FORCE_INLINE void setVertexDeclaration(GxRenderVertexDeclaration *pVertexDeclaration)
頂点宣言の設定
Definition GxRenderContext.inl:117
GX_FORCE_INLINE void setShader(RENDER_SHADER renderShader, GxRenderShader *pShader)
頂点シェーダの設定
Definition GxRenderContext.inl:127
GX_FORCE_INLINE void setVertexStream(u32 slot, GxRenderVertexBuffer *pVertexBuffer, u32 offset, u32 stride, RENDER_STREAM_FREQUENCY_TYPE frequencyType=RENDER_STREAM_FREQUENCY_TYPE::INDEXED)
頂点ストリームの設定
Definition GxRenderContext.inl:88
static constexpr u32 COMMAND_BLOCK_SIZE
コマンドブロックサイズ
Definition GxRenderDevice.h:923
static constexpr u32 PACKET_BLOCK_SIZE
パケットブロックサイズ
Definition GxRenderDevice.h:921
COMMAND_TYPE
コマンドタイプ
Definition GxRenderDevice.h:528
インデックスバッファを管理する
Definition GxRenderIndexBuffer.h:20
シェーダ共通の処理を記述
Definition GxRenderShader.h:20
頂点バッファを管理する
Definition GxRenderVertexBuffer.h:20
頂点シェーダに渡す頂点の宣言を管理する
Definition GxRenderVertexDeclaration.h:22
描画パケット
Definition GxRenderDevice.h:2427
u16 _offset
オフセット
Definition GxRenderDevice.h:486
GxRenderVertexBuffer * _pVertexBuffer
頂点バッファ
Definition GxRenderDevice.h:485
u8 _stride
ストライド
Definition GxRenderDevice.h:487
u8 _frequencyType
頻度タイプ
Definition GxRenderDevice.h:488
u32 _subPriority
サブプライオリティ
Definition GxRenderDevice.h:519
RENDER_VIEW _view
ビュー
Definition GxRenderDevice.h:516
RENDER_PASS _pass
パス
Definition GxRenderDevice.h:518
RENDER_SUB_VIEW _subView
サブビュー
Definition GxRenderDevice.h:517