summaryrefslogtreecommitdiff
path: root/interacticle/visual/shader.py
diff options
context:
space:
mode:
authorAdrian Kummerlaender2021-03-27 22:35:43 +0100
committerAdrian Kummerlaender2021-03-27 22:35:43 +0100
commit75ef8db0d058158c10951a4184186f8c6cc27acc (patch)
tree03a33785b65472fc5eff9cc5d2c03379747b83d4 /interacticle/visual/shader.py
downloadinteracticle-75ef8db0d058158c10951a4184186f8c6cc27acc.tar
interacticle-75ef8db0d058158c10951a4184186f8c6cc27acc.tar.gz
interacticle-75ef8db0d058158c10951a4184186f8c6cc27acc.tar.bz2
interacticle-75ef8db0d058158c10951a4184186f8c6cc27acc.tar.lz
interacticle-75ef8db0d058158c10951a4184186f8c6cc27acc.tar.xz
interacticle-75ef8db0d058158c10951a4184186f8c6cc27acc.tar.zst
interacticle-75ef8db0d058158c10951a4184186f8c6cc27acc.zip
Initial public commit of this basic MD code
Simulation of interacting particles
Diffstat (limited to 'interacticle/visual/shader.py')
-rw-r--r--interacticle/visual/shader.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/interacticle/visual/shader.py b/interacticle/visual/shader.py
new file mode 100644
index 0000000..c6c035b
--- /dev/null
+++ b/interacticle/visual/shader.py
@@ -0,0 +1,28 @@
+from OpenGL.GL import GL_VERTEX_SHADER, GL_FRAGMENT_SHADER, GL_GEOMETRY_SHADER
+from OpenGL.GL import shaders
+
+class Shader:
+ def __init__(self, fragment_src, vertex_src, uniform):
+ self.program = shaders.compileProgram(
+ shaders.compileShader(vertex_src, GL_VERTEX_SHADER),
+ shaders.compileShader(fragment_src, GL_FRAGMENT_SHADER))
+ self.uniform = { }
+ for name in uniform:
+ self.uniform[name] = shaders.glGetUniformLocation(self.program, name)
+
+ def use(self):
+ shaders.glUseProgram(self.program)
+
+class GeometryShader:
+ def __init__(self, fragment_src, geometry_src, vertex_src, uniform):
+ self.program = shaders.compileProgram(
+ shaders.compileShader(vertex_src, GL_VERTEX_SHADER),
+ shaders.compileShader(geometry_src, GL_GEOMETRY_SHADER),
+ shaders.compileShader(fragment_src, GL_FRAGMENT_SHADER))
+ self.uniform = { }
+ for name in uniform:
+ self.uniform[name] = shaders.glGetUniformLocation(self.program, name)
+
+ def use(self):
+ shaders.glUseProgram(self.program)
+