コード例 #1
0
    def __init__(self, width, height):
        super().__init__(width, height)

        self.environment_image = assets.imread(
            'hdri/Tropical_Beach_3k.hdr').astype(np.float32)
        self.environment_image = assets.to_linear(self.environment_image)

        # init passes
        self.geometry_pass = GeometryPass(self.width, self.height)
        self.environment_pass = EnvironmentPass(512, 512)
        self.irradiance_pass = IrradiancePass(32, 32)
        self.prefilter_pass = PrefilterPass(128, 128)
        self.brdf_pass = BRDFPass(512, 512)
        self.lighting_pass = PBRLightingPass(self.width, self.height)
        self.tonemapping_pass = TonemappingPass(self.width, self.height)
        self.clamp_pass = ClampPass(self.width, self.height)
        self.gaussianblur_pass = GaussianblurPass(self.width, self.height)
        self.add_pass = AddPass(self.width, self.height)

        self.skybox_pass = SkyboxPass(self.width, self.height)

        self.environment_texture = None
        self.environment_cubemap = None
        self.irradiance_cubemap = None
        self.prefilter_cubemap = None
        self.brdf_texture = None
コード例 #2
0
    def __init__(self):
        self.width = 1024
        self.height = 768
        self.window = GLFWViewer(self.width, self.height, (0.2, 0.2, 0.2, 1.0))

        self.matcap_img = assets.imread("matcap/jeepster_skinmat2.jpg").astype(
            np.float32) / 255
        # self.matcap_img = assets.imread("container2_axis.png").astype(np.float32)[...,[0,1,2]]/255
        self.matcap_img = np.flip(self.matcap_img, 0)
コード例 #3
0
    def __init__(self, scene):
        # window
        self.width = 1024
        self.height = 768
        self.window = GLFWViewer(self.width, self.height, (0.2, 0.2, 0.2, 1.0))
        self.camera = PerspectiveCamera(glm.inverse(self.window.view_matrix),
                                        glm.radians(60),
                                        self.width / self.height, 1, 30)
        self.scene = scene

        # assets
        self.environment_image = assets.imread('hdri/Tropical_Beach_3k.hdr')
        self.environment_image = assets.to_linear(self.environment_image)

        # render passes
        self.environment_pass = EnvironmentPass(512, 512)
        self.irradiance_pass = IrradiancePass(32, 32)
        self.prefilter_pass = PrefilterPass()
        self.brdf_pass = BRDFPass(512, 512)
        self.tonemapping_pass = TonemappingPass(self.width, self.height)

        self.geometry_pass = GeometryPass(self.width, self.height,
                                          self.draw_scene_for_geometry)
        dirlight.shadowpass = DepthPass(1024, 1024, GL_FRONT,
                                        self.draw_scene_for_shadows)
        spotlight.shadowpass = DepthPass(1024, 1024, GL_FRONT,
                                         self.draw_scene_for_shadows)
        pointlight.shadowpass = CubeDepthPass(
            512,
            512,
            GL_FRONT,
            near=1,
            far=15,
            draw_scene=self.draw_scene_for_shadows)

        self.lighting_pass = LightingPass(
            self.width, self.height, lights=[dirlight, spotlight, pointlight])
コード例 #4
0
                imdraw.quad(self.program)
                if first_iteration:
                    first_iteration = False

        glBindFramebuffer(GL_FRAMEBUFFER, 0)

        return self.bloom_blur_texs[1]


if __name__ == "__main__":
    from editor.render.graphics.examples.viewer import Viewer
    from editor.render import assets
    import glm
    import numpy as np
    # load assets
    img = (assets.imread("container2.png")[..., :3] / 255).astype(np.float32)
    h, w, c = img.shape
    # create viewer
    viewer = Viewer(1024, 512, "GaussianBlur example")
    blurpass = GaussianblurPass(viewer.width, viewer.height)

    @viewer.event
    def on_setup():
        global tex
        tex = glGenTextures(1)
        glBindTexture(GL_TEXTURE_2D, tex)
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB32F, w, h, 0, GL_RGB, GL_FLOAT,
                     img)
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
        glGenerateMipmap(GL_TEXTURE_2D)
