vengi-voxel / vengi

free and open source voxel art tools - editor, thumbnailer and format converter
http://vengi-voxel.github.io/vengi/
Other
1.05k stars 87 forks source link

VIDEO: WebGL errors/warnings #241

Closed mgerhardy closed 1 year ago

mgerhardy commented 1 year ago
mgerhardy commented 1 year ago

desktop gl

ERROR: (0) u_viewprojection: offset: 0, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_model: offset: 64, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_lightdir: offset: 0, type: 35665, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_diffuse_color: offset: 16, type: 35665, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_ambient_color: offset: 32, type: 35665, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_depthsize: offset: 48, type: 35664, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_distances: offset: 64, type: 35666, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_cascades: offset: 80, type: 35676, size: 4, matrixStride: 16, arrayStride: 64
ERROR: (0) u_materialcolor: offset: 0, type: 35666, size: 256, matrixStride: 0, arrayStride: 16
ERROR: (0) u_glowcolor: offset: 4096, type: 35666, size: 256, matrixStride: 0, arrayStride: 16
ERROR: (0) u_viewprojection: offset: 8192, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_model: offset: 8256, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_pivot: offset: 8320, type: 35665, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_gray: offset: 8332, type: 5124, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_lightviewprojection: offset: 0, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_model: offset: 64, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_pivot: offset: 128, type: 35665, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_coefficients0: offset: 0, type: 5126, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_coefficients1: offset: 4, type: 5126, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_coefficients2: offset: 8, type: 5126, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_offsets0: offset: 16, type: 35664, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_offsets1: offset: 24, type: 35664, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_offsets2: offset: 32, type: 35664, size: 1, matrixStride: 0, arrayStride: 0

webgl

ERROR: (0) u_viewprojection: offset: 0, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_model: offset: 64, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_lightdir: offset: 0, type: 35665, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_diffuse_color: offset: 16, type: 35665, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_ambient_color: offset: 32, type: 35665, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_depthsize: offset: 48, type: 35664, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_distances: offset: 64, type: 35666, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_cascades: offset: 64, type: 35666, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) Invalid offset found for uniform u_cascades 64 - expected 80
ERROR: (0) u_materialcolor: offset: 64, type: 35666, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) Invalid offset found for uniform u_materialcolor 64 - expected 0
ERROR: (0) u_glowcolor: offset: 64, type: 35666, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) Invalid offset found for uniform u_glowcolor 64 - expected 4096
ERROR: (0) u_viewprojection: offset: 8192, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_model: offset: 8256, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_pivot: offset: 8320, type: 35665, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_gray: offset: 8332, type: 5124, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_lightviewprojection: offset: 0, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_model: offset: 64, type: 35676, size: 1, matrixStride: 16, arrayStride: 0
ERROR: (0) u_pivot: offset: 128, type: 35665, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_coefficients0: offset: 0, type: 5126, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_coefficients1: offset: 4, type: 5126, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_coefficients2: offset: 8, type: 5126, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_offsets0: offset: 16, type: 35664, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_offsets1: offset: 24, type: 35664, size: 1, matrixStride: 0, arrayStride: 0
ERROR: (0) u_offsets2: offset: 32, type: 35664, size: 1, matrixStride: 0, arrayStride: 0
mgerhardy commented 1 year ago

removing the array from the voxel shader fixes the problem - so there might be problems with arrays in webgl - resp. the way I query them

diff --git a/src/modules/voxelrender/RawVolumeRenderer.cpp b/src/modules/voxelrender/RawVolumeRenderer.cpp
index 857565a9e..ccb549e69 100644
--- a/src/modules/voxelrender/RawVolumeRenderer.cpp
+++ b/src/modules/voxelrender/RawVolumeRenderer.cpp
@@ -516,8 +516,11 @@ void RawVolumeRenderer::render(RenderContext &renderContext, const video::Camera
        }

        _voxelShaderFragData.depthsize = _shadow.dimension();
+       _voxelShaderFragData.cascades1 = _shadow.cascades()[0];
+       _voxelShaderFragData.cascades2 = _shadow.cascades()[1];
+       _voxelShaderFragData.cascades3 = _shadow.cascades()[2];
+       _voxelShaderFragData.cascades4 = _shadow.cascades()[3];
        for (int i = 0; i < shader::VoxelShaderConstants::getMaxDepthBuffers(); ++i) {
-               _voxelShaderFragData.cascades[i] = _shadow.cascades()[i];
                _voxelShaderFragData.distances[i] = _shadow.distances()[i];
        }
        _voxelShaderFragData.lightdir = _shadow.sunDirection();
diff --git a/src/modules/voxelrender/shaders/voxel.frag b/src/modules/voxelrender/shaders/voxel.frag
index 79334ee6b..a98491c49 100644
--- a/src/modules/voxelrender/shaders/voxel.frag
+++ b/src/modules/voxelrender/shaders/voxel.frag
@@ -12,7 +12,10 @@ layout(std140) uniform u_frag {
        lowp vec3 u_ambient_color;
        vec2 u_depthsize;
        vec4 u_distances;
-       mat4 u_cascades[4];
+       mat4 u_cascades1;
+       mat4 u_cascades2;
+       mat4 u_cascades3;
+       mat4 u_cascades4;
 };

 layout(location = 0) $out vec4 o_color;
@@ -49,7 +52,14 @@ float sampleShadowPCF(in float bias, in int cascade, in vec2 uv, in float compar
 }

 vec3 calculateShadowUVZ(in vec4 lightspacepos, in int cascade) {
-       vec4 lightp = u_cascades[cascade] * lightspacepos;
+       mat4 m = u_cascades1;
+       if (cascade == 1)
+               m = u_cascades2;
+       else if (cascade == 2)
+               m = u_cascades3;
+       else if (cascade == 3)
+               m = u_cascades4;
+       vec4 lightp = m * lightspacepos;
        /* we manually have to do the perspective divide as there is no
         * version of textureProj that can take a sampler2DArrayShadow
         * Also bring the ndc into the range [0-1] because the depth map