fixes most bugs

This commit is contained in:
zomseffen 2020-07-19 10:41:08 +02:00
parent 325da79fac
commit dede00377e
7 changed files with 321 additions and 262 deletions
Lights

View file

@ -14,8 +14,9 @@ class Light:
programId = {}
depthshaderId = -1
def getDepthProgram(self,vertexshader=-1,geometryshader=-1):
if ((vertexshader,geometryshader) not in self.programId.keys() and vertexshader != -1 and geometryshader != -1):
def getDepthProgram(self, vertexshader=-1, geometryshader=-1):
if ((
vertexshader, geometryshader) not in self.programId.keys() and vertexshader != -1 and geometryshader != -1):
if self.depthshaderId == -1:
with open('./Lights/depthfragment.glsl', 'r') as f:
fragment_shader_string = f.read()
@ -33,24 +34,24 @@ class Light:
self.programId[(vertexshader, geometryshader)] = program_id
return program_id
else:
if (vertexshader,geometryshader) not in self.programId.keys():
if (vertexshader, geometryshader) not in self.programId.keys():
return -1
return self.programId[(vertexshader,geometryshader)]
return self.programId[(vertexshader, geometryshader)]
def __init__(self):
self._ModelviewProjectionMatrix = np.identity(4)
self._pos = [0,0,0]
self._lightColor = [1,1,1]
self._pos = [0, 0, 0]
self._lightColor = [1, 1, 1]
self.FramebufferId = -1
self.DepthBuffer = -1
self.map_size = 1024
@property
def lightColor(self):
return self._lightColor
@lightColor.setter
def lightColor(self,value):
def lightColor(self, value):
self._lightColor = value
@property
@ -66,7 +67,7 @@ class Light:
return self._pos
@pos.setter
def pos(self,value):
def pos(self, value):
self._pos = value
def prepareForDepthMapping(self):
@ -74,18 +75,23 @@ class Light:
if self.FramebufferId == -1:
self.FramebufferId = glGenFramebuffers(1)
new = True
glClearColor(1.0,1.0,1.0,1.0)
glBindFramebuffer(GL_FRAMEBUFFER,self.FramebufferId)
#glCullFace(GL_FRONT)
glViewport(0, 0, 512, 512)
glClearColor(1.0, 1.0, 1.0, 1.0)
glBindFramebuffer(GL_FRAMEBUFFER, self.FramebufferId)
glCullFace(GL_FRONT)
glViewport(0, 0, self.map_size, self.map_size)
if new:
if self.DepthBuffer == -1:
self.DepthBuffer = glGenTextures(1)
glBindTexture(GL_TEXTURE_2D, self.DepthBuffer)
glTexImage2D(GL_TEXTURE_2D, 0,GL_DEPTH_COMPONENT, 512, 512, 0,GL_DEPTH_COMPONENT, GL_FLOAT, None)
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, self.map_size, self.map_size, 0, GL_DEPTH_COMPONENT, GL_FLOAT, None)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,GL_TEXTURE_2D, self.FramebufferId, 0)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER)
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, np.array([0, 0, 0], dtype=np.float32))
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, self.FramebufferId, 0)
DrawBuffers = [GL_NONE]
glDrawBuffers(DrawBuffers)
@ -97,5 +103,4 @@ class Light:
DrawBuffers = [GL_COLOR_ATTACHMENT0]
glDrawBuffers(DrawBuffers)
glClearColor(0.0, 0.0, 0.0, 1.0)
glBindFramebuffer(GL_FRAMEBUFFER,0)
glBindFramebuffer(GL_FRAMEBUFFER, 0)