-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathshadertoy_to_harfang.lua
More file actions
80 lines (53 loc) · 3.72 KB
/
shadertoy_to_harfang.lua
File metadata and controls
80 lines (53 loc) · 3.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
hg = require("harfang")
hg.InputInit()
hg.WindowSystemInit()
res_x, res_y = 1280, 720
win = hg.NewWindow("Shadertoy to Harfang tutorial", res_x, res_y, 32)
hg.RenderInit(win, hg.RT_Direct3D12)
hg.RenderReset(res_x, res_y, hg.RF_MSAA4X | hg.RF_MaxAnisotropy)
quad_uniform_set_texture_list = hg.UniformSetTextureList()
hg.AddAssetsFolder('resources_compiled_dx')
vtx_layout = hg.VertexLayoutPosFloatTexCoord0UInt8()
plane_mdl = hg.CreatePlaneModel(vtx_layout, 1, 9/16, 1, 1)
plane_mdl_ui = hg.CreatePlaneModel(vtx_layout, 1, 1, 1, 1)
texture, texture_info = hg.LoadTextureFromAssets("textures/noise.png", hg.TF_WClamp)
shader_dvd = hg.LoadProgramFromAssets("shaders/dvdBounce")
shader_dancingCubes = hg.LoadProgramFromAssets("shaders/shadertoyCubesAreDancing")
shader_text = hg.LoadProgramFromAssets("shaders/texture")
font = hg.LoadFontFromAssets("font/default.ttf", 32)
font_program = hg.LoadProgramFromAssets("core/shader/font.vsb", "core/shader/font.fsb")
text_uniform_values = {hg.MakeUniformSetValue('u_color', hg.Vec4(1, 1, 0.5))}
text_render_state = hg.ComputeRenderState(hg.BM_Alpha, hg.DT_Always, hg.FC_Disabled)
view_id = 0
qr_flopine, qr_flopine_info = hg.LoadTextureFromAssets("pictures/Cubes_Are_Dancing.png", hg.TF_WClamp)
qr_tdhooper, qr_tdhooper_info = hg.LoadTextureFromAssets("pictures/DvdBounce.png", hg.TF_WClamp)
while not hg.ReadKeyboard():Key(hg.K_Escape) and hg.IsWindowOpen(win) do
dt = hg.TickClock()
view_id = 0
val_uniforms = { hg.MakeUniformSetValue("iTime", hg.Vec4(hg.time_to_sec_f(hg.GetClock()), 0.0, 0.0, 0.0)),
hg.MakeUniformSetValue("iResolution", hg.Vec4(res_x, res_y, 0.0, 0.0)),
hg.MakeUniformSetValue("iChannelResolution", hg.Vec4(texture_info.width, texture_info.height, 0.0, 0.0))
}
text_val_uniforms = { hg.MakeUniformSetValue("color", hg.Vec4(1.0, 1.0, 1.0, 1.0))}
viewpoint = hg.TranslationMat4(hg.Vec3(0, 0, -1))
hg.SetViewPerspective(0, 0, 0, res_x, res_y, viewpoint)
hg.DrawModel(view_id, plane_mdl, shader_dvd, val_uniforms, {hg.MakeUniformSetTexture("s_tex", texture, 0)},
hg.TransformationMat4(hg.Vec3(-0.5, 0.25, 0), hg.Vec3(-math.pi / 2, 0.0, 0.0)))
hg.DrawModel(view_id, plane_mdl, shader_dancingCubes, val_uniforms, {hg.MakeUniformSetTexture("s_tex", texture, 0)},
hg.TransformationMat4(hg.Vec3(0.5, 0.25, 0), hg.Vec3(-math.pi / 2, 0.0, 0.0)))
hg.DrawModel(view_id, plane_mdl_ui, shader_text, text_val_uniforms, {hg.MakeUniformSetTexture("s_tex", qr_tdhooper, 0)},
hg.TransformationMat4(hg.Vec3(-0.15, -0.15, 0), hg.Vec3(-math.pi / 2, 0.0, 0.0), hg.Vec3(0.15, 0.15, 0.15)))
hg.DrawModel(view_id, plane_mdl_ui, shader_text, text_val_uniforms, {hg.MakeUniformSetTexture("s_tex", qr_flopine, 0)},
hg.TransformationMat4(hg.Vec3(0.85, -0.15, 0), hg.Vec3(-math.pi / 2.0, 0.0, 0.0), hg.Vec3(0.15, 0.15, 0.15)))
view_id = view_id + 1
hg.SetView2D(view_id, 0, 0, res_x, res_y, -1, 1, hg.CF_Depth, hg.Color.Black, 1, 0)
hg.DrawText(view_id, font, 'Flopine - Cubes are dancing', font_program, 'u_tex', 0, hg.Mat4.Identity,
hg.Vec3(750, res_y - 280, 0), hg.DTHA_Left, hg.DTVA_Bottom, text_uniform_values, {}, text_render_state)
hg.DrawText(view_id, font, 'tdhooper - DVD Bounce', font_program, 'u_tex', 0, hg.Mat4.Identity,
hg.Vec3(140, res_y - 280, 0), hg.DTHA_Left, hg.DTVA_Bottom, text_uniform_values, {}, text_render_state)
hg.DrawText(view_id, font, 'SHADERTOY TO HARFANG PORTING', font_program, 'u_tex', 0, hg.Mat4.Identity,
hg.Vec3((res_y / 2) + 50, res_y - 120, 0), hg.DTHA_Left, hg.DTVA_Bottom, text_uniform_values, {}, text_render_state)
hg.Frame()
hg.UpdateWindow(win)
end
hg.RenderShutdown()