From a8ac5639794c52368766a04d98ad5180166b60ca Mon Sep 17 00:00:00 2001 From: rob-bateman Date: Fri, 3 Mar 2017 03:50:49 +0000 Subject: [PATCH] Update renderer to use concatenatedMatrix3D and inverseConcatenatedMatrix3D from transform instead of sceneTransform and inverseSceneTransform, and viewMatrix3D in projection from viewProjection in Camera --- lib/RendererBase.ts | 8 ++++---- lib/animators/states/ParticleBillboardState.ts | 10 +++++----- lib/animators/states/ParticleRotateToHeadingState.ts | 4 ++-- lib/animators/states/ParticleRotateToPositionState.ts | 6 +++--- lib/elements/GL_LineElements.ts | 6 +++--- lib/shaders/ShaderBase.ts | 4 ++-- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/RendererBase.ts b/lib/RendererBase.ts index 049c84fc1..a0b4898da 100644 --- a/lib/RendererBase.ts +++ b/lib/RendererBase.ts @@ -467,11 +467,11 @@ export class RendererBase extends TraverserBase implements IRenderer, IAbstracti this._pOpaqueRenderableHead = null; this._pNumElements = 0; - this._cullPlanes = this._customCullPlanes? this._customCullPlanes : camera.frustumPlanes; - this._numCullPlanes = this._cullPlanes? this._cullPlanes.length : 0; this._cameraPosition = camera.scenePosition; - this._cameraTransform = camera.sceneTransform; + this._cameraTransform = camera.transform.concatenatedMatrix3D; this._cameraForward = camera.transform.forwardVector; + this._cullPlanes = this._customCullPlanes? this._customCullPlanes : camera.projection.frustumPlanes; + this._numCullPlanes = this._cullPlanes? this._cullPlanes.length : 0; RendererBase._iCollectionMark++; @@ -483,7 +483,7 @@ export class RendererBase extends TraverserBase implements IRenderer, IAbstracti this._pBlendedRenderableHead = this.renderableSorter.sortBlendedRenderables(this._pBlendedRenderableHead); } - this._pRttViewProjectionMatrix.copyFrom(camera.viewProjection); + this._pRttViewProjectionMatrix.copyFrom(camera.projection.viewMatrix3D); this._pRttViewProjectionMatrix.appendScale(this.textureRatioX, this.textureRatioY, 1); this.pExecuteRender(camera, view, target, scissorRect, surfaceSelector); diff --git a/lib/animators/states/ParticleBillboardState.ts b/lib/animators/states/ParticleBillboardState.ts index a14bc95eb..c296fd8e2 100644 --- a/lib/animators/states/ParticleBillboardState.ts +++ b/lib/animators/states/ParticleBillboardState.ts @@ -41,15 +41,15 @@ export class ParticleBillboardState extends ParticleStateBase { var comps:Array; if (this._billboardAxis) { - var pos:Vector3D = renderable.sourceEntity.sceneTransform.position; - var look:Vector3D = camera.sceneTransform.position.subtract(pos); + var pos:Vector3D = renderable.sourceEntity.transform.concatenatedMatrix3D.position; + var look:Vector3D = camera.transform.concatenatedMatrix3D.position.subtract(pos); var right:Vector3D = look.crossProduct(this._billboardAxis); right.normalize(); look = this.billboardAxis.crossProduct(right); look.normalize(); //create a quick inverse projection matrix - this._matrix.copyFrom(renderable.sourceEntity.sceneTransform); + this._matrix.copyFrom(renderable.sourceEntity.transform.concatenatedMatrix3D); comps = this._matrix.decompose(Orientation3D.AXIS_ANGLE); this._matrix.copyColumnFrom(0, right); this._matrix.copyColumnFrom(1, this.billboardAxis); @@ -58,8 +58,8 @@ export class ParticleBillboardState extends ParticleStateBase this._matrix.appendRotation(-comps[1].w*MathConsts.RADIANS_TO_DEGREES, comps[1]); } else { //create a quick inverse projection matrix - this._matrix.copyFrom(renderable.sourceEntity.sceneTransform); - this._matrix.append(camera.inverseSceneTransform); + this._matrix.copyFrom(renderable.sourceEntity.transform.concatenatedMatrix3D); + this._matrix.append(camera.transform.inverseConcatenatedMatrix3D); //decompose using axis angle rotations comps = this._matrix.decompose(Orientation3D.AXIS_ANGLE); diff --git a/lib/animators/states/ParticleRotateToHeadingState.ts b/lib/animators/states/ParticleRotateToHeadingState.ts index 027b20c65..7ec10ae6e 100644 --- a/lib/animators/states/ParticleRotateToHeadingState.ts +++ b/lib/animators/states/ParticleRotateToHeadingState.ts @@ -33,8 +33,8 @@ export class ParticleRotateToHeadingState extends ParticleStateBase public setRenderState(shader:ShaderBase, renderable:GL_RenderableBase, animationElements:AnimationElements, animationRegisterData:AnimationRegisterData, camera:Camera, stage:Stage):void { if (( this._pParticleAnimator.animationSet).hasBillboard) { - this._matrix.copyFrom(renderable.sourceEntity.sceneTransform); - this._matrix.append(camera.inverseSceneTransform); + this._matrix.copyFrom(renderable.sourceEntity.transform.concatenatedMatrix3D); + this._matrix.append(camera.transform.inverseConcatenatedMatrix3D); shader.setVertexConstFromMatrix(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleRotateToHeadingState.MATRIX_INDEX), this._matrix); } } diff --git a/lib/animators/states/ParticleRotateToPositionState.ts b/lib/animators/states/ParticleRotateToPositionState.ts index 876741b5e..8140166fc 100644 --- a/lib/animators/states/ParticleRotateToPositionState.ts +++ b/lib/animators/states/ParticleRotateToPositionState.ts @@ -58,13 +58,13 @@ export class ParticleRotateToPositionState extends ParticleStateBase var index:number = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleRotateToPositionState.POSITION_INDEX); if (( this._pParticleAnimator.animationSet).hasBillboard) { - this._matrix.copyFrom(renderable.sourceEntity.sceneTransform); - this._matrix.append(camera.inverseSceneTransform); + this._matrix.copyFrom(renderable.sourceEntity.transform.concatenatedMatrix3D); + this._matrix.append(camera.transform.inverseConcatenatedMatrix3D); shader.setVertexConstFromMatrix(animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleRotateToPositionState.MATRIX_INDEX), this._matrix); } if (this._particleRotateToPositionNode.mode == ParticlePropertiesMode.GLOBAL) { - this._offset = renderable.sourceEntity.inverseSceneTransform.transformVector(this._position); + this._offset = renderable.sourceEntity.transform.inverseConcatenatedMatrix3D.transformVector(this._position); shader.setVertexConst(index, this._offset.x, this._offset.y, this._offset.z); } else animationElements.activateVertexBuffer(index, this._particleRotateToPositionNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3); diff --git a/lib/elements/GL_LineElements.ts b/lib/elements/GL_LineElements.ts index 7be416eb7..88388cbc1 100644 --- a/lib/elements/GL_LineElements.ts +++ b/lib/elements/GL_LineElements.ts @@ -187,11 +187,11 @@ export class GL_LineElements extends GL_ElementsBase var context:IContextGL = this._stage.context; // projection matrix - shader.viewMatrix.copyFrom(camera.projection.matrix, true); + shader.viewMatrix.copyFrom(camera.projection.frustumMatrix3D, true); var matrix3D:Matrix3D = Matrix3D.CALCULATION_MATRIX; - matrix3D.copyFrom(renderable.sourceEntity.sceneTransform); - matrix3D.append(camera.inverseSceneTransform); + matrix3D.copyFrom(renderable.sourceEntity.transform.concatenatedMatrix3D); + matrix3D.append(camera.transform.inverseConcatenatedMatrix3D); shader.sceneMatrix.copyFrom(matrix3D, true); context.setProgramConstantsFromArray(ContextGLProgramType.VERTEX, shader.vertexConstantData); diff --git a/lib/shaders/ShaderBase.ts b/lib/shaders/ShaderBase.ts index 67baf4d44..fd80047d2 100644 --- a/lib/shaders/ShaderBase.ts +++ b/lib/shaders/ShaderBase.ts @@ -663,12 +663,12 @@ export class ShaderBase implements IAbstractionPool } } if (this.sceneNormalMatrixIndex >= 0) { - this.sceneNormalMatrix.copyFrom(renderable.sourceEntity.inverseSceneTransform); + this.sceneNormalMatrix.copyFrom(renderable.sourceEntity.transform.inverseConcatenatedMatrix3D); } if (this.usesTangentSpace && this.cameraPositionIndex >= 0) { - renderable.sourceEntity.inverseSceneTransform.copyRawDataTo(this._pInverseSceneMatrix); + renderable.sourceEntity.transform.inverseConcatenatedMatrix3D.copyRawDataTo(this._pInverseSceneMatrix); var pos:Vector3D = camera.scenePosition; var x:number = pos.x; var y:number = pos.y;