mirror of
https://github.com/love2d/love.git
synced 2026-08-12 08:30:56 +02:00
Initial code for sending flat-array matrices to storage buffers (untested).
This commit is contained in:
@@ -110,17 +110,17 @@ static const DataFormatInfo dataFormatInfo[]
|
||||
{ DATA_BASETYPE_FLOAT, false, 3, 0, 0, 4, 12 }, // DATAFORMAT_FLOAT_VEC3
|
||||
{ DATA_BASETYPE_FLOAT, false, 4, 0, 0, 4, 16 }, // DATAFORMAT_FLOAT_VEC4
|
||||
|
||||
{ DATA_BASETYPE_FLOAT, true, 0, 2, 2, 4, 16 }, // DATAFORMAT_FLOAT_MAT2X2
|
||||
{ DATA_BASETYPE_FLOAT, true, 0, 2, 3, 4, 24 }, // DATAFORMAT_FLOAT_MAT2X3
|
||||
{ DATA_BASETYPE_FLOAT, true, 0, 2, 4, 4, 32 }, // DATAFORMAT_FLOAT_MAT2X4
|
||||
{ DATA_BASETYPE_FLOAT, true, 4, 2, 2, 4, 16 }, // DATAFORMAT_FLOAT_MAT2X2
|
||||
{ DATA_BASETYPE_FLOAT, true, 6, 2, 3, 4, 24 }, // DATAFORMAT_FLOAT_MAT2X3
|
||||
{ DATA_BASETYPE_FLOAT, true, 8, 2, 4, 4, 32 }, // DATAFORMAT_FLOAT_MAT2X4
|
||||
|
||||
{ DATA_BASETYPE_FLOAT, true, 0, 3, 2, 4, 24 }, // DATAFORMAT_FLOAT_MAT3X2
|
||||
{ DATA_BASETYPE_FLOAT, true, 0, 3, 3, 4, 36 }, // DATAFORMAT_FLOAT_MAT3X3
|
||||
{ DATA_BASETYPE_FLOAT, true, 0, 3, 4, 4, 48 }, // DATAFORMAT_FLOAT_MAT3X4
|
||||
{ DATA_BASETYPE_FLOAT, true, 6, 3, 2, 4, 24 }, // DATAFORMAT_FLOAT_MAT3X2
|
||||
{ DATA_BASETYPE_FLOAT, true, 9, 3, 3, 4, 36 }, // DATAFORMAT_FLOAT_MAT3X3
|
||||
{ DATA_BASETYPE_FLOAT, true, 12, 3, 4, 4, 48 }, // DATAFORMAT_FLOAT_MAT3X4
|
||||
|
||||
{ DATA_BASETYPE_FLOAT, true, 0, 4, 2, 4, 32 }, // DATAFORMAT_FLOAT_MAT4X2
|
||||
{ DATA_BASETYPE_FLOAT, true, 0, 4, 3, 4, 48 }, // DATAFORMAT_FLOAT_MAT4X3
|
||||
{ DATA_BASETYPE_FLOAT, true, 0, 4, 4, 4, 64 }, // DATAFORMAT_FLOAT_MAT4X4
|
||||
{ DATA_BASETYPE_FLOAT, true, 8, 4, 2, 4, 32 }, // DATAFORMAT_FLOAT_MAT4X2
|
||||
{ DATA_BASETYPE_FLOAT, true, 12, 4, 3, 4, 48 }, // DATAFORMAT_FLOAT_MAT4X3
|
||||
{ DATA_BASETYPE_FLOAT, true, 16, 4, 4, 4, 64 }, // DATAFORMAT_FLOAT_MAT4X4
|
||||
|
||||
{ DATA_BASETYPE_INT, false, 1, 0, 0, 4, 4 }, // DATAFORMAT_INT32
|
||||
{ DATA_BASETYPE_INT, false, 2, 0, 0, 4, 8 }, // DATAFORMAT_INT32_VEC2
|
||||
|
||||
@@ -75,6 +75,18 @@ void luax_writebufferdata(lua_State *L, int startidx, DataFormat format, char *d
|
||||
case DATAFORMAT_FLOAT_VEC3: writeData<float>(L, startidx, 3, data); break;
|
||||
case DATAFORMAT_FLOAT_VEC4: writeData<float>(L, startidx, 4, data); break;
|
||||
|
||||
case DATAFORMAT_FLOAT_MAT2X2: writeData<float>(L, startidx, 4, data); break;
|
||||
case DATAFORMAT_FLOAT_MAT2X3: writeData<float>(L, startidx, 6, data); break;
|
||||
case DATAFORMAT_FLOAT_MAT2X4: writeData<float>(L, startidx, 8, data); break;
|
||||
|
||||
case DATAFORMAT_FLOAT_MAT3X2: writeData<float>(L, startidx, 6, data); break;
|
||||
case DATAFORMAT_FLOAT_MAT3X3: writeData<float>(L, startidx, 9, data); break;
|
||||
case DATAFORMAT_FLOAT_MAT3X4: writeData<float>(L, startidx, 12, data); break;
|
||||
|
||||
case DATAFORMAT_FLOAT_MAT4X2: writeData<float>(L, startidx, 8, data); break;
|
||||
case DATAFORMAT_FLOAT_MAT4X3: writeData<float>(L, startidx, 12, data); break;
|
||||
case DATAFORMAT_FLOAT_MAT4X4: writeData<float>(L, startidx, 16, data); break;
|
||||
|
||||
case DATAFORMAT_INT32: writeData<int32>(L, startidx, 1, data); break;
|
||||
case DATAFORMAT_INT32_VEC2: writeData<int32>(L, startidx, 2, data); break;
|
||||
case DATAFORMAT_INT32_VEC3: writeData<int32>(L, startidx, 3, data); break;
|
||||
|
||||
Reference in New Issue
Block a user