def __init__(self, processor): self.processor = processor off = (1.0/processor.width)*1.2, (1.0/processor.height)*1.2 self.vertical = ShaderProgram( FragmentShader.open('shaders/gaussian/vertical.frag'), off = off, ) self.horizontal = ShaderProgram( FragmentShader.open('shaders/gaussian/horizontal.frag'), off = off, )
def __init__(self, width, height): self.width = width self.height = height self.framebuffer = Framebuffer() self.tex1 = Texture(width, height, filter=GL_NEAREST, format=GL_RGBA32F, clamp='st') self.tex2 = Texture(width, height, filter=GL_NEAREST, format=GL_RGBA32F, clamp='st') self.tex3 = Texture(width, height, filter=GL_NEAREST, format=GL_RGBA32F, clamp='st') self.program = ShaderProgram( FragmentShader.open('shaders/ripples.frag'), offsets=(1.0 / width, 1.0 / height), tex2=Sampler2D(GL_TEXTURE1), tex3=Sampler2D(GL_TEXTURE2), )
def Sun(color=(1.0, 1.0, 1.0), direction=(0.5,-0.5,0.0), ambient=(0.1, 0.1, 0.1)): return ShaderProgram( VertexShader.open('shaders/sun.vert'), FragmentShader.open('shaders/sun.frag'), color = color, direction = direction, ambient = ambient, )
def init_program(self): self.near = 0.25 self.far = 3.0 self.fov = 120.0 self.program = ShaderProgram( VertexShader.open(os.path.join(os.path.dirname(__file__) , 'opglex/shaders/simple.vert')), FragmentShader.open(os.path.join(os.path.dirname(__file__), 'opglex/shaders/simple.frag')), offset = [0.0, 0.0, 0.0], perspectiveMatrix = Matrix.perspective(self.width, self.height, self.fov, self.near, self.far) )
def Sun(color=(1.0, 1.0, 1.0), direction=(0.5, -0.5, 0.0), ambient=(0.1, 0.1, 0.1)): return ShaderProgram( VertexShader.open('shaders/sun.vert'), FragmentShader.open('shaders/sun.frag'), color=color, direction=direction, ambient=ambient, )
def shader(self, *names, **kwargs): if names in self.shaders: return self.shaders[names] else: shader = ShaderProgram( *[ FragmentShader.open(res_open(here('shaders/%s' % name))) if name.endswith('.frag') else VertexShader.open( res_open(here('shaders/%s' % name))) for name in names ], **kwargs) self.shaders[names] = shader return shader
def shader(self, *names, **kwargs): if names in self.shaders: return self.shaders[names] else: shader = ShaderProgram(*[ FragmentShader.open(res_open(here('shaders/%s' % name))) if name.endswith('.frag') else VertexShader.open(res_open(here('shaders/%s' % name))) for name in names ], **kwargs) self.shaders[names] = shader return shader
def __init__(self, width, height, scale=0.2): self.width = width self.height = height self.view = Screen(0, 0, width, height) self.vertex_texture = Texture(width, height, GL_RGBA32F) self.normal_texture = Texture(width, height, GL_RGBA32F) self.fbo = Framebuffer(self.vertex_texture, self.normal_texture) self.fbo.drawto = GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT self.program = ShaderProgram( FragmentShader.open("shaders/heightmap_normal.frag"), offsets=(1.0 / width, 1.0 / height), scale=scale ) self.vbo = self.generate_vbo(width, height)
def __init__(self, width, height): self.width = width self.height = height self.framebuffer = Framebuffer() self.tex1 = Texture(width, height, filter=GL_NEAREST, format=GL_RGBA32F, clamp='st') self.tex2 = Texture(width, height, filter=GL_NEAREST, format=GL_RGBA32F, clamp='st') self.tex3 = Texture(width, height, filter=GL_NEAREST, format=GL_RGBA32F, clamp='st') self.program = ShaderProgram( FragmentShader.open('shaders/ripples.frag'), offsets = (1.0/width, 1.0/height), tex2 = Sampler2D(GL_TEXTURE1), tex3 = Sampler2D(GL_TEXTURE2), )
def __init__(self, **kwargs): super(Knot_Display, self).__init__(**kwargs) self.program = ShaderProgram( FragmentShader.open('test.frag'), VertexShader.open('test.vert') ) self.numpoints = 100000 self.point_size = (4*4 + 4) # create_buffer(size, target=34962, usage=35048, vbo=True) self.vbos = [] for i in range(2): vbo = pyglet.graphics.vertexbuffer.create_buffer( self.numpoints*self.point_size, GL_ARRAY_BUFFER, GL_STREAM_DRAW ) self.vbos.append(vbo) print len(self.vbos)
def __init__(self, width, height, scale=0.2): self.width = width self.height = height self.view = Screen(0, 0, width, height) self.vertex_texture = Texture(width, height, GL_RGBA32F) self.normal_texture = Texture(width, height, GL_RGBA32F) self.fbo = Framebuffer( self.vertex_texture, self.normal_texture, ) self.fbo.drawto = GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT self.program = ShaderProgram( FragmentShader.open('shaders/heightmap_normal.frag'), offsets=(1.0 / width, 1.0 / height), scale=scale, ) self.vbo = self.generate_vbo(width, height)
from util import Mesh, Processor, Kernel, offsets, gl_init from gaussian import Gaussian ### setup ### window = pyglet.window.Window() projection = Projection(0, 0, window.width, window.height, near=18, far=50) texture = Texture(window.width, window.height, GL_RGBA32F) bunny = Mesh('meshes/bunny') processor = Processor(texture) ### Shaders and helpers ### depth = ShaderProgram( VertexShader.open('shaders/normal.vert'), FragmentShader.open('shaders/depth.frag'), ) average = ShaderProgram( VertexShader.open('shaders/normal.vert'), FragmentShader.open('shaders/convolution.frag'), kernel_size=3 * 3, kernel=UniformArray(float, 1, [ 1, 1, 1, 1, 1, 1, 1, 1,
from __future__ import with_statement from contextlib import nested import pyglet from gletools import ShaderProgram, FragmentShader, Texture, Framebuffer, Projection, Screen from gletools.gl import * from random import random from util import quad, Processor, ChangeValue from gaussian import Gaussian window = pyglet.window.Window() projection = Projection(0, 0, window.width, window.height) noise = ShaderProgram( FragmentShader.open('shaders/noise.frag'), seed=0.0, ) width, height = 64, 64 noise_texture = Texture(width, height, format=GL_RGBA32F) noise_processor = Processor(noise_texture) texture = Texture(64, 64, format=GL_RGBA32F) processor = Processor(texture) noise_processor.filter(noise_texture, noise) processor.copy(noise_texture, texture) gaussian = Gaussian(processor) gaussian.filter(texture, 2) rotation = ChangeValue()
from util import Mesh, Processor, Kernel, offsets, gl_init from gaussian import Gaussian ### setup ### window = pyglet.window.Window() projection = Projection(0, 0, window.width, window.height, near=18, far=50) texture = Texture(window.width, window.height, GL_RGBA32F) bunny = Mesh('meshes/brain') processor = Processor(texture) ### Shaders and helpers ### depth = ShaderProgram( VertexShader.open('shaders/normal.vert'), FragmentShader.open('shaders/depth.frag'), ) average = ShaderProgram( VertexShader.open('shaders/normal.vert'), FragmentShader.open('shaders/convolution.frag'), kernel_size = 3*3, kernel = UniformArray(float, 1, [ 1, 1, 1, 1, 1, 1, 1, 1, 1, ]), output_factor = 1.0/9.0, input_factor = 1.0, offsets = offsets(-1, 1, window), )
import pyglet from gletools import ShaderProgram, FragmentShader, Texture, Framebuffer, Sampler2D from gletools.gl import * from lif_parser import LifParser window = pyglet.window.Window(fullscreen=True, vsync=False) framebuffer = Framebuffer() front = Texture(window.width, window.height, format=GL_RGB, filter=GL_NEAREST) back = Texture(window.width, window.height, format=GL_RGB, filter=GL_NEAREST) framebuffer.textures[0] = front program = ShaderProgram( FragmentShader.open('shader.frag'), ) program.vars.width = float(front.width) program.vars.height = float(front.height) program.vars.texture = Sampler2D(GL_TEXTURE0) def quad(): glBegin(GL_QUADS) glTexCoord2f(1.0, 1.0) glVertex3f(window.width, window.height, 0.0) glTexCoord2f(1.0, 0.0) glVertex3f(window.width, 0.0, 0.0) glTexCoord2f(0.0, 0.0) glVertex3f(0.0, 0.0, 0.0) glTexCoord2f(0.0, 1.0) glVertex3f(0.0, window.height, 0.0)
depth_shader = VertexShader(''' varying float depth; void main() { depth = -(gl_ModelViewMatrix * gl_Vertex).z; gl_TexCoord[0] = gl_MultiTexCoord0; gl_Position = ftransform(); gl_FrontColor = gl_Color; } ''') blur = ShaderProgram( depth_shader, FragmentShader.open('shader.frag'), ) blur.vars.width = float(window.width) blur.vars.height = float(window.height) blur.vars.texture = Sampler2D(GL_TEXTURE0) blur.vars.depthmap = Sampler2D(GL_TEXTURE1) depth = ShaderProgram( depth_shader, FragmentShader(''' varying float depth; uniform sampler2D texture; void main(){ vec4 color = texture2D(texture, gl_TexCoord[0].st); gl_FragData[0] = color; gl_FragData[1] = color;
def load_lighting(self, name, **kwargs): return ShaderProgram( VertexShader.open(res_open(here('shaders/lighting/default.vert'))), FragmentShader.open(res_open(here('shaders/lighting/%s' % name))), **kwargs )
from __future__ import with_statement from contextlib import nested import pyglet from gletools import ShaderProgram, FragmentShader, Texture, Framebuffer, Projection, Screen from gletools.gl import * from random import random from util import quad, Processor, ChangeValue from gaussian import Gaussian window = pyglet.window.Window() projection = Projection(0, 0, window.width, window.height) noise = ShaderProgram( FragmentShader.open('shaders/noise.frag'), seed = 0.0, ) width, height = 64, 64 noise_texture = Texture(width, height, format=GL_RGBA32F) noise_processor = Processor(noise_texture) texture = Texture(64, 64, format=GL_RGBA32F) processor = Processor(texture) noise_processor.filter(noise_texture, noise) processor.copy(noise_texture, texture) gaussian = Gaussian(processor) gaussian.filter(texture, 2) rotation = ChangeValue() @window.event
import random import pyglet from gletools import ( ShaderProgram, FragmentShader, Texture, Framebuffer, Sampler2D ) from gletools.gl import * window = pyglet.window.Window(fullscreen=True) framebuffer = Framebuffer() tex1 = Texture(window.width, window.height, filter=GL_LINEAR, format=GL_RGBA32F) tex2 = Texture(window.width, window.height, filter=GL_LINEAR, format=GL_RGBA32F) tex3 = Texture(window.width, window.height, filter=GL_LINEAR, format=GL_RGBA32F) program = ShaderProgram( FragmentShader.open('ripples.frag'), ) program.vars.resolution = float(window.width), float(window.height) program.vars.tex2 = Sampler2D(GL_TEXTURE1) program.vars.tex3 = Sampler2D(GL_TEXTURE2) def quad(left, right, top, bottom): glBegin(GL_QUADS) glTexCoord2f(1.0, 1.0) glVertex3f(right, top, 0.0) glTexCoord2f(1.0, 0.0) glVertex3f(right, bottom, 0.0) glTexCoord2f(0.0, 0.0) glVertex3f(left, bottom, 0.0) glTexCoord2f(0.0, 1.0) glVertex3f(left, top, 0.0)
from contextlib import nested import pyglet from gletools import ShaderProgram, FragmentShader, Texture, Framebuffer, Sampler2D from gletools.gl import * from lif_parser import LifParser window = pyglet.window.Window(fullscreen=True, vsync=False) framebuffer = Framebuffer() front = Texture(window.width, window.height, format=GL_RGB, filter=GL_NEAREST) back = Texture(window.width, window.height, format=GL_RGB, filter=GL_NEAREST) framebuffer.textures[0] = front program = ShaderProgram(FragmentShader.open('shader.frag'), ) program.vars.width = float(front.width) program.vars.height = float(front.height) program.vars.texture = Sampler2D(GL_TEXTURE0) def quad(): glBegin(GL_QUADS) glTexCoord2f(1.0, 1.0) glVertex3f(window.width, window.height, 0.0) glTexCoord2f(1.0, 0.0) glVertex3f(window.width, 0.0, 0.0) glTexCoord2f(0.0, 0.0) glVertex3f(0.0, 0.0, 0.0) glTexCoord2f(0.0, 1.0) glVertex3f(0.0, window.height, 0.0)