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()
def __init__(self, dir, mol, ndir, shadowmap): shadowmap.computeAsTexture(dir, True, shadowAOCanvas) glFinish() moltextureCanvas.SetAsOutput() glDisable(glew.GL_VERTEX_PROGRAM_ARB) glEnable(glew.GL_FRAGMENT_PROGRAM_ARB) AOgpu2.aogpu_settings.BindDrawAOShader() for i in range(3): glew.glProgramEnvParameter4fARB(glew.GL_FRAGMENT_PROGRAM_ARB, i, matSM[0][i],matSM[1][i],matSM[2][i],matSM[3][i]) glew.glProgramEnvParameter4fARB(glew.GL_FRAGMENT_PROGRAM_ARB, 3, dir[0],dir[1],dir[2], 4.0/ndir ) #glew.glProgramEnvParameter4fARB(glew.GL_FRAGMENT_PROGRAM_ARB, 4, 0,stick_radius,0,0) global lastviewport lastviewport[:] = mol.DrawOnTexture() glDisable(GL_BLEND) glEnable(glew.GL_VERTEX_PROGRAM_ARB)
def DrawHalos(self): # let's try to aviod THIS! # Moved to drawFrame() #shadowmap.prepareDepthTextureForCurrentViewpoint() # hum, unavoidable. 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_FRAGMENT_PROGRAM_ARB) glDepthMask(False) glEnable(GL_BLEND) if (cgSettings.doingAlphaSnapshot): glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA) else: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) cgSettings.BindHaloShader( haloCanvas.getResPow2() ) glew.glProgramEnvParameter4fARB(glew.GL_FRAGMENT_PROGRAM_ARB, 0, (100.0+cgSettings.P_halo_aware*1300.0)/scalef/r, 0,0,0) glBegin(GL_QUADS) molGL.MolDrawHalo(self.atompos, self.radii, cgSettings.P_halo_size, self.clipplane, self.excl, self.idx) glEnd() glDisable(GL_BLEND) cgSettings.BindShaders() glDepthMask(True) glPopMatrix() glDisable(glew.GL_VERTEX_PROGRAM_ARB) glDisable(glew.GL_FRAGMENT_PROGRAM_ARB)
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()
def FeedParameters(): for i in range(3): glew.glProgramEnvParameter4fARB(glew.GL_FRAGMENT_PROGRAM_ARB, i+3, matFinal[0][i],matFinal[1][i],matFinal[2][i],matFinal[3][i])