コード例 #5
0
                          color=glm.vec3(0.04, 0.6, 1.0),
                          intensity=150.0,
                          fov=60,
                          near=1,
                          far=15)
    scene.add_child(spotlight)

    pointlight = PointLight(position=glm.vec3(2.5, 1.3, 2.5),
                            color=glm.vec3(1, 0.7, 0.1),
                            intensity=50.0,
                            near=0.1,
                            far=10)
    scene.add_child(pointlight)

    environment_image = assets.to_linear(
        assets.imread("hdri/Tropical_Beach_3k.hdr"))

    # Create Viewer
    viewer = Viewer(title="Simple PBR with Shadows Example")

    # Create render pipeline
    geometry_pass = GeometryPass(viewer.width, viewer.height)
    environment_pass = EnvironmentPass(512, 512)
    irradiance_pass = IrradiancePass(32, 32)
    prefilter_pass = PrefilterPass(128, 128)
    brdf_pass = BRDFPass(512, 512)
    lighting_pass = PBRLightingPass(viewer.width, viewer.height)
    skybox_pass = SkyboxPass(viewer.width, viewer.height)
    tonemapping_pass = TonemappingPass(viewer.width, viewer.height)
    clamp_pass = ClampPass(viewer.width, viewer.height)
    gaussianblur_pass = GaussianblurPass(viewer.width, viewer.height)
コード例 #6
0
        return self.texture


if __name__ == "__main__":
    from editor.render.graphics.passes import GeometryPass
    from editor.render.graphics.passes import EnvironmentPass
    from editor.render.graphics.passes import IrradiancePass, PrefilterPass, BRDFPass
    import glm
    from editor.render.graphics import Scene, Mesh, Geometry, Material

    from editor.render.graphics.examples.viewer import Viewer

    viewer = Viewer()

    # assets
    environment_image = assets.imread('hdri/Tropical_Beach_3k.hdr').astype(
        np.float32)

    # scene
    scene = Scene()
    scene.add_child(
        Mesh(transform=glm.translate(glm.mat4(1), (0.0, 0.5, 0.0)),
             geometry=Geometry(*imdraw.geo.sphere()),
             material=Material(albedo=glm.vec3(0.5),
                               emission=(0, 0, 0),
                               roughness=glm.pow(0.5, 2),
                               metallic=0.0)))
    scene.add_child(Mesh(geometry=Geometry(*imdraw.geo.plane())))

    dirlight = DirectionalLight(direction=glm.vec3(1, -6, -2),
                                color=glm.vec3(1.0),
                                intensity=1.0,
コード例 #7
0
            glActiveTexture(GL_TEXTURE0 + 1)
            glBindTexture(GL_TEXTURE_2D, inputB)

            puregl.program.set_uniform(prog, 'inputA', 0)
            puregl.program.set_uniform(prog, 'inputB', 1)

            imdraw.quad(prog)

        return self.output_texture


if __name__ == "__main__":
    import numpy as np
    from editor.render import assets
    from editor.render.graphics.examples.viewer import Viewer
    imgA = assets.imread("peppers.png").astype(np.float32)[..., :3] / 255
    imgB = assets.imread("Sailboat on lake.png").astype(
        np.float32)[..., :3] / 255

    addpass = AddPass(512, 512)

    viewer = Viewer()

    @viewer.event
    def on_setup():
        global texA
        texA = glGenTextures(1)
        glBindTexture(GL_TEXTURE_2D, texA)
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB32F, imgA.shape[1], imgA.shape[0],
                     0, GL_RGB, GL_FLOAT, imgA)
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
コード例 #8
0
			glActiveTexture(GL_TEXTURE0+0)
			glBindTexture(GL_TEXTURE_2D, input_texture)

			puregl.program.set_uniform(prog, 'screenTexture', 0)
			puregl.program.set_uniform(prog, 'minimum', float(minimum))
			puregl.program.set_uniform(prog, 'maximum', float(maximum))

			imdraw.quad(prog)

		return self.output_texture

