diff --git a/samples/wip/geometry-grass/GeometryGrassSample.cc b/samples/wip/geometry-grass/GeometryGrassSample.cc index b8f9196af5997e8c8c0be8b3dde25f9db9d8ffad..96a20145897db2a7ea2d06533a96ba2e566102b7 100644 --- a/samples/wip/geometry-grass/GeometryGrassSample.cc +++ b/samples/wip/geometry-grass/GeometryGrassSample.cc @@ -306,7 +306,11 @@ void GeometryGrassSample::init() mGrassUBO = UniformBuffer::create(); mGrassUBO->bind().setData(mGrassUBOData); - mTrampleSSBOData.mowerPos = glm::vec2(0); + + mTrampleSSBOData.mowerPosX = 0; + mTrampleSSBOData.mowerPosY = 0; + // mTrampleSSBOData.mowerPos = glm::vec2(0); + static auto constexpr mowerRange = .75f; mTrampleSSBOData.mowerRangeSquared = mowerRange * mowerRange; mTrampleSSBO = ShaderStorageBuffer::create(); @@ -381,8 +385,9 @@ void GeometryGrassSample::onRenderOpaquePass(glow::pipeline::RenderContext const { // UBO + SSBO Update { - mTrampleSSBOData.mowerPos = mMowerPosition; - mTrampleSSBO->bind().setData(mTrampleSSBOData); + mTrampleSSBOData.mowerPosX = mMowerPosition.x; + mTrampleSSBOData.mowerPosY = mMowerPosition.y; + mTrampleSSBO->bind().setData(mTrampleSSBOData, GL_STREAM_DRAW); applyConfigToUBO(); mGrassUBOData.cameraUp = getCamera()->handle.getTransform().getUpVector(); @@ -390,7 +395,7 @@ void GeometryGrassSample::onRenderOpaquePass(glow::pipeline::RenderContext const mGrassUBOData.cleanVp = info.camData.cleanVp; mGrassUBOData.prevCleanVp = info.camData.prevCleanVp; mGrassUBOData.runtime = getCurrentTime(); - mGrassUBO->bind().setData(mGrassUBOData); + mGrassUBO->bind().setData(mGrassUBOData, GL_STREAM_DRAW); } // Trampling and mowing diff --git a/samples/wip/geometry-grass/GeometryGrassSample.hh b/samples/wip/geometry-grass/GeometryGrassSample.hh index dcb75d6e9f9ffa1cc9ccf56be2468486ee0e3dcb..b6926d1810a50ac1f042af01781fa58302d741a2 100644 --- a/samples/wip/geometry-grass/GeometryGrassSample.hh +++ b/samples/wip/geometry-grass/GeometryGrassSample.hh @@ -39,15 +39,17 @@ struct GrassUBOData struct Trampler { - glow::std140vec2 pos; - glow::std140vec2 velocity; + glm::vec2 pos; + glm::vec2 velocity; }; struct TrampleSSBOData { - glow::std140vec2 mowerPos; - glow::std140float mowerRangeSquared = 1.f; - std::vector<Trampler> tramplers; + float mowerPosX; + float mowerPosY; + // glm::vec2 mowerPos; + float mowerRangeSquared = 1.f; + // std::vector<Trampler> tramplers; }; } diff --git a/samples/wip/geometry-grass/trample.csh b/samples/wip/geometry-grass/trample.csh index 6b2d28b9b2b8058e6302eb82df0a9df7bb6abc4a..3b1204ec391f8c90e0b59517026c9d92e3d2bd0c 100644 --- a/samples/wip/geometry-grass/trample.csh +++ b/samples/wip/geometry-grass/trample.csh @@ -15,7 +15,7 @@ layout(std430) buffer sTrampleInfo vec2 mowerPosition; float mowerRange2; - Trampler tramplers[]; + //Trampler tramplers[]; } ssboTrampleInfo; void main()