Shader fixes
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user