Пример #1
0
    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,
        )
Пример #2
0
    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),
        )
Пример #3
0
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,
    )
Пример #4
0
 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)
     )
Пример #5
0
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,
    )
Пример #6
0
 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
Пример #7
0
 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
Пример #8
0
    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)
Пример #9
0
    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),
        )
Пример #10
0
    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)
Пример #11
0
    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)
Пример #12
0
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,
Пример #13
0
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()

Пример #14
0
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),
)
Пример #15
0
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)
Пример #16
0
from contextlib import nested

import pyglet
from gletools import ShaderProgram, FragmentShader, Texture, Framebuffer, Projection, Screen
from gletools.gl import *

window = pyglet.window.Window()
texture = Texture(64, 64, filter=GL_LINEAR)
screen = Screen(0, 0, texture.width, texture.height)
projection = Projection(0, 0, window.width, window.height)
framebuffer = Framebuffer()
framebuffer.textures[0] = texture
program = ShaderProgram(
    FragmentShader('''
    uniform float size;
    void main(){
        vec4 vec = vec4(gl_FragCoord.x-size/2.0, gl_FragCoord.y-size/2.0, 0.0, 1.0) / size;
        gl_FragColor = (normalize(vec) + 1.0) / 2.0;
    }'''))
program.vars.size = 64.0
rotation = 0.0


def quad(min=0.0, max=1.0):
    glBegin(GL_QUADS)
    glTexCoord2f(1.0, 1.0)
    glVertex3f(max, max, 0.0)
    glTexCoord2f(1.0, 0.0)
    glVertex3f(max, min, 0.0)
    glTexCoord2f(0.0, 0.0)
    glVertex3f(min, min, 0.0)
    glTexCoord2f(0.0, 1.0)
Пример #17
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;
Пример #18
0
 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
     )
Пример #19
0
from gletools.gl import *

window = pyglet.window.Window()
texture = Texture(256, 256, filter=GL_LINEAR)
framebuffer = Framebuffer()
framebuffer.textures[0] = texture
screen = Screen(0, 0, texture.width, texture.height)
projection = Projection(0, 0, window.width, window.height)
program = ShaderProgram(
    FragmentShader('''
    uniform vec3 seed_vector;
    float nice_noise1(vec2 co){
        return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
    }
    void main(){
        gl_FragColor = vec4(
            nice_noise1(gl_TexCoord[0].xy * seed_vector.x),
            nice_noise1(gl_TexCoord[0].xy * seed_vector.y),
            nice_noise1(gl_TexCoord[0].xy * seed_vector.z),
            0
        );
    }''')
)
from random import random
program.vars.seed_vector = [random() for _ in xrange(3)]
rotation = 0.0

def quad(min=0.0, max=1.0):
    glBegin(GL_QUADS)
    glTexCoord2f(1.0, 1.0)
    glVertex3f(max, max, 0.0)
Пример #20
0
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
Пример #21
0
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)
Пример #22
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)