| 12345678910111213141516171819202122232425262728293031323334353637 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #include "BsRendererObject.h"
- namespace bs { namespace ct
- {
- PerObjectParamDef gPerObjectParamDef;
- PerCallParamDef gPerCallParamDef;
- RendererObject::RendererObject()
- {
- perObjectParamBuffer = gPerObjectParamDef.createBuffer();
- perCallParamBuffer = gPerCallParamDef.createBuffer();
- }
- void RendererObject::updatePerObjectBuffer()
- {
- Matrix4 worldTransform = renderable->getMatrix();
- Matrix4 worldNoScaleTransform = renderable->getMatrixNoScale();
- gPerObjectParamDef.gMatWorld.set(perObjectParamBuffer, worldTransform);
- gPerObjectParamDef.gMatInvWorld.set(perObjectParamBuffer, worldTransform.inverseAffine());
- gPerObjectParamDef.gMatWorldNoScale.set(perObjectParamBuffer, worldNoScaleTransform);
- gPerObjectParamDef.gMatInvWorldNoScale.set(perObjectParamBuffer, worldNoScaleTransform.inverseAffine());
- gPerObjectParamDef.gWorldDeterminantSign.set(perObjectParamBuffer, worldTransform.determinant3x3() >= 0.0f ? 1.0f : -1.0f);
- }
- void RendererObject::updatePerCallBuffer(const Matrix4& viewProj, bool flush)
- {
- Matrix4 worldViewProjMatrix = viewProj * renderable->getMatrix();
- gPerCallParamDef.gMatWorldViewProj.set(perCallParamBuffer, worldViewProjMatrix);
- if(flush)
- perCallParamBuffer->flushToGPU();
- }
- }}
|