|
@@ -86,6 +86,25 @@ vec4 baseVoxel(vec2 pos) {
|
|
|
return texture2D(tActiveVoxelsBase, pos / uSize);
|
|
|
}
|
|
|
|
|
|
+vec4 getGroup(const in vec3 p) {
|
|
|
+ vec3 gridDim = uGridDim - vec3(1.0, 1.0, 0.0); // remove xy padding
|
|
|
+ // note that we swap x and z because the texture is flipped around y
|
|
|
+ #if defined(dAxisOrder_012)
|
|
|
+ float group = p.z + p.y * gridDim.z + p.x * gridDim.z * gridDim.y; // 210
|
|
|
+ #elif defined(dAxisOrder_021)
|
|
|
+ float group = p.y + p.z * gridDim.y + p.x * gridDim.y * gridDim.z; // 120
|
|
|
+ #elif defined(dAxisOrder_102)
|
|
|
+ float group = p.z + p.x * gridDim.z + p.y * gridDim.z * gridDim.x; // 201
|
|
|
+ #elif defined(dAxisOrder_120)
|
|
|
+ float group = p.x + p.z * gridDim.x + p.y * gridDim.x * gridDim.z; // 021
|
|
|
+ #elif defined(dAxisOrder_201)
|
|
|
+ float group = p.y + p.x * gridDim.y + p.z * gridDim.y * gridDim.x; // 102
|
|
|
+ #elif defined(dAxisOrder_210)
|
|
|
+ float group = p.x + p.y * gridDim.x + p.z * gridDim.x * gridDim.y; // 012
|
|
|
+ #endif
|
|
|
+ return vec4(group > 16777215.5 ? vec3(1.0) : encodeFloatRGB(group), 1.0);
|
|
|
+}
|
|
|
+
|
|
|
void main(void) {
|
|
|
// get 1D index
|
|
|
int vI = int(gl_FragCoord.x) + int(gl_FragCoord.y) * int(uSize);
|
|
@@ -255,44 +274,13 @@ void main(void) {
|
|
|
#ifdef dPackedGroup
|
|
|
gl_FragData[1] = vec4(voxel(coord3d).rgb, 1.0);
|
|
|
#else
|
|
|
- vec3 gridDim = uGridDim - vec3(1.0, 1.0, 0.0); // remove xy padding
|
|
|
- // note that we swap x and z because the texture is flipped around y
|
|
|
- #if defined(dAxisOrder_012)
|
|
|
- float group = coord3d.z + coord3d.y * gridDim.z + coord3d.x * gridDim.z * gridDim.y; // 210
|
|
|
- #elif defined(dAxisOrder_021)
|
|
|
- float group = coord3d.y + coord3d.z * gridDim.y + coord3d.x * gridDim.y * gridDim.z; // 120
|
|
|
- #elif defined(dAxisOrder_102)
|
|
|
- float group = coord3d.z + coord3d.x * gridDim.z + coord3d.y * gridDim.z * gridDim.x; // 201
|
|
|
- #elif defined(dAxisOrder_120)
|
|
|
- float group = coord3d.x + coord3d.z * gridDim.x + coord3d.y * gridDim.x * gridDim.z; // 021
|
|
|
- #elif defined(dAxisOrder_201)
|
|
|
- float group = coord3d.y + coord3d.x * gridDim.y + coord3d.z * gridDim.y * gridDim.x; // 102
|
|
|
- #elif defined(dAxisOrder_210)
|
|
|
- float group = coord3d.x + coord3d.y * gridDim.x + coord3d.z * gridDim.x * gridDim.y; // 012
|
|
|
- #endif
|
|
|
- gl_FragData[1] = vec4(group > 16777215.5 ? vec3(1.0) : encodeFloatRGB(group), 1.0);
|
|
|
+ gl_FragData[1] = getGroup(coord3d);
|
|
|
#endif
|
|
|
#else
|
|
|
#ifdef dPackedGroup
|
|
|
gl_FragData[1] = vec4(t < 0.5 ? d0.rgb : d1.rgb, 1.0);
|
|
|
#else
|
|
|
- vec3 b = t < 0.5 ? b0 : b1;
|
|
|
- vec3 gridDim = uGridDim - vec3(1.0, 1.0, 0.0); // remove xy padding
|
|
|
- // note that we swap x and z because the texture is flipped around y
|
|
|
- #if defined(dAxisOrder_012)
|
|
|
- float group = b.z + b.y * gridDim.z + b.x * gridDim.z * gridDim.y; // 210
|
|
|
- #elif defined(dAxisOrder_021)
|
|
|
- float group = b.y + b.z * gridDim.y + b.x * gridDim.y * gridDim.z; // 120
|
|
|
- #elif defined(dAxisOrder_102)
|
|
|
- float group = b.z + b.x * gridDim.z + b.y * gridDim.z * gridDim.x; // 201
|
|
|
- #elif defined(dAxisOrder_120)
|
|
|
- float group = b.x + b.z * gridDim.x + b.y * gridDim.x * gridDim.z; // 021
|
|
|
- #elif defined(dAxisOrder_201)
|
|
|
- float group = b.y + b.x * gridDim.y + b.z * gridDim.y * gridDim.x; // 102
|
|
|
- #elif defined(dAxisOrder_210)
|
|
|
- float group = b.x + b.y * gridDim.x + b.z * gridDim.x * gridDim.y; // 012
|
|
|
- #endif
|
|
|
- gl_FragData[1] = vec4(group > 16777215.5 ? vec3(1.0) : encodeFloatRGB(group), 1.0);
|
|
|
+ gl_FragData[1] = getGroup(t < 0.5 ? b0 : b1);
|
|
|
#endif
|
|
|
#endif
|
|
|
|