Example #1
0
    def computeAsTexture(self, L, makeboth, canvas):
        global lastL
        #if not numpy.all(lastL == L): # XXX this changes because the light no longer moves with the trackball
        if True:
            canvas.SetAsOutput()
            setMatrices(L, canvas.GetSoftRes(), canvas.GetHardRes(), True, self)
            glClearDepth(1)
            glClear(GL_DEPTH_BUFFER_BIT)
            glDisable(GL_SCISSOR_TEST)
            glDepthFunc(GL_LESS)
            self.mol.DrawShadowmap(False, self.shadowSettings)
            restoreMatrices()

            if (hardSettings.doubleSM and makeboth):
                setMatrices(L, canvas.GetSoftRes(), canvas.GetHardRes(), False, self)
                glClearDepth(-10000)
                glClear(GL_DEPTH_BUFFER_BIT)
                glDepthFunc(GL_GREATER)
                glDisable(GL_SCISSOR_TEST)
                self.mol.DrawShadowmap(False, self.shadowSettings)
                restoreMatrices()
            
            glClearDepth(1)
            glDepthFunc(GL_LESS)
            mainCanvas.SetAsOutput()
            lastL = L

        glew.glActiveTextureARB(glew.GL_TEXTURE1_ARB)
        canvas.SetAsTexture()
Example #2
0
    def DrawShadowmap(self,invert,shadowSettings):
        r = self.r * self.scaleFactor
        px, py, pz = self.pos
        glPushMatrix()
        glScalef(1./r,1./r, 1./r)
        glMultMatrixd((glTrackball.quat * self.orien).asRotation())
        glTranslate(-px, -py, -pz)
        #glClipPlane(GL_CLIP_PLANE0, self.clipplane)

        scalef=extractCurrentScaleFactor()
        glew.glProgramEnvParameter4fARB(glew.GL_VERTEX_PROGRAM_ARB, 0, scalef,0,0,0)

        glEnable(glew.GL_VERTEX_PROGRAM_ARB)
        glEnable(glew.GL_FRAGMENT_PROGRAM_ARB)

        glew.glActiveTextureARB(glew.GL_TEXTURE0_ARB)
        glDisable(GL_TEXTURE_2D)
        glew.glActiveTextureARB(glew.GL_TEXTURE1_ARB)
        glDisable(GL_TEXTURE_2D)

        shadowSettings.BindShaders()
        glBegin(GL_QUADS)
        molGL.MolDrawShadow(self.atompos, self.radii, self.clipplane, self.excl, self.idx)
        glEnd()

        #glDisableClientState(GL_COLOR_ARRAY)
        #glDisableClientState(GL_TEXTURE_COORD_ARRAY)
        #glDrawArrays(GL_QUADS, 0, self.numatoms)
        #glEnableClientState(GL_COLOR_ARRAY)
        #glEnableClientState(GL_TEXTURE_COORD_ARRAY)

        #if (sticks):
        #    pass

        glPopMatrix()
Example #3
0
    def DrawOnTexture(self):
        glEnable(GL_BLEND)
        glBlendFunc(GL_ONE,GL_ONE)
        glMatrixMode(GL_PROJECTION)
        glPushMatrix()
        glLoadIdentity()
        glOrtho(0,moltextureCanvas.GetSoftRes(),0,moltextureCanvas.GetSoftRes(), 0,1)

        glMatrixMode(GL_MODELVIEW)
        glPushMatrix()
        glLoadIdentity()

        lastviewport = glGetIntegerv(GL_VIEWPORT)
        glViewport(0,0,moltextureCanvas.GetSoftRes(),moltextureCanvas.GetSoftRes())

        glew.glActiveTextureARB(glew.GL_TEXTURE1_ARB)
        glDisable(GL_TEXTURE_2D)
        glew.glActiveTextureARB(glew.GL_TEXTURE0_ARB)
        glDisable(GL_TEXTURE_2D)

        glBegin(GL_QUADS)
        molGL.MolDrawOnTexture(self.atompos, self.radii, self.textures, hardSettings.CSIZE, self.idx)
        glEnd()

        #if (self.sticks):
        #    pass

        glMatrixMode(GL_PROJECTION)
        glPopMatrix()
        glMatrixMode(GL_MODELVIEW)
        glPopMatrix()
        glViewport(lastviewport[0],lastviewport[1],lastviewport[2],lastviewport[3])
        return lastviewport
Example #4
0
    def prepareDepthTextureForCurrentViewpoint(self):
        haloCanvas.SetSameRes(mainCanvas)
        haloCanvas.SetAsOutput()
        if (use_accurate_halo): self.shadowSettingsAcc.BindShaders()
        else: self.shadowSettings.BindShaders()

        glClear(GL_DEPTH_BUFFER_BIT)
        self.mol.Draw()
        mainCanvas.SetAsOutput()
        glew.glActiveTextureARB(glew.GL_TEXTURE1_ARB)
        haloCanvas.SetAsTexture()
        glEnable(GL_TEXTURE_2D)
Example #5
0
    def Draw(self):
        r = self.r * self.scaleFactor
        px, py, pz = self.pos
        glPushMatrix()
        glScalef(1./r,1./r,1./r)
        glMultMatrixd((glTrackball.quat * self.orien).asRotation())
        glTranslatef(-px, -py, -pz)
        #glClipPlane(GL_CLIP_PLANE0, self.clipplane)

        x = glGetFloatv(GL_MODELVIEW_MATRIX)
        scalef = extractCurrentScaleFactor_x(x)
        glew.glProgramEnvParameter4fARB(glew.GL_VERTEX_PROGRAM_ARB,0,scalef,0,0,0)

        glEnable(glew.GL_VERTEX_PROGRAM_ARB)
        glEnable(glew.GL_TEXTURE_2D)

        glew.glActiveTextureARB(glew.GL_TEXTURE0_ARB)
        moltextureCanvas.SetAsTexture()

        if cgSettings.P_shadowstrenght>0:
            ShadowMap.GetCurrentPVMatrix()
            ShadowMap.FeedParameters()

        for i in range(3):
            glew.glProgramEnvParameter4fARB(glew.GL_FRAGMENT_PROGRAM_ARB, i, 
                    x[i][0],x[i][1],x[i][2],0)
        glew.glProgramEnvParameter4fARB(glew.GL_FRAGMENT_PROGRAM_ARB, 6,
            self.PredictAO(),0,0,0)

        glEnable(glew.GL_VERTEX_PROGRAM_ARB)
        glEnable(glew.GL_FRAGMENT_PROGRAM_ARB)

        glBegin(GL_QUADS)
        molGL.MolDraw(self.atompos, self.radii, self.textures/moltextureCanvas.GetHardRes(), self.colors, self.clipplane, self.excl, self.idx)
        glEnd()
        #glDrawArrays(GL_QUADS, 0, self.numatoms)

        glDisable(glew.GL_VERTEX_PROGRAM_ARB)
        glDisable(glew.GL_FRAGMENT_PROGRAM_ARB)

        # Draw wireframe for clipplane
        if not numpy.allclose(self.clipplane, 0):
            clipplane = self.clipplane
            glColor(0.5, 0.5, 0.5)
            glBegin(GL_LINE_STRIP)
            glVertex3f(px-r, clipplane[3], pz-r)
            glVertex3f(px-r, clipplane[3], pz+r)
            glVertex3f(px+r, clipplane[3], pz+r)
            glVertex3f(px+r, clipplane[3], pz-r)
            glVertex3f(px-r, clipplane[3], pz-r)
            glEnd()

        glPopMatrix()