From bb452bba78dc1870d6316b383180472fe3a8a06a Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 20 Nov 2021 17:32:55 +0800 Subject: *gui --- .../BuiltIn/Libraries/GameLab/BuiltInResources.lua | 3 - .../BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua | 75 +++++++++++----------- .../Libraries/GameLab/Engine/Rendering/init.lua | 1 + Data/BuiltIn/Resources/Shaders/Editor-Shape.glsl | 34 ---------- Data/BuiltIn/Resources/Shaders/Editor-Text.glsl | 46 ------------- Data/BuiltIn/Resources/Shaders/Editor-UI.glsl | 45 ------------- 6 files changed, 37 insertions(+), 167 deletions(-) delete mode 100644 Data/BuiltIn/Resources/Shaders/Editor-Shape.glsl delete mode 100644 Data/BuiltIn/Resources/Shaders/Editor-Text.glsl delete mode 100644 Data/BuiltIn/Resources/Shaders/Editor-UI.glsl (limited to 'Data/BuiltIn') diff --git a/Data/BuiltIn/Libraries/GameLab/BuiltInResources.lua b/Data/BuiltIn/Libraries/GameLab/BuiltInResources.lua index 03da57e..26cbbb3 100644 --- a/Data/BuiltIn/Libraries/GameLab/BuiltInResources.lua +++ b/Data/BuiltIn/Libraries/GameLab/BuiltInResources.lua @@ -18,9 +18,6 @@ local res = {} local loadRes = function() res.shaders = { - ["EditorShape"] = SHADER "Editor-Shape.glsl", - ["EditorText"] = SHADER "Editor-Text.glsl", - ["EditorUI"] = SHADER "Editor-UI.glsl", } res.textures = { diff --git a/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua b/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua index 084cc81..3c99622 100644 --- a/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua +++ b/Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua @@ -2,26 +2,26 @@ local GUI = GameLab.Package("GameLab.Engine.GUI") local find = GameLab.Find -local Res = require "GameLab.BuiltInResources" local EditorGUI = GameLab.Editor.GUI -local Debug = GameLab.Debug -local GUIState = GUI.GUIState -local Event = GameLab.Events.Event -local shaders = Res.shaders -local GL = GameLab.Engine.GL -local Matrix44 = find "GameLab.Engine.Math.Matrix44" -local Rendering = GameLab.Engine.Rendering -local EEventType = GameLab.Events.EEventType -local Resource = GameLab.Engine.Resource -local Vector2 = GameLab.Engine.Math.Vector2 -local Vector4 = GameLab.Engine.Math.Vector4 -local Color = Rendering.Color - -local EditorRes +local Debug = GameLab.Debug +local GUIState = GUI.GUIState +local Event = GameLab.Events.Event +local GL = GameLab.Engine.GL +local Matrix44 = find "GameLab.Engine.Math.Matrix44" +local Rendering = GameLab.Engine.Rendering +local EEventType = GameLab.Events.EEventType +local Resource = GameLab.Engine.Resource +local Vector2 = GameLab.Engine.Math.Vector2 +local Vector4 = GameLab.Engine.Math.Vector4 +local Color = Rendering.Color +local builtin_res = require "GameLab.BuiltInResources" + +local editor_res if GAMELAB_EDITOR then - EditorRes = find "Scripts/EditorResources" -end + editor_res = find "Scripts/EditorResources" +elseif GAMELAB_RUNNER then +end GUI.BeginOnGUI = function() GUIState.ResetControlID() @@ -52,29 +52,27 @@ GUI.Toggle = function() end GUI.Label = function() - + end -GUI.Box = function(position, color, size) +GUI.Box = function(rect, color) if Event.current.type == EEventType.Repaint then - -- GL.ClearColor({0.13, 0.13, 0.13, 1}) - -- GL.Clear(GL.EBufferType.ColorBuffer) - --Rendering.UseShader(Res.shaders["EditorShape"]) - local ortho = Matrix44() - ortho:SetOrtho(0, size.x, size.y, 0, 0.1, 10) - - Rendering.UseShader(Res.shaders["EditorShape"]) - Rendering.SetMatrix44("gamelab_mat_mvp", ortho) - Rendering.SetVector2("gamelab_ui_position", {0, 0}) - Rendering.SetVector4("gamelab_color", Vector4(0.12, 0.12, 0.12, 1)) - --Rendering.SetTexture("gamelab_main_tex", tex) - --Rendering.DrawUIQuad({0, 0, 200, 200}) - --Rendering.DrawUI9Slicing(1, {25, 25}, {25, 25}, {80, 80}, {400, 30} ) - --GUI.DrawText(_G["default_font"], "你好世界!\nMaterials\nHello,World!\nProject Window Properties", 12) - GUI.Line(Vector2(0, 0), Vector2(100, 100)) + Rendering.UseShader(editor_res.shaders["EditorShape"]) + Rendering.SetVector2("gamelab_ui_position", rect.position) + Rendering.SetColor("gamelab_color", color) + GUI.DrawQuad(Vector2(0,0), rect.size) end end +GUI.BoxFrame = function(rect, color) + if Event.current.type == EEventType.Repaint then + GUI.Line(Vector2(rect.x, rect.y), Vector2(rect.x + rect.w, rect.y), color) + GUI.Line(Vector2(rect.x + rect.w, rect.y), Vector2(rect.x + rect.w, rect.y + rect.h), color) + GUI.Line(Vector2(rect.x + rect.w, rect.y + rect.h), Vector2(rect.x, rect.y + rect.h), color) + GUI.Line(Vector2(rect.x, rect.y + rect.h), Vector2(rect.x, rect.y), color) + end +end + GUI.HorizontalSlider = function() end @@ -103,15 +101,14 @@ GUI.HorizontalScrollbar = function() end -GUI.Line = function(from, to) +GUI.Line = function(from, to, color) if Event.current.type ~= EEventType.Repaint then return end + Rendering.UseShader(editor_res.shaders["EditorShape"]) + Rendering.SetVector2("gamelab_ui_position", {0, 0}) + Rendering.SetColor("gamelab_color", color) GUI.DrawLine(from, to) end -GUI.BoxFrame = function(topleft, size) - -end - return GUI \ No newline at end of file diff --git a/Data/BuiltIn/Libraries/GameLab/Engine/Rendering/init.lua b/Data/BuiltIn/Libraries/GameLab/Engine/Rendering/init.lua index daa8bda..ed23b8c 100644 --- a/Data/BuiltIn/Libraries/GameLab/Engine/Rendering/init.lua +++ b/Data/BuiltIn/Libraries/GameLab/Engine/Rendering/init.lua @@ -17,6 +17,7 @@ m.SetVector2 = Shader.SetVector2 m.SetVector3 = Shader.SetVector3 m.SetVector4 = Shader.SetVector4 m.SetTexture = Shader.SetTexture +m.SetColor = Shader.SetColor m.UseShader = Shader.Use m.UnuseShader = Shader.Unuse diff --git a/Data/BuiltIn/Resources/Shaders/Editor-Shape.glsl b/Data/BuiltIn/Resources/Shaders/Editor-Shape.glsl deleted file mode 100644 index 5ce755f..0000000 --- a/Data/BuiltIn/Resources/Shaders/Editor-Shape.glsl +++ /dev/null @@ -1,34 +0,0 @@ -#version 330 core -//绘制纯色的几何图形 - -CMD_BEGIN -Cull Off -Blend SrcAlpha OneMinusSrcAlpha -DepthTest Off -CMD_END - -uniform mat4 gamelab_mat_mvp; -uniform sampler2D gamelab_main_tex; -uniform vec2 gamelab_ui_position; -uniform vec4 gamelab_color; - -VSH_BEGIN -layout (location = 0) in vec2 vPos; - -void main() -{ - vec2 pos = vPos + gamelab_ui_position; - vec4 clipPos = gamelab_mat_mvp * vec4(pos, -1, 1.0); - gl_Position = clipPos; -} -VSH_END - -FSH_BEGIN - -out vec4 FragColor; - -void main() -{ - FragColor = gamelab_color; -} -FSH_END diff --git a/Data/BuiltIn/Resources/Shaders/Editor-Text.glsl b/Data/BuiltIn/Resources/Shaders/Editor-Text.glsl deleted file mode 100644 index d1003c3..0000000 --- a/Data/BuiltIn/Resources/Shaders/Editor-Text.glsl +++ /dev/null @@ -1,46 +0,0 @@ -#version 330 core - -CMD_BEGIN -Cull Off -Blend SrcAlpha OneMinusSrcAlpha -DepthTest Off -CMD_END - -uniform mat4 gamelab_mat_mvp; -uniform sampler2D gamelab_main_tex; -uniform vec2 gamelab_ui_position; - -VSH_BEGIN -layout (location = 0) in vec2 vPos; -layout (location = 1) in vec2 vUV; -layout (location = 2) in vec4 vColor; - -out vec2 uv; -out vec4 color; - -void main() -{ - vec2 pos = vPos + gamelab_ui_position; - vec4 clip = gamelab_mat_mvp * vec4(pos, -1, 1.0); - gl_Position = clip; - uv = vUV; - color = vColor; -} -VSH_END - -FSH_BEGIN -in vec2 uv; -in vec4 color; - -out vec4 FragColor; - -void main() -{ - //vec2 uv = vec2(uv.x, 1 - uv.y); - vec4 sampled = vec4(0.8,0.8,0.8,texture(gamelab_main_tex, uv).r); - sampled *= color; - // if(sampled.a == 0) - // sampled = vec4(1,0,0,1); - FragColor = sampled; -} -FSH_END diff --git a/Data/BuiltIn/Resources/Shaders/Editor-UI.glsl b/Data/BuiltIn/Resources/Shaders/Editor-UI.glsl deleted file mode 100644 index b2b348b..0000000 --- a/Data/BuiltIn/Resources/Shaders/Editor-UI.glsl +++ /dev/null @@ -1,45 +0,0 @@ -#version 330 core - -CMD_BEGIN -Cull Off -Blend SrcAlpha OneMinusSrcAlpha -DepthTest Off -CMD_END - -uniform mat4 gamelab_mat_mvp; -uniform sampler2D gamelab_main_tex; -uniform vec2 gamelab_ui_position; - -VSH_BEGIN -layout (location = 0) in vec2 vPos; -layout (location = 1) in vec2 vUV; -layout (location = 2) in vec4 vColor; - -out vec2 uv; -out vec4 color; - -void main() -{ - vec2 pos = vPos + gamelab_ui_position; - vec4 clip = gamelab_mat_mvp * vec4(pos, -1, 1.0); - gl_Position = clip; - uv = vUV; - color = vColor; -} -VSH_END - -FSH_BEGIN -in vec2 uv; -in vec4 color; - -out vec4 FragColor; - -void main() -{ - //vec2 uv = vec2(uv.x, 1 - uv.y); - vec4 sampled = texture(gamelab_main_tex, uv); - // sampled *= color; - //sampled = vec4(1,1,1,1); - FragColor = sampled; -} -FSH_END -- cgit v1.1-26-g67d0