Update gpu-test

This commit is contained in:
Atlante45 2016-01-20 11:13:09 -08:00
parent 8cf393bb59
commit 72790d361b

View file

@ -216,16 +216,16 @@ public:
static const std::string GRID_INSTANCE = "Grid"; static const std::string GRID_INSTANCE = "Grid";
static auto compactColor1 = toCompactColor(vec4{ 0.35f, 0.25f, 0.15f, 1.0f }); static auto compactColor1 = toCompactColor(vec4{ 0.35f, 0.25f, 0.15f, 1.0f });
static auto compactColor2 = toCompactColor(vec4{ 0.15f, 0.25f, 0.35f, 1.0f }); static auto compactColor2 = toCompactColor(vec4{ 0.15f, 0.25f, 0.35f, 1.0f });
static gpu::BufferPointer transformBuffer; static std::vector<glm::mat4> transforms;
static gpu::BufferPointer colorBuffer; static gpu::BufferPointer colorBuffer;
if (!transformBuffer) { if (!transforms.empty()) {
transformBuffer = std::make_shared<gpu::Buffer>(); transforms.reserve(200);
colorBuffer = std::make_shared<gpu::Buffer>(); colorBuffer = std::make_shared<gpu::Buffer>();
for (int i = 0; i < 100; ++i) { for (int i = 0; i < 100; ++i) {
{ {
glm::mat4 transform = glm::translate(mat4(), vec3(0, -1, -50 + i)); glm::mat4 transform = glm::translate(mat4(), vec3(0, -1, -50 + i));
transform = glm::scale(transform, vec3(100, 1, 1)); transform = glm::scale(transform, vec3(100, 1, 1));
transformBuffer->append(transform); transforms.push_back(transform);
colorBuffer->append(compactColor1); colorBuffer->append(compactColor1);
} }
@ -233,18 +233,20 @@ public:
glm::mat4 transform = glm::mat4_cast(quat(vec3(0, PI / 2.0f, 0))); glm::mat4 transform = glm::mat4_cast(quat(vec3(0, PI / 2.0f, 0)));
transform = glm::translate(transform, vec3(0, -1, -50 + i)); transform = glm::translate(transform, vec3(0, -1, -50 + i));
transform = glm::scale(transform, vec3(100, 1, 1)); transform = glm::scale(transform, vec3(100, 1, 1));
transformBuffer->append(transform); transforms.push_back(transform);
colorBuffer->append(compactColor2); colorBuffer->append(compactColor2);
} }
} }
} }
batch.setupNamedCalls(GRID_INSTANCE, 200, [=](gpu::Batch& batch, gpu::Batch::NamedBatchData& data) { for (auto& transform : transforms) {
batch.setViewTransform(camera); batch.setModelTransform(transform);
batch.setModelTransform(Transform()); batch.setupNamedCalls(GRID_INSTANCE, [=](gpu::Batch& batch, gpu::Batch::NamedBatchData& data) {
batch.setPipeline(_pipeline); batch.setViewTransform(camera);
geometryCache->renderWireShapeInstances(batch, GeometryCache::Line, data.count, transformBuffer, colorBuffer); batch.setPipeline(_pipeline);
}); geometryCache->renderWireShapeInstances(batch, GeometryCache::Line, data.count(), colorBuffer);
});
}
} }
{ {
@ -314,7 +316,6 @@ public:
batch.setPipeline(_pipeline); batch.setPipeline(_pipeline);
batch.setInputFormat(getInstancedSolidStreamFormat()); batch.setInputFormat(getInstancedSolidStreamFormat());
batch.setInputBuffer(gpu::Stream::COLOR, colorView); batch.setInputBuffer(gpu::Stream::COLOR, colorView);
batch.setInputBuffer(gpu::Stream::INSTANCE_XFM, instanceXfmView);
batch.setIndirectBuffer(indirectBuffer); batch.setIndirectBuffer(indirectBuffer);
shapeData.setupBatch(batch); shapeData.setupBatch(batch);
batch.multiDrawIndexedIndirect(TYPE_COUNT, gpu::TRIANGLES); batch.multiDrawIndexedIndirect(TYPE_COUNT, gpu::TRIANGLES);