diff options
Diffstat (limited to 'wave-sim/resources/shaders')
-rwxr-xr-x | wave-sim/resources/shaders/shader.frag | 43 | ||||
-rwxr-xr-x | wave-sim/resources/shaders/shader.vert | 24 | ||||
-rwxr-xr-x | wave-sim/resources/shaders/shaders.qrc | 6 |
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> |