summaryrefslogtreecommitdiff
path: root/wave-sim/resources/shaders
diff options
context:
space:
mode:
Diffstat (limited to 'wave-sim/resources/shaders')
-rwxr-xr-xwave-sim/resources/shaders/shader.frag43
-rwxr-xr-xwave-sim/resources/shaders/shader.vert24
-rwxr-xr-xwave-sim/resources/shaders/shaders.qrc6
3 files changed, 73 insertions, 0 deletions
diff --git a/wave-sim/resources/shaders/shader.frag b/wave-sim/resources/shaders/shader.frag
new file mode 100755
index 0000000..e4cf718
--- /dev/null
+++ b/wave-sim/resources/shaders/shader.frag
@@ -0,0 +1,43 @@
+#version 330 core
+out vec4 fragColor;
+
+// Additional information for lighting
+in vec4 normal_worldSpace;
+in vec4 position_worldSpace;
+in vec4 force_worldSpace;
+
+uniform int wire = 0;
+uniform float red = 1.0;
+uniform float green = 1.0;
+uniform float blue = 1.0;
+uniform float alpha = 1.0;
+uniform int displayForce = 0;
+
+void main() {
+ if (wire == 1) {
+ fragColor = vec4(0.0, 0.0, 0.0, 1);
+ return;
+ }
+ vec4 lightPos = vec4(-2.0, 2.0, -3.0 , 1.0);
+ vec3 lightColor = vec3(1.0f, alpha, 0.0f);
+ vec4 lightDir = normalize(-lightPos + position_worldSpace);
+ float c = clamp(dot(-normal_worldSpace, lightDir), 0, 1);
+
+ if(displayForce == 1) {
+ fragColor = force_worldSpace;
+ return;
+ }
+
+ float r = red;
+ float g = green;
+ float b = blue;
+
+// if (displayForce == 1 && wire == 0) {
+// r = force_worldSpace[0];
+// g = force_worldSpace[1];
+// b = force_worldSpace[2];
+// }
+
+ fragColor = vec4(r * c * lightColor[0], g * c * lightColor[0], b * c * lightColor[0], 1);
+
+}
diff --git a/wave-sim/resources/shaders/shader.vert b/wave-sim/resources/shaders/shader.vert
new file mode 100755
index 0000000..6f15a59
--- /dev/null
+++ b/wave-sim/resources/shaders/shader.vert
@@ -0,0 +1,24 @@
+#version 330 core
+
+layout(location = 0) in vec3 position; // Position of the vertex
+layout(location = 1) in vec3 normal; // Normal of the vertex
+layout(location = 2) in vec3 force;
+
+uniform mat4 proj;
+uniform mat4 view;
+uniform mat4 model;
+
+uniform mat3 inverseTransposeModel;
+
+out vec4 normal_worldSpace;
+out vec4 position_worldSpace;
+out vec4 force_worldSpace;
+
+void main() {
+ normal_worldSpace = vec4(normalize(inverseTransposeModel * normal), 0);
+ position_worldSpace = vec4(position, 1.0);
+ force_worldSpace = vec4(force, 1.0);
+// force_worldSpace = vec4(1.0, 0.0, 0.0, 1.0);
+
+ gl_Position = proj * view * model * vec4(position, 1.0);
+}
diff --git a/wave-sim/resources/shaders/shaders.qrc b/wave-sim/resources/shaders/shaders.qrc
new file mode 100755
index 0000000..45dc189
--- /dev/null
+++ b/wave-sim/resources/shaders/shaders.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/shaders">
+ <file>shader.frag</file>
+ <file>shader.vert</file>
+ </qresource>
+</RCC>