def __init__(self, application): self.application = application self.width, self.height = width, height = application.mesh_width, application.mesh_height col = Column() self.input_height = LabelInput('Height', self).append_to(col).input self.material = LabelInput('Material', self).append_to(col).input self.widget = Widget('Terrain', col, id='terrain').append_to(application.workspace) self.default_material = Texture(2, 2, GL_RGBA, data=(140, 140, 140, 255)*4) self.vertex_texture = Texture(width, height, GL_RGBA32F) self.normal_texture = Texture(application.width, application.height, GL_RGBA32F, unit=GL_TEXTURE0) self.vertex_fbo = Framebuffer(self.vertex_texture) self.normal_fbo = Framebuffer(self.normal_texture) self.update_vertex_shader = application.shader('update_vertex.frag') self.update_normals_shader = application.shader('update_normals.frag') self.update_normals_shader.vars.offsets = 1.0/application.width, 1.0/application.height self.reset_vertex = application.shader('reset_vertex.frag') self.reset_normals = application.shader('reset_normals.frag') self.vbo = self.generate_vbo(width, height) self.reset() self.updated = None
def __init__(self, ref): self.temp = Texture( width=ref.width, height=ref.height, format=ref.format, filter=ref.filter, mipmap=ref.mipmap, ) self.width = ref.width self.height = ref.height self.fbo = Framebuffer(self.temp) self.view = Screen(0, 0, self.width, self.height) self.render_target = Framebuffer(self.temp) self.render_target.depth = Depthbuffer(self.width, self.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, window): self.window = window window.set_fullscreen(True) self.fps = ClockDisplay() self.mesh_width = 512 self.mesh_height = 512 self.width = 1024 self.height = 1024 self.shaders = {} self.framebuffer = Framebuffer() self.window.push_handlers(self) font_dir = here('style/fonts') for name in res_listdir(here('style/fonts')): font_path = os.path.join(font_dir, name) pyglet.font.add_file(res_open(font_path)) self.root = Root(self.window, here('style/style.hss')) self.file_open = FileOpen(self.root, pattern=r'.*\.lth$') self.file_open.on_file = self.open self.file_save = FileSave(self.root, pattern=r'.*\.lth$') self.file_save.on_file = self.save self.export_png_dialog = FileSave(self.root, pattern=r'.*\.png$') self.export_png_dialog.on_file = self.export_png self.work_area = Area(id='sidebar').append_to(self.root) self.workspace = Workspace().append_to(self.work_area) self.canvas = LineCanvas().append_to(self.workspace) self.processing_view = Screen(0, 0, self.width, self.height) self.terrain = Terrain(self) self.export_obj_dialog = FileSave(self.root, pattern=r'.*\.obj$') self.export_obj_dialog.on_file = self.terrain.export_obj self.export_heights_dialog = FileSave(self.root, pattern=r'.*\.farr$') self.export_heights_dialog.on_file = self.terrain.export_float_array self.viewport = View3d(self).append_to(self.root) self.toolbar = Toolbar(self) self.node_factory = NodeFactory(self) pyglet.clock.schedule_interval(self.update, 0.05) pyglet.clock.schedule(lambda delta: None) #DEBUG self.temp = self.create_texture() self.height_reset = self.shader('height_reset.frag') self.nodes = [] self.export_target = Texture(self.width, self.height, format=GL_RGB)
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 __future__ import with_statement import sys import re import random 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)
from __future__ import with_statement 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)
from __future__ import with_statement 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(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
from __future__ import with_statement from contextlib import nested import pyglet from gletools import ( ShaderProgram, VertexShader, FragmentShader, Texture, Framebuffer, Depthbuffer, Sampler2D, Projection, Screen, ) from gletools.gl import * window = pyglet.window.Window() framebuffer = Framebuffer() framebuffer.textures = [ Texture(window.width, window.height, filter=GL_LINEAR), Texture(window.width, window.height, filter=GL_LINEAR), Texture(window.width, window.height, filter=GL_LINEAR, unit=GL_TEXTURE1), ] framebuffer.depth = Depthbuffer(window.width, window.height) depth_shader = VertexShader(''' varying float depth; void main() { depth = -(gl_ModelViewMatrix * gl_Vertex).z; gl_Position = ftransform(); gl_FrontColor = gl_Color; } ''')
# -*- coding: utf-8 -*- from __future__ import with_statement import pyglet from gletools import ( Projection, Framebuffer, Texture, interval, quad, Group, Matrix, ) from gletools.gl import * window = pyglet.window.Window() projection = Projection(0, 0, window.width, window.height) fbo = Framebuffer( Texture(window.width, window.height, data = [100,100,100,255]*(window.width*window.height) ) ) @window.event def on_mouse_drag(x, y, rx, ry, button, modifier): if pyglet.window.mouse.LEFT == button: glColor4f(1,1,1,1) glLineWidth(3) with fbo: glBegin(GL_LINES) glVertex3f(x, y, 0) glVertex3f(x-rx, y-ry, 0) glEnd() rotation = 0.0 @interval(0.03)
from gletools import ( ShaderProgram, VertexShader, FragmentShader, Texture, Framebuffer, Depthbuffer, Sampler2D, Projection, Screen, ) from gletools.gl import * window = pyglet.window.Window() framebuffer = Framebuffer() framebuffer.textures = [ Texture(window.width, window.height, filter=GL_LINEAR), Texture(window.width, window.height, filter=GL_LINEAR), Texture(window.width, window.height, filter=GL_LINEAR, unit=GL_TEXTURE1), ] framebuffer.depth = Depthbuffer(window.width, window.height) picture = Texture.open('texture.png') depth_shader = VertexShader(''' varying float depth; void main() { depth = -(gl_ModelViewMatrix * gl_Vertex).z; gl_TexCoord[0] = gl_MultiTexCoord0;