Esempio n. 1
0
import numpy as np
from dent.configuration import config
import logging
import dent.MultiObject as MultiObject
import dent.Shaders as Shaders
import OpenGL.GL as gl

logging.info("Loading trees")

tree = MultiObject.MultiObject('assets/tree5/Conifers tree 1 N1006162.3DS', scale=15)

logging.info("Generating trees")

shaderObj = Shaders.TransformFeedbackShader('testTransform')
shaderObj.addProgram(gl.GL_VERTEX_SHADER, Shaders.ShaderFile('shaders/forestFeedback/vertex.shd', gl.GL_VERTEX_SHADER))
shaderObj.addProgram(gl.GL_GEOMETRY_SHADER, Shaders.ShaderFile('shaders/forestFeedback/geometry.shd',gl.GL_GEOMETRY_SHADER))
shaderObj.addOutput('outValue')
Shaders.setUniversalUniforms(shaderObj)

shaderObj.build()
shaderObj.load()

N = int(config.forest_tree_count ** 0.5)
shaderObj['scan'] = N
shaderObj['range'] = N * 12.
shaderObj['center'] = np.zeros(0, dtype=np.float32)
ips = np.zeros(N*N, dtype=[('id', np.int32, 1)])
ips['id'] = np.arange(N*N)

idd = shaderObj.setData(ips)
# On average one out of four trees is placed.
Esempio n. 2
0
import dent.Shaders as Shaders
import logging
import OpenGL.GL as gl
import numpy as np

transform_shader = Shaders.TransformFeedbackShader('rock_placement_feedback')
transform_shader.addProgram(gl.GL_VERTEX_SHADER, Shaders.ShaderFile('rock_placement', gl.GL_VERTEX_SHADER))
Shaders.shaders['rock_placement_feedback'] = transform_shader
transform_shader.addProgram(gl.GL_GEOMETRY_SHADER, Shaders.ShaderFile('rock_placement',gl.GL_GEOMETRY_SHADER))
transform_shader.addOutput('outValue')

transform_shader.build()
transform_shader.load()

input_sizes = []
render_ids = []
output_buffers = []

def initialise(buffer_sizes):
  for max_N in buffer_sizes:
    ids = np.zeros(max_N, dtype=[('id',np.int32,1)])
    ids['id'] = np.arange(max_N)

    render_id = transform_shader.setData(ids)
    output_buffer = transform_shader.getOutputBufferObject(render_id, max_N*16*4)

    input_sizes.append(max_N)
    render_ids.append(render_id)
    output_buffers.append(output_buffer)

def update(centre):