summaryrefslogtreecommitdiff
path: root/Resources/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'Resources/Scripts')
-rw-r--r--Resources/Scripts/Editor/AssetBrowser.lua7
-rw-r--r--Resources/Scripts/EditorApplication.lua90
2 files changed, 95 insertions, 2 deletions
diff --git a/Resources/Scripts/Editor/AssetBrowser.lua b/Resources/Scripts/Editor/AssetBrowser.lua
index 07cead4..ee6de6a 100644
--- a/Resources/Scripts/Editor/AssetBrowser.lua
+++ b/Resources/Scripts/Editor/AssetBrowser.lua
@@ -3,14 +3,17 @@ local AssetBrowser = GameLab.Editor.GUI.EditorWindow.Extend("AssetBrowser", "Gam
AssetBrowser.Ctor = function(self)
self.base.Ctor(self, "AssetBrowser")
+
end
AssetBrowser.OnGUI = function(self)
- Debug.Log("AssetBrowser.OnGUI()" .. self.title)
+
+
end
AssetBrowser.OnFocus = function(self)
- Debug.Log("AssetBrowser.OnFocus()" .. self.title)
+
+
end
return AssetBrowser \ No newline at end of file
diff --git a/Resources/Scripts/EditorApplication.lua b/Resources/Scripts/EditorApplication.lua
index 8a175db..92bc5b9 100644
--- a/Resources/Scripts/EditorApplication.lua
+++ b/Resources/Scripts/EditorApplication.lua
@@ -39,6 +39,96 @@ local V4 = GameLab.Engine.Math.Vector4.Extend("V4", "GameLab.Engine.Math")
Debug.Log(EditorWindowManager.name)
+local vert = [[
+ #version 330 core
+ layout (location = 0) in vec3 aPos;
+ layout (location = 1) in vec3 aNormal;
+ layout (location = 2) in vec2 aTexCoords;
+ layout (location = 3) in vec3 aTangent;
+ layout (location = 4) in vec3 aBitangent;
+
+ out VS_OUT {
+ vec3 FragPos;
+ vec2 TexCoords;
+ vec3 TangentLightPos;
+ vec3 TangentViewPos;
+ vec3 TangentFragPos;
+ } vs_out;
+
+ uniform mat4 projection;
+ uniform mat4 view;
+ uniform mat4 model;
+
+ uniform vec3 lightPos;
+ uniform vec3 viewPos;
+
+ void main()
+ {
+ vs_out.FragPos = vec3(model * vec4(aPos, 1.0));
+ vs_out.TexCoords = aTexCoords;
+
+ mat3 normalMatrix = transpose(inverse(mat3(model)));
+ vec3 T = normalize(normalMatrix * aTangent);
+ vec3 N = normalize(normalMatrix * aNormal);
+ T = normalize(T - dot(T, N) * N);
+ vec3 B = cross(N, T);
+
+ mat3 TBN = transpose(mat3(T, B, N));
+ vs_out.TangentLightPos = TBN * lightPos;
+ vs_out.TangentViewPos = TBN * viewPos;
+ vs_out.TangentFragPos = TBN * vs_out.FragPos;
+
+ gl_Position = projection * view * model * vec4(aPos, 1.0);
+ }
+]]
+
+local frag = [[
+ #version 330 core
+ out vec4 FragColor;
+
+ in VS_OUT {
+ vec3 FragPos;
+ vec2 TexCoords;
+ vec3 TangentLightPos;
+ vec3 TangentViewPos;
+ vec3 TangentFragPos;
+ } fs_in;
+
+ uniform sampler2D diffuseMap;
+ uniform sampler2D normalMap;
+
+ uniform vec3 lightPos;
+ uniform vec3 viewPos;
+
+ void main()
+ {
+ // obtain normal from normal map in range [0,1]
+ vec3 normal = texture(normalMap, fs_in.TexCoords).rgb;
+ // transform normal vector to range [-1,1]
+ normal = normalize(normal * 2.0 - 1.0); // this normal is in tangent space
+
+ // get diffuse color
+ vec3 color = texture(diffuseMap, fs_in.TexCoords).rgb;
+ // ambient
+ vec3 ambient = 0.1 * color;
+ // diffuse
+ vec3 lightDir = normalize(fs_in.TangentLightPos - fs_in.TangentFragPos);
+ float diff = max(dot(lightDir, normal), 0.0);
+ vec3 diffuse = diff * color;
+ // specular
+ vec3 viewDir = normalize(fs_in.TangentViewPos - fs_in.TangentFragPos);
+ vec3 reflectDir = reflect(-lightDir, normal);
+ vec3 halfwayDir = normalize(lightDir + viewDir);
+ float spec = pow(max(dot(normal, halfwayDir), 0.0), 32.0);
+
+ vec3 specular = vec3(0.2) * spec;
+ FragColor = vec4(ambient + diffuse + specular, 1.0);
+ }
+]]
+
+local shader = GameLab.Engine.Rendering.Shader.New(vert, frag)
+Debug.Log("shader is " .. inspect(shader:IsValid()))
+
while true do
app:PullMessage()