def _computeMVP(self):
     projMat = Mat4.convertMat(CSYupRight, base.camLens.getCoordinateSystem(
     )) * base.camLens.getProjectionMat()
     transformMat = TransformState.makeMat(
         Mat4.convertMat(base.win.getGsg().getInternalCoordinateSystem(),
                         CSZupRight))
     modelViewMat = transformMat.invertCompose(render.getTransform(
         base.cam)).getMat()
     self.lastMVP = modelViewMat * projMat
 def computeMVP(self):
     projMat = Mat4.convertMat(
         CSYupRight,
         self.lens.getCoordinateSystem()) * self.lens.getProjectionMat()
     transformMat = TransformState.makeMat(
         Mat4.convertMat(base.win.getGsg().getInternalCoordinateSystem(),
                         CSZupRight))
     modelViewMat = transformMat.invertCompose(
         render.getTransform(self.cameraNode)).getMat()
     self.mvp = UnalignedLMatrix4f(modelViewMat * projMat)
Example #3
0
 def _computeMVP(self):
     """ Computes the current mvp. Actually, this is the
     worldViewProjectionMatrix, but for convience it's called mvp. """
     camLens = self.showbase.camLens
     projMat = Mat4.convertMat(
         CSYupRight,
         camLens.getCoordinateSystem()) * camLens.getProjectionMat()
     transformMat = TransformState.makeMat(
         Mat4.convertMat(
             self.showbase.win.getGsg().getInternalCoordinateSystem(),
             CSZupRight))
     modelViewMat = transformMat.invertCompose(
         self.showbase.render.getTransform(self.showbase.cam)).getMat()
     return UnalignedLMatrix4f(modelViewMat * projMat)
Example #4
0
    def __init__(self):
        """ Creates a new ShadowSource. After the creation, a lens can be added
        with setupPerspectiveLens or setupOrtographicLens. """
        self.index = self._generateUID()
        DebugObject.__init__(self, "ShadowSource-" + str(self.index))
        ShaderStructElement.__init__(self)

        self.valid = False
        self.camera = Camera("ShadowSource-" + str(self.index))
        self.camera.setActive(False)
        self.cameraNode = NodePath(self.camera)
        self.cameraNode.reparentTo(Globals.render.find("RPCameraDummys"))
        self.cameraNode.hide()
        self.resolution = 512
        self.atlasPos = Vec2(0)
        self.doesHaveAtlasPos = False
        self.sourceIndex = 0
        self.mvp = UnalignedLMatrix4f()
        self.sourceIndex = -1
        self.nearPlane = 0.0
        self.farPlane = 1000.0
        self.converterYUR = None
        self.transforMat = TransformState.makeMat(
            Mat4.convertMat(
                Globals.base.win.getGsg().getInternalCoordinateSystem(),
                CSZupRight))
Example #5
0
    def _createInputHandles(self):
        """ Defines various inputs to be used in the shader passes. Most inputs
        use pta-arrays, so updating them is faster than using setShaderInput all the
        time. """
        self.cameraPosition = PTAVecBase3f.emptyArray(1)
        self.currentViewMat = PTALMatrix4f.emptyArray(1)
        self.currentProjMatInv = PTALMatrix4f.emptyArray(1)
        self.lastMVP = PTALMatrix4f.emptyArray(1)
        self.currentMVP = PTALMatrix4f.emptyArray(1)
        self.frameIndex = PTAInt.emptyArray(1)
        self.frameDelta = PTAFloat.emptyArray(1)

        self.renderPassManager.registerStaticVariable("lastMVP", self.lastMVP)
        self.renderPassManager.registerStaticVariable("currentMVP", self.currentMVP)
        self.renderPassManager.registerStaticVariable("frameIndex", self.frameIndex)
        self.renderPassManager.registerStaticVariable("cameraPosition", self.cameraPosition)
        self.renderPassManager.registerStaticVariable("mainCam", self.showbase.cam)
        self.renderPassManager.registerStaticVariable("mainRender", self.showbase.render)
        self.renderPassManager.registerStaticVariable("frameDelta", self.frameDelta)
        self.renderPassManager.registerStaticVariable("currentViewMat", self.currentViewMat)
        self.renderPassManager.registerStaticVariable("currentProjMatInv", self.currentProjMatInv)
        self.renderPassManager.registerStaticVariable("zeroVec2", Vec2(0))
        self.renderPassManager.registerStaticVariable("zeroVec3", Vec3(0))
        self.renderPassManager.registerStaticVariable("zeroVec4", Vec4(0))

        self.transformMat = TransformState.makeMat(Mat4.convertMat(CSYupRight, CSZupRight))
Example #6
0
 def rebuildMatrixCache(self):
     """ Computes values frequently used to compute the mvp """
     self.converterYUR = Mat4.convertMat(CSYupRight, self.lens.getCoordinateSystem()) * self.lens.getProjectionMat()