Skip to content

Commit

Permalink
Update renderer to use concatenatedMatrix3D and inverseConcatenatedMa…
Browse files Browse the repository at this point in the history
…trix3D from transform instead of sceneTransform and inverseSceneTransform, and viewMatrix3D in projection from viewProjection in Camera
  • Loading branch information
rob-bateman committed Mar 3, 2017
1 parent 0635a7b commit a8ac563
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 19 deletions.
8 changes: 4 additions & 4 deletions lib/RendererBase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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++;

Expand All @@ -483,7 +483,7 @@ export class RendererBase extends TraverserBase implements IRenderer, IAbstracti
this._pBlendedRenderableHead = <GL_RenderableBase> 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);
Expand Down
10 changes: 5 additions & 5 deletions lib/animators/states/ParticleBillboardState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,15 @@ export class ParticleBillboardState extends ParticleStateBase
{
var comps:Array<Vector3D>;
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);
Expand All @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions lib/animators/states/ParticleRotateToHeadingState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 ((<ParticleAnimationSet> 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);
}
}
Expand Down
6 changes: 3 additions & 3 deletions lib/animators/states/ParticleRotateToPositionState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,13 @@ export class ParticleRotateToPositionState extends ParticleStateBase
var index:number = animationRegisterData.getRegisterIndex(this._pAnimationNode, ParticleRotateToPositionState.POSITION_INDEX);

if ((<ParticleAnimationSet> 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);
Expand Down
6 changes: 3 additions & 3 deletions lib/elements/GL_LineElements.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions lib/shaders/ShaderBase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit a8ac563

Please sign in to comment.