Пример #1
0
    def __init__(self, plus):
        renderer = plus.GetRenderer()

        # create primitive index buffer
        data = hg.BinaryData()
        data.WriteInt16s([0, 1, 2, 0, 2, 3])

        self.indices = renderer.NewBuffer()
        renderer.CreateBuffer(self.indices, data, hg.GpuBufferIndex)

        # create primitive vertex buffer
        self.vertex_layout = hg.VertexLayout()
        self.vertex_layout.AddAttribute(hg.VertexPosition, 3, hg.VertexFloat)
        self.vertex_layout.AddAttribute(
            hg.VertexUV0, 2, hg.VertexUByte, True
        )  # UVs are sent as normalized 8 bit unsigned integer (range [0;255])

        data = hg.BinaryData()
        x, y = 1, 1
        data.WriteFloats([-x, -y, 0])
        data.WriteUInt8s([0, 0])

        data.WriteFloats([-x, y, 0])
        data.WriteUInt8s([0, 255])

        data.WriteFloats([x, y, 0])
        data.WriteUInt8s([255, 255])

        data.WriteFloats([x, -y, 0])
        data.WriteUInt8s([255, 0])

        self.vertex = renderer.NewBuffer()
        renderer.CreateBuffer(self.vertex, data, hg.GpuBufferVertex)
Пример #2
0
def setup():
    global uvdens_tex, uvdens_render_target, uvdens_tex_prev, uvdens_render_target_prev
    global idx, vtx, vtx_layout
    global shader, shader_set_inputs, shader_add_sources, shader_draw_uvdens, shader_lin_solve, shader_advect, shader_projectA, shader_projectB

    renderer = plus.GetRenderer()

    # create the 2 render target
    def create_tex_and_render_target():
        tex = renderer.NewTexture()
        pic = hg.Picture(size, size, hg.PictureRGBAF)
        renderer.CreateTexture(
            tex, pic, hg.TextureIsRenderTarget | hg.TextureIsShaderResource)

        render_target = renderer.NewRenderTarget()
        renderer.CreateRenderTarget(render_target)
        renderer.SetRenderTargetColorTexture(render_target, tex)

        return tex, render_target

    uvdens_tex, uvdens_render_target = create_tex_and_render_target()
    uvdens_tex_prev, uvdens_render_target_prev = create_tex_and_render_target()

    # Create index buffer
    data = hg.BinaryData()
    data.WriteInt16s([0, 1, 2, 0, 2, 3])
    idx = renderer.NewBuffer()
    renderer.CreateBuffer(idx, data, hg.GpuBufferIndex)

    # Create vertex buffer
    vtx_layout = hg.VertexLayout()
    vtx_layout.AddAttribute(hg.VertexPosition, 3, hg.VertexFloat)
    vtx_layout.AddAttribute(hg.VertexUV0, 2, hg.VertexUByte)

    data = hg.BinaryData()
    x, y = 1, 1
    data.WriteFloats([-x, -y, 0.5])
    data.WriteUInt8s([0, 0])
    data.WriteFloats([-x, y, 0.5])
    data.WriteUInt8s([0, 1])
    data.WriteFloats([x, y, 0.5])
    data.WriteUInt8s([1, 1])
    data.WriteFloats([x, -y, 0.5])
    data.WriteUInt8s([1, 0])

    vtx = renderer.NewBuffer()
    renderer.CreateBuffer(vtx, data, hg.GpuBufferVertex)

    # Load shader.
    shader = renderer.LoadShader("@assets/vel.isl")
    shader_set_inputs = renderer.LoadShader("@assets/set_inputs.isl")
    shader_add_sources = renderer.LoadShader("@assets/add_source.isl")
    shader_draw_uvdens = renderer.LoadShader("@assets/draw_uvdens.isl")
    shader_lin_solve = renderer.LoadShader("@assets/lin_solve.isl")
    shader_advect = renderer.LoadShader("@assets/advect.isl")
    shader_projectA = renderer.LoadShader("@assets/projectA.isl")
    shader_projectB = renderer.LoadShader("@assets/projectB.isl")
Пример #3
0
surface = renderer.NewOutputSurface(win)
renderer.SetOutputSurface(surface)

#  load 2d shader and retrieve variables
shader_color = renderer.LoadShader("_data/shader_2d_color.isl")
shader_texture = renderer.LoadShader("_data/shader_2d_single_texture.isl")

# create primitive index buffer
data = hg.BinaryData()
data.WriteUInt16s([0, 1, 2])

idx = renderer.NewBuffer()
renderer.CreateBuffer(idx, data, hg.GpuBufferIndex)

# create primitive vertex buffer
vtx_layout = hg.VertexLayout()
vtx_layout.AddAttribute(hg.VertexPosition, 3, hg.VertexFloat)
vtx_layout.AddAttribute(
    hg.VertexUV0, 2, hg.VertexUByte,
    True)  # UVs are sent as normalized 8 bit unsigned integer (range [0;255])

data = hg.BinaryData()

x, y = 0.5, 0.5
data.WriteFloats([-x, -y, 0.5])
data.WriteUInt8s([127, 0])

data.WriteFloats([-x, y, 0.5])
data.WriteUInt8s([0, 127])

data.WriteFloats([x, y, 0.5])