void main()

in src/engine/gfx/mattex2d.js [113:193]


      void main() {
        vec3 vVol = vec3(0.0, 0.0, 0.0);
        if (plane == SLICE_AXIS_Z) {
          vVol.x = vecUV.x * float(zoom) + float(posX) / 2.0;
          vVol.y = vecUV.y * float(zoom) - float(posY) / 2.0;
          vVol.z = float(sliceIndex) / float(numSlices);
        } // if z slices
        if (plane == SLICE_AXIS_Y) {
          vVol.x = vecUV.x * float(zoom) + float(posX) / 2.0;
          vVol.y = float(sliceIndex) / float(numSlices);
          vVol.z = vecUV.y * float(zoom) - float(posY) / 2.0;
        } // if y slices
        if (plane == SLICE_AXIS_X) {
          vVol.x = float(sliceIndex) / float(numSlices);
          vVol.y = vecUV.x * float(zoom) + float(posX) / 2.0;
          vVol.z = vecUV.y * float(zoom) - float(posY) / 2.0;
        } // if x slices
        
        vec2 texCoord = getTexCoord(vVol);
        // get texture pixel from source texture
        
/*        if (isRoiVolume > 0.5) {
          gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
          return;
        }
*/
        if (isRoiVolume > 0.5) {
          //vec4 vColTex = texture2D(texture, texCoord);
          vec4 vColTex = tex3D(vVol);
          vec4 col = vec4(1.0, 0.0, 0.0, 1.0);
          //float fPalIndex = vColTex.w;
          //vec2 vPalCoord = vec2(fPalIndex, 0.0);
          //vColTex = texture2D(palTexture, vPalCoord);
          if (vColTex.a > 0.4)
            col = vec4(vColTex.rgb, 1.0);
          else  
            col = vec4(2.0 * vColTex.r, 2.0 * vColTex.g, 2.0 * vColTex.b, 1.0);
          
          gl_FragColor = col;
          return;
        }
          float sigma2 = sigma*sigma;
          //float sigmaB2 = sigmaB*sigmaB;
       
          float val = tex3D(vVol).a;//texture2D(texture, texCoord).a;
          float BIFICOBR = 0.0;
          float norm_factorB = 0.0;
          //Bilateral Filtering 
        
        for (float i = -2.0; i < 2.5; i += 1.0)
          for (float j = -2.0; j < 2.5; j += 1.0)
            for(float k = -2.0; k < 2.5; k += 1.0)
            {
              vec3 vAdd = vec3(0.0,0.0,0.0);
              if (plane == SLICE_AXIS_Z) {
                vAdd.x = xPixelSize * i;
                vAdd.y = yPixelSize * j;
                vAdd.z = k/float(numSlices);
              } // if z slices
              if (plane == SLICE_AXIS_Y) {
                vAdd.x = xPixelSize * i;
                vAdd.y = k/float(numSlices);
                vAdd.z = yPixelSize * j;
              } // if y slices
              if (plane == SLICE_AXIS_X) {
                vAdd.x = k/float(numSlices);
                vAdd.y = xPixelSize * i;
                vAdd.z = yPixelSize * j;
              } // if x slices

              vec2 curTexCoord = getTexCoord(vVol + vAdd);  
              float curVal = tex3D(vVol + vAdd).a;//texture2D(texture,curTexCoord).a;
              float gaussB = exp( -(i*i + j*j + k*k) / (2.0 * sigma2));
              BIFICOBR += curVal * gaussB;
              norm_factorB += gaussB;
            }
        // intensity
        BIFICOBR = BIFICOBR / norm_factorB;
        BIFICOBR = contrast * (BIFICOBR - 0.5) + 0.5 + brightness;
        gl_FragColor = vec4(BIFICOBR,BIFICOBR,BIFICOBR, 1.0);
      } // end of main