Shader fixes

This commit is contained in:
luboslenco
2019-06-06 12:54:44 +02:00
parent 3a1e826fd3
commit e558a7bd7a
10 changed files with 134 additions and 64 deletions
+9
View File
@@ -0,0 +1,9 @@
#version 450
#include "../Shaders/compiled.inc"
in vec4 pos;
in vec2 nor;
out vec3 voxpositionGeom;
uniform mat4 W;
void main() {
voxpositionGeom = vec3(W * vec4(pos.xyz, 1.0)) / voxelgiHalfExtents;
}
+11
View File
@@ -0,0 +1,11 @@
#version 450
#extension GL_ARB_shader_image_load_store : enable
#include "../Shaders/compiled.inc"
#include "../Shaders/std/math.glsl"
#include "../Shaders/std/imageatomic.glsl"
in vec3 voxposition;
uniform layout(r8) writeonly image3D voxels;
void main() {
if (abs(voxposition.z) > 1.0 || abs(voxposition.x) > 1 || abs(voxposition.y) > 1) return;
imageStore(voxels, ivec3(voxelgiResolution * (voxposition * 0.5 + 0.5)), vec4(1.0));
}
+25
View File
@@ -0,0 +1,25 @@
#version 450
layout(triangles) in;
layout(triangle_strip) out;
layout(max_vertices=3) out;
in vec3 voxpositionGeom[];
out vec3 voxposition;
void main() {
vec3 p1 = voxpositionGeom[1] - voxpositionGeom[0];
vec3 p2 = voxpositionGeom[2] - voxpositionGeom[0];
vec3 p = abs(cross(p1, p2));
for (uint i = 0; i < 3; ++i) {
voxposition = voxpositionGeom[i];
if (p.z > p.x && p.z > p.y) {
gl_Position = vec4(voxposition.x, voxposition.y, 0.0, 1.0);
}
else if (p.x > p.y && p.x > p.z) {
gl_Position = vec4(voxposition.y, voxposition.z, 0.0, 1.0);
}
else {
gl_Position = vec4(voxposition.x, voxposition.z, 0.0, 1.0);
}
EmitVertex();
}
EndPrimitive();
}
+9
View File
@@ -0,0 +1,9 @@
#version 450
#include "../Shaders/compiled.inc"
in vec4 pos;
in vec2 nor;
out vec3 voxpositionGeom;
uniform mat4 W;
void main() {
voxpositionGeom = vec3(W * vec4(pos.xyz, 1.0)) / voxelgiHalfExtents;
}