mirror of
https://github.com/YACReader/yacreader
synced 2026-03-02 19:00:04 -05:00
Clean unused stuff
This commit is contained in:
@ -5,7 +5,6 @@ layout(location = 0) in vec2 vTexCoord;
|
|||||||
layout(location = 1) in flat vec4 vInstanceShading;
|
layout(location = 1) in flat vec4 vInstanceShading;
|
||||||
layout(location = 2) in flat float vInstanceOpacity;
|
layout(location = 2) in flat float vInstanceOpacity;
|
||||||
layout(location = 3) in flat float vIsReflection;
|
layout(location = 3) in flat float vIsReflection;
|
||||||
layout(location = 4) in flat float vInstanceRotation;
|
|
||||||
layout(location = 5) in vec2 vLocalPos;
|
layout(location = 5) in vec2 vLocalPos;
|
||||||
|
|
||||||
// Output
|
// Output
|
||||||
@ -17,12 +16,10 @@ layout(std140, binding = 0) uniform UniformBuffer
|
|||||||
mat4 viewProjectionMatrix;
|
mat4 viewProjectionMatrix;
|
||||||
vec3 backgroundColor;
|
vec3 backgroundColor;
|
||||||
float _pad0;
|
float _pad0;
|
||||||
vec3 shadingColor;
|
|
||||||
float _pad1;
|
|
||||||
float reflectionUp;
|
float reflectionUp;
|
||||||
float reflectionDown;
|
float reflectionDown;
|
||||||
int isReflection;
|
int isReflection;
|
||||||
float _pad2;
|
float _pad1;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Texture and sampler
|
// Texture and sampler
|
||||||
|
|||||||
Binary file not shown.
@ -12,14 +12,12 @@ layout(location = 5) in vec4 instanceModel_row3;
|
|||||||
layout(location = 6) in vec4 instanceShading1;
|
layout(location = 6) in vec4 instanceShading1;
|
||||||
layout(location = 7) in float instanceOpacity;
|
layout(location = 7) in float instanceOpacity;
|
||||||
layout(location = 8) in float instanceFlip;
|
layout(location = 8) in float instanceFlip;
|
||||||
layout(location = 9) in float instanceRotation;
|
|
||||||
|
|
||||||
// Outputs to fragment shader
|
// Outputs to fragment shader
|
||||||
layout(location = 0) out vec2 vTexCoord;
|
layout(location = 0) out vec2 vTexCoord;
|
||||||
layout(location = 1) out flat vec4 vInstanceShading;
|
layout(location = 2) out flat vec4 vInstanceShading;
|
||||||
layout(location = 2) out flat float vInstanceOpacity;
|
layout(location = 3) out flat float vInstanceOpacity;
|
||||||
layout(location = 3) out flat float vIsReflection;
|
layout(location = 4) out flat float vIsReflection;
|
||||||
layout(location = 4) out flat float vInstanceRotation;
|
|
||||||
layout(location = 5) out vec2 vLocalPos;
|
layout(location = 5) out vec2 vLocalPos;
|
||||||
|
|
||||||
// Uniform buffer
|
// Uniform buffer
|
||||||
@ -28,12 +26,10 @@ layout(std140, binding = 0) uniform UniformBuffer
|
|||||||
mat4 viewProjectionMatrix;
|
mat4 viewProjectionMatrix;
|
||||||
vec3 backgroundColor;
|
vec3 backgroundColor;
|
||||||
float _pad0;
|
float _pad0;
|
||||||
vec3 shadingColor;
|
|
||||||
float _pad1;
|
|
||||||
float reflectionUp;
|
float reflectionUp;
|
||||||
float reflectionDown;
|
float reflectionDown;
|
||||||
int isReflection;
|
int isReflection;
|
||||||
float _pad2;
|
float _pad1;
|
||||||
};
|
};
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
@ -54,5 +50,4 @@ void main()
|
|||||||
vInstanceShading = instanceShading1;
|
vInstanceShading = instanceShading1;
|
||||||
vInstanceOpacity = instanceOpacity;
|
vInstanceOpacity = instanceOpacity;
|
||||||
vIsReflection = instanceFlip;
|
vIsReflection = instanceFlip;
|
||||||
vInstanceRotation = instanceRotation;
|
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@ -194,9 +194,9 @@ void YACReaderFlow3D::initialize(QRhiCommandBuffer *cb)
|
|||||||
|
|
||||||
// Create instance buffer for per-draw instance data
|
// Create instance buffer for per-draw instance data
|
||||||
if (!scene.instanceBuffer) {
|
if (!scene.instanceBuffer) {
|
||||||
// Allocate buffer for per-instance data (model matrix + shading + opacity + flipFlag + rotation)
|
// Allocate buffer for per-instance data (model matrix + shading + opacity + flipFlag)
|
||||||
// mat4 (16 floats) + vec4 (4 floats) + float (opacity) + float (flipFlag) + float (rotation) = 23 floats
|
// mat4 (16 floats) + vec4 (4 floats) + float (opacity) + float (flipFlag) = 22 floats
|
||||||
scene.instanceBuffer.reset(m_rhi->newBuffer(QRhiBuffer::Dynamic, QRhiBuffer::VertexBuffer, 23 * sizeof(float)));
|
scene.instanceBuffer.reset(m_rhi->newBuffer(QRhiBuffer::Dynamic, QRhiBuffer::VertexBuffer, 22 * sizeof(float)));
|
||||||
scene.instanceBuffer->create();
|
scene.instanceBuffer->create();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -333,7 +333,7 @@ void YACReaderFlow3D::ensurePipeline()
|
|||||||
QRhiVertexInputLayout inputLayout;
|
QRhiVertexInputLayout inputLayout;
|
||||||
inputLayout.setBindings({
|
inputLayout.setBindings({
|
||||||
{ 5 * sizeof(float) }, // Per-vertex data (position + texCoord)
|
{ 5 * sizeof(float) }, // Per-vertex data (position + texCoord)
|
||||||
{ 23 * sizeof(float), QRhiVertexInputBinding::PerInstance } // Per-instance data
|
{ 22 * sizeof(float), QRhiVertexInputBinding::PerInstance } // Per-instance data
|
||||||
});
|
});
|
||||||
inputLayout.setAttributes({
|
inputLayout.setAttributes({
|
||||||
// Per-vertex attributes
|
// Per-vertex attributes
|
||||||
@ -348,7 +348,7 @@ void YACReaderFlow3D::ensurePipeline()
|
|||||||
{ 1, 6, QRhiVertexInputAttribute::Float4, 16 * sizeof(float) }, // shading vec4
|
{ 1, 6, QRhiVertexInputAttribute::Float4, 16 * sizeof(float) }, // shading vec4
|
||||||
{ 1, 7, QRhiVertexInputAttribute::Float, 20 * sizeof(float) }, // opacity
|
{ 1, 7, QRhiVertexInputAttribute::Float, 20 * sizeof(float) }, // opacity
|
||||||
{ 1, 8, QRhiVertexInputAttribute::Float, 21 * sizeof(float) }, // flipFlag (1.0 = reflection)
|
{ 1, 8, QRhiVertexInputAttribute::Float, 21 * sizeof(float) }, // flipFlag (1.0 = reflection)
|
||||||
{ 1, 9, QRhiVertexInputAttribute::Float, 22 * sizeof(float) } // rotation
|
// rotation removed
|
||||||
});
|
});
|
||||||
scene.pipeline->setVertexInputLayout(inputLayout);
|
scene.pipeline->setVertexInputLayout(inputLayout);
|
||||||
|
|
||||||
@ -409,7 +409,7 @@ void YACReaderFlow3D::render(QRhiCommandBuffer *cb)
|
|||||||
bool isReflection;
|
bool isReflection;
|
||||||
bool isMark;
|
bool isMark;
|
||||||
QRhiTexture *texture;
|
QRhiTexture *texture;
|
||||||
float instanceData[23];
|
float instanceData[22];
|
||||||
UniformData uniformData;
|
UniformData uniformData;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -483,7 +483,7 @@ void YACReaderFlow3D::render(QRhiCommandBuffer *cb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Ensure instance buffer is large enough for all draws
|
// Ensure instance buffer is large enough for all draws
|
||||||
auto requiredInstanceSize = static_cast<quint32>(draws.size() * 23 * sizeof(float));
|
auto requiredInstanceSize = static_cast<quint32>(draws.size() * 22 * sizeof(float));
|
||||||
if (!scene.instanceBuffer || scene.instanceBuffer->size() < requiredInstanceSize) {
|
if (!scene.instanceBuffer || scene.instanceBuffer->size() < requiredInstanceSize) {
|
||||||
scene.instanceBuffer.reset(m_rhi->newBuffer(QRhiBuffer::Dynamic, QRhiBuffer::VertexBuffer, requiredInstanceSize));
|
scene.instanceBuffer.reset(m_rhi->newBuffer(QRhiBuffer::Dynamic, QRhiBuffer::VertexBuffer, requiredInstanceSize));
|
||||||
if (!scene.instanceBuffer->create()) {
|
if (!scene.instanceBuffer->create()) {
|
||||||
@ -515,8 +515,8 @@ void YACReaderFlow3D::render(QRhiCommandBuffer *cb)
|
|||||||
|
|
||||||
// Update instance buffer with all instance data
|
// Update instance buffer with all instance data
|
||||||
for (int i = 0; i < draws.size(); ++i) {
|
for (int i = 0; i < draws.size(); ++i) {
|
||||||
int offset = i * 23 * sizeof(float);
|
int offset = i * 22 * sizeof(float);
|
||||||
batch->updateDynamicBuffer(scene.instanceBuffer.get(), offset, 23 * sizeof(float), draws[i].instanceData);
|
batch->updateDynamicBuffer(scene.instanceBuffer.get(), offset, 22 * sizeof(float), draws[i].instanceData);
|
||||||
}
|
}
|
||||||
|
|
||||||
// === PHASE 2: RENDER (DURING PASS) ===
|
// === PHASE 2: RENDER (DURING PASS) ===
|
||||||
@ -602,9 +602,6 @@ void YACReaderFlow3D::prepareDrawData(const YACReader3DImageRHI &image, bool isR
|
|||||||
outInstanceData[i] = matData[i];
|
outInstanceData[i] = matData[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Store per-instance rotation in the instance data (new slot at index 22)
|
|
||||||
outInstanceData[22] = image.current.rot;
|
|
||||||
|
|
||||||
// Prepare uniform data (copy float data into POD arrays)
|
// Prepare uniform data (copy float data into POD arrays)
|
||||||
const float *vp = viewProjectionMatrix.constData();
|
const float *vp = viewProjectionMatrix.constData();
|
||||||
for (int m = 0; m < 16; ++m)
|
for (int m = 0; m < 16; ++m)
|
||||||
@ -615,15 +612,12 @@ void YACReaderFlow3D::prepareDrawData(const YACReader3DImageRHI &image, bool isR
|
|||||||
outUniformData.backgroundColor[2] = backgroundColor.blueF();
|
outUniformData.backgroundColor[2] = backgroundColor.blueF();
|
||||||
outUniformData._pad0 = 0.0f;
|
outUniformData._pad0 = 0.0f;
|
||||||
|
|
||||||
outUniformData.shadingColor[0] = shadingColor.redF();
|
// shadingColor removed from uniform buffer; keep CPU-side shadingColor member intact
|
||||||
outUniformData.shadingColor[1] = shadingColor.greenF();
|
|
||||||
outUniformData.shadingColor[2] = shadingColor.blueF();
|
|
||||||
outUniformData._pad1 = 0.0f;
|
|
||||||
|
|
||||||
outUniformData.reflectionUp = reflectionUp;
|
outUniformData.reflectionUp = reflectionUp;
|
||||||
outUniformData.reflectionDown = reflectionBottom;
|
outUniformData.reflectionDown = reflectionBottom;
|
||||||
outUniformData.isReflection = isReflection ? 1.0f : 0.0f;
|
outUniformData.isReflection = isReflection ? 1.0f : 0.0f;
|
||||||
outUniformData._pad2 = 0.0f;
|
outUniformData._pad1 = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void YACReaderFlow3D::executeDrawWithOffset(QRhiCommandBuffer *cb, QRhiTexture *texture,
|
void YACReaderFlow3D::executeDrawWithOffset(QRhiCommandBuffer *cb, QRhiTexture *texture,
|
||||||
@ -653,7 +647,7 @@ void YACReaderFlow3D::executeDrawWithOffset(QRhiCommandBuffer *cb, QRhiTexture *
|
|||||||
// Bind vertex buffers with offset into instance buffer
|
// Bind vertex buffers with offset into instance buffer
|
||||||
const QRhiCommandBuffer::VertexInput vbufBindings[] = {
|
const QRhiCommandBuffer::VertexInput vbufBindings[] = {
|
||||||
{ scene.vertexBuffer.get(), 0 },
|
{ scene.vertexBuffer.get(), 0 },
|
||||||
{ scene.instanceBuffer.get(), quint32(uniformSlot * 23 * sizeof(float)) }
|
{ scene.instanceBuffer.get(), quint32(uniformSlot * 22 * sizeof(float)) }
|
||||||
};
|
};
|
||||||
cb->setVertexInput(0, 2, vbufBindings);
|
cb->setVertexInput(0, 2, vbufBindings);
|
||||||
|
|
||||||
@ -1168,24 +1162,6 @@ void YACReaderFlow3D::setFlowRightToLeft(bool b)
|
|||||||
void YACReaderFlow3D::setBackgroundColor(const QColor &color)
|
void YACReaderFlow3D::setBackgroundColor(const QColor &color)
|
||||||
{
|
{
|
||||||
backgroundColor = color;
|
backgroundColor = color;
|
||||||
|
|
||||||
// Auto-calculate shadingColor based on background brightness
|
|
||||||
qreal luminance = (backgroundColor.redF() * 0.299 +
|
|
||||||
backgroundColor.greenF() * 0.587 +
|
|
||||||
backgroundColor.blueF() * 0.114);
|
|
||||||
|
|
||||||
if (luminance < 0.5) {
|
|
||||||
// Dark background - shade towards white
|
|
||||||
shadingColor = QColor(255, 255, 255);
|
|
||||||
shadingTop = 0.8f;
|
|
||||||
shadingBottom = 0.02f;
|
|
||||||
} else {
|
|
||||||
// Light background - shade towards black
|
|
||||||
shadingColor = QColor(0, 0, 0);
|
|
||||||
shadingTop = 0.95f;
|
|
||||||
shadingBottom = 0.3f;
|
|
||||||
}
|
|
||||||
|
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -115,8 +115,7 @@ protected:
|
|||||||
float viewProjectionMatrix[16]; // column-major 4x4
|
float viewProjectionMatrix[16]; // column-major 4x4
|
||||||
float backgroundColor[3];
|
float backgroundColor[3];
|
||||||
float _pad0; // pad to vec4
|
float _pad0; // pad to vec4
|
||||||
float shadingColor[3];
|
|
||||||
float _pad1; // pad to vec4
|
|
||||||
float reflectionUp;
|
float reflectionUp;
|
||||||
float reflectionDown;
|
float reflectionDown;
|
||||||
float isReflection;
|
float isReflection;
|
||||||
|
|||||||
Reference in New Issue
Block a user