Пример #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 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
Пример #5
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)
Пример #6
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()

Пример #7
0
from gletools.gl import *
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),
)
Пример #8
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)
Пример #9
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)
Пример #10
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)
Пример #11
0
picture = Texture.open('texture.png')

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;