diff options
Diffstat (limited to 'Data')
-rw-r--r-- | Data/BuiltIn/Libraries/GameLab/BuiltInResources.lua | 3 | ||||
-rw-r--r-- | Data/BuiltIn/Libraries/GameLab/Engine/GUI/IMGUI.lua | 75 | ||||
-rw-r--r-- | Data/BuiltIn/Libraries/GameLab/Engine/Rendering/init.lua | 1 | ||||
-rw-r--r-- | Data/BuiltIn/Resources/Shaders/Editor-Shape.glsl | 34 | ||||
-rw-r--r-- | Data/BuiltIn/Resources/Shaders/Editor-Text.glsl | 46 | ||||
-rw-r--r-- | Data/BuiltIn/Resources/Shaders/Editor-UI.glsl | 45 | ||||
-rw-r--r-- | Data/Libraries/GameLab/Editor/Window/GUIWindow.lua | 14 | ||||
-rw-r--r-- | Data/Resources/Shaders/Editor-Shape.glsl | 16 | ||||
-rw-r--r-- | Data/Scripts/EditorResources.lua | 20 |
9 files changed, 72 insertions, 182 deletions
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 diff --git a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua index b5d7436..9290b1e 100644 --- a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua +++ b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua @@ -14,6 +14,7 @@ local Event = Events.Event local EEventType = Events.EEventType
local Vector2 = Math.Vector2
local Color = Rendering.Color
+local Matrix44 = Math.Matrix44
local clone = Utils.Clone
@@ -113,7 +114,18 @@ GUIWindow.OnGUI = function(self) end
self:ClearBackground()
- GUI.Box(Rect(), Color(), self.position.size)
+
+ local windowSize = self.position.size
+
+ local ortho = Matrix44()
+ ortho:SetOrtho(0, windowSize.x, windowSize.y, 0, 0.1, 10)
+ Rendering.SetMatrix44("gamelab_mat_mvp", ortho)
+
+ --
+ local guiSize = Vector2(windowSize.x - kSideBorders*2, windowSize.y - kSideBorders*2)
+ local bgRect = Rect(kSideBorders, kSideBorders, guiSize.x, guiSize.y)
+ GUI.Box(bgRect, Color(0.22, 0.22, 0.22, 1))
+ GUI.BoxFrame(bgRect, Color(0.13, 0.13, 0.13, 1))
end
diff --git a/Data/Resources/Shaders/Editor-Shape.glsl b/Data/Resources/Shaders/Editor-Shape.glsl index 235390c..e371f95 100644 --- a/Data/Resources/Shaders/Editor-Shape.glsl +++ b/Data/Resources/Shaders/Editor-Shape.glsl @@ -1,5 +1,5 @@ #version 330 core -//绘制几何图形 +//绘制纯色几何图形:点、线段、三角形 CMD_BEGIN Cull Off @@ -10,22 +10,16 @@ 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; -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 @@ -37,10 +31,6 @@ 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; - //sampled = vec4(1,1,1,1); - FragColor = sampled; + FragColor = gamelab_color; } FSH_END diff --git a/Data/Scripts/EditorResources.lua b/Data/Scripts/EditorResources.lua index c9d2e77..bcefec4 100644 --- a/Data/Scripts/EditorResources.lua +++ b/Data/Scripts/EditorResources.lua @@ -1,9 +1,27 @@ +-- 编辑器用到的资源
local find = GameLab.Find
+local Shader = find "GameLab.Engine.Rendering.Shader"
+local Texture = find "GameLab.Engine.Rendering.Texture"
+local Rendering = find "GameLab.Engine.Rendering"
+
+local SHADER = function(path)
+ local file = 'Resources/Shaders/' .. path
+ return Rendering.CreateShaderFromFile(file)
+end
+
+local TEXTURE = function(path)
+ -- local file = define.builtInPath .. '/Resources/Images/' .. path
+ -- return Rendering.CreateShaderFromFile(file)
+end
local res = {}
local loadRes = function()
-
+ res.shaders = {
+ ["EditorShape"] = SHADER "Editor-Shape.glsl",
+ ["EditorText"] = SHADER "Editor-Text.glsl",
+ ["EditorUI"] = SHADER "Editor-UI.glsl",
+ }
end
GameLab.onApplicationStart:Add(loadRes)
|