if __name__ == "__main__":
	import numpy as np
	from editor.render import assets
	from editor.render.graphics.examples.viewer import Viewer
	imgA = assets.imread("peppers.png").astype(np.float32)[...,:3]/255

	clamppass = ClampPass(512, 512)

	viewer = Viewer()
	@viewer.event
	def on_setup():
		global texA
		texA = glGenTextures(1)
		glBindTexture(GL_TEXTURE_2D, texA)
		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB32F, imgA.shape[1], imgA.shape[0], 0, GL_RGB, GL_FLOAT, imgA)
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
		glBindTexture(GL_TEXTURE_2D, 0)

	@viewer.event
コード例 #9
0
#
# read assets
#
assets_folder = "../assets"


def to_srgb(img, gamma=2.2):
    return np.power(img, (1 / gamma, 1 / gamma, 1 / gamma))


def to_linear(img, gamma=2.2):
    return np.power(img, (gamma, gamma, gamma))


# textures
diffuse_data = assets.imread('container2_axis.png')[..., [2, 1, 0]] / 255
specular_data = assets.imread('container2_specular.png')[..., [2, 1, 0]] / 255
diffuse_data = to_linear(diffuse_data)
specular_data = to_linear(specular_data)

# environment
environment_data = assets.imread('hdri/fin4_Ref.hdr')
environment_data *= 1

with window:
    glEnable(GL_PROGRAM_POINT_SIZE)
    glEnable(GL_DEPTH_TEST)
    glEnable(GL_CULL_FACE)

    # Create shading programs
    # =======================
コード例 #10
0
    # attach cubemap to fbo depth attachment
    with fbo.bind(pointlight_shadowfbo):
        glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
                             pointlight_shadowcube, 0)
        glDrawBuffer(GL_NONE)
        glReadBuffer(GL_NONE)
        assert glCheckFramebufferStatus(
            GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE

    # create shader
    point_shadow_program = program.create(*glsl.read("point_shadow"))

    # Environment pass
    # ----------------
    ## Create environment texture
    environment_data = assets.imread('hdri/Tropical_Beach_3k.hdr')
    environment_data = assets.to_linear(environment_data)

    env_height, env_width, env_channels = environment_data.shape
    environment_tex = glGenTextures(1)
    glBindTexture(GL_TEXTURE_2D, environment_tex)
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB32F, env_width, env_height, 0, GL_RGB,
                 GL_FLOAT, environment_data)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)

    ## Capture environment map to cubemap
    # create cubemap texture
    env_cubemap = glGenTextures(1)
コード例 #11
0
            puregl.program.set_uniform(prog, 'screenTexture', 0)
            puregl.program.set_uniform(prog, 'bloomBlur', 1)
            puregl.program.set_uniform(prog, 'exposure', exposure)
            puregl.program.set_uniform(prog, 'gamma', gamma)

            imdraw.quad(prog)

        return self.texture

if __name__ == "__main__":
    from editor.render.graphics.examples.viewer import Viewer
    from editor.render import assets, imdraw
    viewer = Viewer(1024, 512)

    img = assets.imread("house.png")[...,:3]/255
    h,w,c = img.shape
    tonepass = TonemappingPass(w, h)

    @viewer.event
    def on_setup():
        global tex
        
        tex = glGenTextures(1)
        glBindTexture(GL_TEXTURE_2D, tex)
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB32F, h, w, 0, GL_RGB, GL_FLOAT, img)
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
        glBindTexture(GL_TEXTURE_2D, 0)

    @viewer.event
コード例 #12
0
 def __init__(self, width, height):
     super().__init__(width, height, True, GL_BACK)
     self.geometry_pass = GeometryPass(self.width, self.height)
     self.matcap_pass =   MatcapLightingPass(self.width, self.height)
     self.matcap_image = assets.imread("matcap/jeepster_skinmat2.jpg").astype(np.float32)[..., :3]/255
     self.matcap_texture = None