[OpenWalnut-Dev] [OW-Modules] r285: [FIX] fiber stipples now actually render stipples again; there is still a problem with stipple directions
Mathias Goldau
math at informatik.uni-leipzig.de
Sat Mar 28 10:21:19 CET 2015
I remember that the stipple directions were influenced with the vector interpolation (recently fixed for rotated grids).
> Am 27.03.2015 um 17:18 schrieb reichenbach at informatik.uni-leipzig.de:
>
> *Branch default*
> [FIX] fiber stipples now actually render stipples again; there is still a problem with stipple directions
>
> changeset 285:17ea4ffe7fc1 in /srv/hg/ow-modules (Fri Mar 27 17:18:20 2015 +0100):
>
> diffstat:
>
> FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-fragment.glsl | 532 +++------
> FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-uniforms.glsl | 2 +-
> FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-varyings.glsl | 5 +-
> FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-vertex.glsl | 18 +-
> 4 files changed, 186 insertions(+), 371 deletions(-)
>
> diffs (637 lines):
>
> diff -r 049641c7f75d -r 17ea4ffe7fc1 FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-fragment.glsl
> --- a/FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-fragment.glsl Thu Mar 26 16:13:52 2015 +0100
> +++ b/FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-fragment.glsl Fri Mar 27 17:18:20 2015 +0100
> @@ -36,122 +36,123 @@
> return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
> }
>
> -/**
> - * Converts HSL colors to RGB colors. This is used in this shader later to draw from a single random, a whole color (hue).
> - */
> -vec4 hsv_to_rgb(float h, float s, float v, float a)
> -{
> - float c = v * s;
> - h = mod((h * 6.0), 6.0);
> - float x = c * (1.0 - abs(mod(h, 2.0) - 1.0));
> - vec4 color;
> -
> - if (0.0 <= h && h < 1.0) {
> - color = vec4(c, x, 0.0, a);
> - } else if (1.0 <= h && h < 2.0) {
> - color = vec4(x, c, 0.0, a);
> - } else if (2.0 <= h && h < 3.0) {
> - color = vec4(0.0, c, x, a);
> - } else if (3.0 <= h && h < 4.0) {
> - color = vec4(0.0, x, c, a);
> - } else if (4.0 <= h && h < 5.0) {
> - color = vec4(x, 0.0, c, a);
> - } else if (5.0 <= h && h < 6.0) {
> - color = vec4(c, 0.0, x, a);
> - } else {
> - color = vec4(0.0, 0.0, 0.0, a);
> - }
> -
> - color.rgb += v - c;
> -
> - return color;
> -}
> -
> -vec4 hotIron( in float value )
> -{
> - // // BLUE <-> RED
> - // vec4 color8 = vec4( 255.0 / 255.0, 255.0 / 255.0, 204.0 / 255.0, 1.0 );
> - // vec4 color7 = vec4( 255.0 / 255.0, 237.0 / 255.0, 160.0 / 255.0, 1.0 );
> - // vec4 color6 = vec4( 254.0 / 255.0, 217.0 / 255.0, 118.0 / 255.0, 1.0 );
> - // vec4 color5 = vec4( 254.0 / 255.0, 178.0 / 255.0, 76.0 / 255.0, 1.0 );
> - // vec4 color4 = vec4( 253.0 / 255.0, 141.0 / 255.0, 60.0 / 255.0, 1.0 );
> - // vec4 color3 = vec4( 252.0 / 255.0, 78.0 / 255.0, 42.0 / 255.0, 1.0 );
> - // vec4 color2 = vec4( 205.0 / 255.0, 000.0 / 255.0, 000.0 / 255.0, 1.0 );
> - // vec4 color1 = vec4( 180.0 / 255.0, 85.0 / 255.0, 255.0 / 255.0, 1.0 );
> - // vec4 color0 = vec4( 000.0 / 255.0, 150.0 / 255.0, 255.0 / 255.0, 1.0 );
> -
> - // HOT IRON
> - vec4 color8 = vec4( 255.0 / 255.0, 255.0 / 255.0, 204.0 / 255.0, 1.0 );
> - vec4 color7 = vec4( 255.0 / 255.0, 237.0 / 255.0, 160.0 / 255.0, 1.0 );
> - vec4 color6 = vec4( 254.0 / 255.0, 217.0 / 255.0, 118.0 / 255.0, 1.0 );
> - vec4 color5 = vec4( 254.0 / 255.0, 178.0 / 255.0, 76.0 / 255.0, 1.0 );
> - vec4 color4 = vec4( 253.0 / 255.0, 141.0 / 255.0, 60.0 / 255.0, 1.0 );
> - vec4 color3 = vec4( 252.0 / 255.0, 78.0 / 255.0, 42.0 / 255.0, 1.0 );
> - vec4 color2 = vec4( 227.0 / 255.0, 26.0 / 255.0, 28.0 / 255.0, 1.0 );
> - vec4 color1 = vec4( 189.0 / 255.0, 0.0 / 255.0, 38.0 / 255.0, 1.0 );
> - vec4 color0 = vec4( 128.0 / 255.0, 0.0 / 255.0, 38.0 / 255.0, 1.0 );
> -
> - // In order to use a different color map use the colors in the BLUE <-> RED section above from color0 to colorN.
> - // Depending on how much colors you need, set then the colorNum to e.g. 2 when using only two colors.
> - //
> - // // HOT IRON
> - int colorNum = 8;
> - // // BLUE <-> RED
> - // int colorNum = 3;
> -
> - float colorValue = value * float( colorNum );
> - int sel = int( floor( colorValue ) );
> -
> - if( sel >= colorNum )
> - {
> - return color0;
> - }
> - else if( sel < 0 )
> - {
> - return color0;
> - }
> - else
> - {
> - colorValue -= float( sel );
> -
> - if( sel < 1 )
> - {
> - return ( color1 * colorValue + color0 * ( 1.0 - colorValue ) );
> - }
> - else if( sel < 2 )
> - {
> - return ( color2 * colorValue + color1 * ( 1.0 - colorValue ) );
> - }
> - else if( sel < 3 )
> - {
> - return ( color3 * colorValue + color2 * ( 1.0 - colorValue ) );
> - }
> - else if( sel < 4 )
> - {
> - return ( color4 * colorValue + color3 * ( 1.0 - colorValue ) );
> - }
> - else if( sel < 5 )
> - {
> - return ( color5 * colorValue + color4 * ( 1.0 - colorValue ) );
> - }
> - else if( sel < 6 )
> - {
> - return ( color6 * colorValue + color5 * ( 1.0 - colorValue ) );
> - }
> - else if( sel < 7 )
> - {
> - return ( color7 * colorValue + color6 * ( 1.0 - colorValue ) );
> - }
> - else if( sel < 8 )
> - {
> - return ( color8 * colorValue + color7 * ( 1.0 - colorValue ) );
> - }
> - else
> - {
> - return color0;
> - }
> - }
> -}
> +// /**
> +// * Converts HSL colors to RGB colors. This is used in this shader later to draw from a single random, a whole color (hue).
> +// */
> +// vec4 hsv_to_rgb(float h, float s, float v, float a)
> +// {
> +// float c = v * s;
> +// h = mod((h * 6.0), 6.0);
> +// float x = c * (1.0 - abs(mod(h, 2.0) - 1.0));
> +// vec4 color;
> +//
> +// if (0.0 <= h && h < 1.0) {
> +// color = vec4(c, x, 0.0, a);
> +// } else if (1.0 <= h && h < 2.0) {
> +// color = vec4(x, c, 0.0, a);
> +// } else if (2.0 <= h && h < 3.0) {
> +// color = vec4(0.0, c, x, a);
> +// } else if (3.0 <= h && h < 4.0) {
> +// color = vec4(0.0, x, c, a);
> +// } else if (4.0 <= h && h < 5.0) {
> +// color = vec4(x, 0.0, c, a);
> +// } else if (5.0 <= h && h < 6.0) {
> +// color = vec4(c, 0.0, x, a);
> +// } else {
> +// color = vec4(0.0, 0.0, 0.0, a);
> +// }
> +//
> +// color.rgb += v - c;
> +//
> +// return color;
> +// }
> +//
> +// vec4 hotIron( in float value )
> +// {
> +// // // BLUE <-> RED
> +// // vec4 color8 = vec4( 255.0 / 255.0, 255.0 / 255.0, 204.0 / 255.0, 1.0 );
> +// // vec4 color7 = vec4( 255.0 / 255.0, 237.0 / 255.0, 160.0 / 255.0, 1.0 );
> +// // vec4 color6 = vec4( 254.0 / 255.0, 217.0 / 255.0, 118.0 / 255.0, 1.0 );
> +// // vec4 color5 = vec4( 254.0 / 255.0, 178.0 / 255.0, 76.0 / 255.0, 1.0 );
> +// // vec4 color4 = vec4( 253.0 / 255.0, 141.0 / 255.0, 60.0 / 255.0, 1.0 );
> +// // vec4 color3 = vec4( 252.0 / 255.0, 78.0 / 255.0, 42.0 / 255.0, 1.0 );
> +// // vec4 color2 = vec4( 205.0 / 255.0, 000.0 / 255.0, 000.0 / 255.0, 1.0 );
> +// // vec4 color1 = vec4( 180.0 / 255.0, 85.0 / 255.0, 255.0 / 255.0, 1.0 );
> +// // vec4 color0 = vec4( 000.0 / 255.0, 150.0 / 255.0, 255.0 / 255.0, 1.0 );
> +//
> +// // HOT IRON
> +// vec4 color8 = vec4( 255.0 / 255.0, 255.0 / 255.0, 204.0 / 255.0, 1.0 );
> +// vec4 color7 = vec4( 255.0 / 255.0, 237.0 / 255.0, 160.0 / 255.0, 1.0 );
> +// vec4 color6 = vec4( 254.0 / 255.0, 217.0 / 255.0, 118.0 / 255.0, 1.0 );
> +// vec4 color5 = vec4( 254.0 / 255.0, 178.0 / 255.0, 76.0 / 255.0, 1.0 );
> +// vec4 color4 = vec4( 253.0 / 255.0, 141.0 / 255.0, 60.0 / 255.0, 1.0 );
> +// vec4 color3 = vec4( 252.0 / 255.0, 78.0 / 255.0, 42.0 / 255.0, 1.0 );
> +// vec4 color2 = vec4( 227.0 / 255.0, 26.0 / 255.0, 28.0 / 255.0, 1.0 );
> +// vec4 color1 = vec4( 189.0 / 255.0, 0.0 / 255.0, 38.0 / 255.0, 1.0 );
> +// vec4 color0 = vec4( 128.0 / 255.0, 0.0 / 255.0, 38.0 / 255.0, 1.0 );
> +//
> +// // In order to use a different color map use the colors in the BLUE <-> RED section above from color0 to colorN.
> +// // Depending on how much colors you need, set then the colorNum to e.g. 2 when using only two colors.
> +// //
> +// // // HOT IRON
> +// int colorNum = 8;
> +// // // BLUE <-> RED
> +// // int colorNum = 3;
> +//
> +// float colorValue = value * float( colorNum );
> +// int sel = int( floor( colorValue ) );
> +//
> +// if( sel >= colorNum )
> +// {
> +// return color0;
> +// }
> +// else if( sel < 0 )
> +// {
> +// return color0;
> +// }
> +// else
> +// {
> +// colorValue -= float( sel );
> +//
> +// if( sel < 1 )
> +// {
> +// return ( color1 * colorValue + color0 * ( 1.0 - colorValue ) );
> +// }
> +// else if( sel < 2 )
> +// {
> +// return ( color2 * colorValue + color1 * ( 1.0 - colorValue ) );
> +// }
> +// else if( sel < 3 )
> +// {
> +// return ( color3 * colorValue + color2 * ( 1.0 - colorValue ) );
> +// }
> +// else if( sel < 4 )
> +// {
> +// return ( color4 * colorValue + color3 * ( 1.0 - colorValue ) );
> +// }
> +// else if( sel < 5 )
> +// {
> +// return ( color5 * colorValue + color4 * ( 1.0 - colorValue ) );
> +// }
> +// else if( sel < 6 )
> +// {
> +// return ( color6 * colorValue + color5 * ( 1.0 - colorValue ) );
> +// }
> +// else if( sel < 7 )
> +// {
> +// return ( color7 * colorValue + color6 * ( 1.0 - colorValue ) );
> +// }
> +// else if( sel < 8 )
> +// {
> +// return ( color8 * colorValue + color7 * ( 1.0 - colorValue ) );
> +// }
> +// else
> +// {
> +// return color0;
> +// }
> +// }
> +// }
> +//
>
> /**
> * Computes voxel corner positions in pos[8] and retrieve vectors from u_vectorsSampler. This way we access all 8 surrunding vectors and may perform
> @@ -167,68 +168,67 @@
> *
> * @return interpolated vector at position textPos
> */
> -vec3 customInterpolate( vec3 textPos, out vec3 interpolDiff )
> -{
> - vec3 pos[8];
> - pos[0] = vec3( floor( textPos.x ), floor( textPos.y ), floor( textPos.z ) );
> - pos[1] = vec3( ceil( textPos.x ), floor( textPos.y ), floor( textPos.z ) );
> - pos[2] = vec3( floor( textPos.x ), ceil( textPos.y ), floor( textPos.z ) );
> - pos[3] = vec3( ceil( textPos.x ), ceil( textPos.y ), floor( textPos.z ) );
> - pos[4] = vec3( floor( textPos.x ), floor( textPos.y ), ceil( textPos.z ) );
> - pos[5] = vec3( ceil( textPos.x ), floor( textPos.y ), ceil( textPos.z ) );
> - pos[6] = vec3( floor( textPos.x ), ceil( textPos.y ), ceil( textPos.z ) );
> - pos[7] = vec3( ceil( textPos.x ), ceil( textPos.y ), ceil( textPos.z ) );
> -
> - vec3 localPos = textPos - pos[0];
> - float lambdaX = localPos.x * u_pixelSizeX;
> - float lambdaY = localPos.y * u_pixelSizeY;
> - float lambdaZ = localPos.z * u_pixelSizeZ;
> -
> - float h[8];
> - h[0] = ( 1 - lambdaX ) * ( 1 - lambdaY ) * ( 1 - lambdaZ );
> - h[1] = ( lambdaX ) * ( 1 - lambdaY ) * ( 1 - lambdaZ );
> - h[2] = ( 1 - lambdaX ) * ( lambdaY ) * ( 1 - lambdaZ );
> - h[3] = ( lambdaX ) * ( lambdaY ) * ( 1 - lambdaZ );
> - h[4] = ( 1 - lambdaX ) * ( 1 - lambdaY ) * ( lambdaZ );
> - h[5] = ( lambdaX ) * ( 1 - lambdaY ) * ( lambdaZ );
> - h[6] = ( 1 - lambdaX ) * ( lambdaY ) * ( lambdaZ );
> - h[7] = ( lambdaX ) * ( lambdaY ) * ( lambdaZ );
> -
> - vec3 result = vec3( 0, 0, 0 );
> - vec3 v[8];
> - float dist = 9999999;
> - int nearest = 9999999;
> - for( int i = 0; i < 8; ++i )
> - {
> - if( length( pos[i] - textPos ) < dist )
> - {
> - dist = length( pos[i] - textPos );
> - nearest = i;
> - }
> - pos[i].x /= u_pixelSizeX * ( u_probTractSizeX -1 );
> - pos[i].y /= u_pixelSizeY * ( u_probTractSizeY -1 );
> - pos[i].z /= u_pixelSizeZ * ( u_probTractSizeZ -1 );
> - v[i] = texture3DUnscaled( u_vectorsSampler, pos[i], u_vectorsMin, u_vectorsScale ).xyz;
> - // for orientation swaps use the step function below instead of 1.0
> - float sgn = 1.0; // step( 0, dot( v[0], v[i] ) )*2 - 1;
> - result += h[i] * sgn * v[i];
> - }
> -
> - result = v[nearest];
> - textPos.x /= u_pixelSizeX * ( u_probTractSizeX);
> - textPos.y /= u_pixelSizeY * ( u_probTractSizeY);
> - textPos.z /= u_pixelSizeZ * ( u_probTractSizeZ);
> -
> - interpolDiff = vec3( 1, 1, 1 ) - abs( result - texture3DUnscaled( u_vectorsSampler, textPos, u_vectorsMin, u_vectorsScale ).xyz );
> -
> - return normalize( result );
> -}
> +// vec3 customInterpolate( vec3 textPos, out vec3 interpolDiff )
> +// {
> +// vec3 pos[8];
> +// pos[0] = vec3( floor( textPos.x ), floor( textPos.y ), floor( textPos.z ) );
> +// pos[1] = vec3( ceil( textPos.x ), floor( textPos.y ), floor( textPos.z ) );
> +// pos[2] = vec3( floor( textPos.x ), ceil( textPos.y ), floor( textPos.z ) );
> +// pos[3] = vec3( ceil( textPos.x ), ceil( textPos.y ), floor( textPos.z ) );
> +// pos[4] = vec3( floor( textPos.x ), floor( textPos.y ), ceil( textPos.z ) );
> +// pos[5] = vec3( ceil( textPos.x ), floor( textPos.y ), ceil( textPos.z ) );
> +// pos[6] = vec3( floor( textPos.x ), ceil( textPos.y ), ceil( textPos.z ) );
> +// pos[7] = vec3( ceil( textPos.x ), ceil( textPos.y ), ceil( textPos.z ) );
> +//
> +// vec3 localPos = textPos - pos[0];
> +// float lambdaX = localPos.x * u_pixelSizeX;
> +// float lambdaY = localPos.y * u_pixelSizeY;
> +// float lambdaZ = localPos.z * u_pixelSizeZ;
> +//
> +// float h[8];
> +// h[0] = ( 1 - lambdaX ) * ( 1 - lambdaY ) * ( 1 - lambdaZ );
> +// h[1] = ( lambdaX ) * ( 1 - lambdaY ) * ( 1 - lambdaZ );
> +// h[2] = ( 1 - lambdaX ) * ( lambdaY ) * ( 1 - lambdaZ );
> +// h[3] = ( lambdaX ) * ( lambdaY ) * ( 1 - lambdaZ );
> +// h[4] = ( 1 - lambdaX ) * ( 1 - lambdaY ) * ( lambdaZ );
> +// h[5] = ( lambdaX ) * ( 1 - lambdaY ) * ( lambdaZ );
> +// h[6] = ( 1 - lambdaX ) * ( lambdaY ) * ( lambdaZ );
> +// h[7] = ( lambdaX ) * ( lambdaY ) * ( lambdaZ );
> +//
> +// vec3 result = vec3( 0, 0, 0 );
> +// vec3 v[8];
> +// float dist = 9999999;
> +// int nearest = 9999999;
> +// for( int i = 0; i < 8; ++i )
> +// {
> +// if( length( pos[i] - textPos ) < dist )
> +// {
> +// dist = length( pos[i] - textPos );
> +// nearest = i;
> +// }
> +// pos[i].x /= u_pixelSizeX * ( u_probTractSizeX -1 );
> +// pos[i].y /= u_pixelSizeY * ( u_probTractSizeY -1 );
> +// pos[i].z /= u_pixelSizeZ * ( u_probTractSizeZ -1 );
> +// v[i] = texture3DUnscaled( u_vectorsSampler, pos[i], u_vectorsMin, u_vectorsScale ).xyz;
> +// // for orientation swaps use the step function below instead of 1.0
> +// float sgn = 1.0; // step( 0, dot( v[0], v[i] ) )*2 - 1;
> +// result += h[i] * sgn * v[i];
> +// }
> +//
> +// result = v[nearest];
> +// textPos.x /= u_pixelSizeX * ( u_probTractSizeX);
> +// textPos.y /= u_pixelSizeY * ( u_probTractSizeY);
> +// textPos.z /= u_pixelSizeZ * ( u_probTractSizeZ);
> +//
> +// interpolDiff = vec3( 1, 1, 1 ) - abs( result - texture3DUnscaled( u_vectorsSampler, textPos, u_vectorsMin, u_vectorsScale ).xyz );
> +//
> +// return normalize( result );
> +// }
>
> void main()
> {
> - // get principal diffusion direction
> - vec3 interpolDiff;
> - vec3 diffusionDirection = customInterpolate( v_textPos, interpolDiff );
> + // vec3 diffusionDirection = customInterpolate( v_textPos, interpolDiff );
> + vec3 diffusionDirection = texture3D( u_vectorsSampler, v_vecTexturePos ).xyz;
>
> // project into plane (given by two vectors aVec and bVec)
> vec3 aVecNorm = normalize( u_aVec );
> @@ -243,15 +243,8 @@
>
> vec3 scaledFocalPoint1 = middlePoint_tex + u_scale * projectedDirectionTextCoords;
> vec3 scaledFocalPoint2 = middlePoint_tex - u_scale * projectedDirectionTextCoords;
> - vec3 focalPoint1 = middlePoint_tex + projectedDirectionTextCoords;
> - vec3 focalPoint2 = middlePoint_tex - projectedDirectionTextCoords;
>
> - vec3 texturePosition = v_textPos;
> - texturePosition.x /= u_pixelSizeX * u_probTractSizeX;
> - texturePosition.y /= u_pixelSizeY * u_probTractSizeY;
> - texturePosition.z /= u_pixelSizeZ * u_probTractSizeZ;
> -
> - float col = texture3D( u_colSampler, texturePosition ).r;
> + float col = texture3D( u_colSampler, v_colorTexturePos ).r;
>
> // generally the area of a line stipple is a circle with radius R (each half for the endings of the line stipple) plus
> // a quad with height 2R and width length of the focalPoints v and w. hence we have this equation in R to solve:
> @@ -268,49 +261,10 @@
> float r2 = p2 - sqrt( p2 * p2 + q );
> float radius = max( r1, r2 );// - 0.05;
>
> - // // Debug: for fixed radius
> - // radius = 0.01* u_glyphThickness;
> -
> - // // debug positions: This will draw only a circle if you want to see the positions. You need to disable all other stuff
> - // vec4 color = vec4(0.0, 0.0, 0.0, 1.0);
> - // //if( gl_TexCoord[2].x == 0 )
> - // //{
> - // // color = vec4( 107.0 / 255.0, 138.0 / 255.0, 67.0 / 255.0, 1.0 );
> - // //}
> - // //else if( gl_TexCoord[2].x == 1 )
> - // //{
> - // // color = vec4( 28.0 / 255.0, 74.0 / 255.0, 147.0 / 255.0, 1.0 );
> - // //}
> - // //else if( gl_TexCoord[2].x == 2 )
> - // //{
> - // // color = vec4( 226.0 / 255.0, 180.0 / 255.0, 55.0 / 255.0, 1.0 );
> - // //}
> - // //else if( gl_TexCoord[2].x == 3 )
> - // //{
> - // // color = vec4( 173.0 / 255.0, 72.0 / 255.0, 34.0 / 255.0, 1.0 );
> - // //}
> - // // else {
> - // // discard;
> - // // }
> - // float lp = distance( gl_TexCoord[1].xyz, middlePoint_tex );
> - // if( lp < 0.5 )
> - // {
> - // gl_FragColor = color;
> - // }
> -
> vec4 white = vec4( 1, 1, 1, 1 );
> vec4 black = vec4( 0, 0, 0, 1 );
>
> vec4 color = u_color;
> - // Enable this for textured stipples
> - // ///////////// if( u_color.r == 1.0 ) { // this if, realises one FS to be colored with texture while the other set is colored with fixed color
> - // ///////////// if( col < 0.5 ) {
> - // ///////////// discard;
> - // ///////////// }
> - // ///////////// else {
> - // color = hotIron( ( col - 0.5 ) * 2 );
> - // ///////////// }
> - // /////////////}
>
> // opacity filtered color (default)
> vec4 c = color * pow( v_probability, 1.0 / (10.0 * u_colorThreshold) );
> @@ -319,32 +273,6 @@
> c = color;
> }
>
> - // mod: dark stipples in bright regions, bright stipples in dark regions
> - // c.r = c.r - 0.2 + 0.2 * ( 1 - 2.0 * col );
> -
> - // // Debug: hotIron colormapping of the probability.
> - // vec4 c = hotIron( 1.0 - v_probability );
> -
> - // Feature: enable this if you want fiber stipples color from separate texture (where 'col' variable is refferring to).
> - // vec4 c = hotIron( col );
> - // // with opacity or with out
> - // c.a = probability;
> -
> - // // if you want thresholding
> - // if( col < 0.51 )
> - // c = vec4(0,0,0.8, 1 );
> - // else
> - // c = hotIron( col * 2 - 1.0 );
> - // c.a = 0.2 + probability;
> -
> - // vec4 c = white;
> -
> - // vec4 c = black;
> -
> - // // Debug: random color
> - // float r = rand( vec2( scaledFocalPoint1.xy ) );
> - // vec4 c = hsv_to_rgb( r, 1, 1, 1 );
> -
> float dist = distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 );
>
> if( u_outlineInOut ) {
> @@ -423,111 +351,5 @@
> discard;
> }
> }
> -// else
> -// {
> -// if( u_outline > 0.0 )
> -// {
> -// // Debug: Enable fade to black
> -// float gray = 1.0;
> -// float alpha = v_probability + 0.5;
> -// float u_outlineWidth = 0.019;
> -// if( dist < ( radius + 0.0 + 8.0 * u_outlineWidth ) ) { float gg = gray - 0.9; gl_FragColor = vec4( c * gg ) + vec4( 0,0,0, 0.7 ); }
> -// if( dist < ( radius + 0.0 + 7.0 * u_outlineWidth ) ) { float gg = gray - 0.7; gl_FragColor = vec4( c * gg ) + vec4( 0,0,0, 0.6 ); }
> -// if( dist < ( radius + 0.0 + 6.0 * u_outlineWidth ) ) { float gg = gray - 0.5; gl_FragColor = vec4( c * gg ) + vec4( 0,0,0, 0.5 ); }
> -// if( dist < ( radius + 0.0 + 5.0 * u_outlineWidth ) ) { float gg = gray - 0.4; gl_FragColor = vec4( c * gg ) + vec4( 0,0,0, 0.4 ); }
> -// if( dist < ( radius + 0.0 + 4.0 * u_outlineWidth ) ) { float gg = gray - 0.3; gl_FragColor = vec4( c * gg ) + vec4( 0,0,0, 0.3 ); }
> -// if( dist < ( radius + 0.0 + 3.0 * u_outlineWidth ) ) { float gg = gray - 0.2; gl_FragColor = vec4( c * gg ) + vec4( 0,0,0, 0.2 ); }
> -// if( dist < ( radius + 0.0 + 2.0 * u_outlineWidth ) ) { float gg = gray - 0.1; gl_FragColor = vec4( c * gg ) + vec4( 0,0,0, 0.1 ); }
> -// if( dist < ( radius + 0.0 + 1.0 * u_outlineWidth ) ) { float gg = gray - 0.0; gl_FragColor = vec4( c * gg ) + vec4( 0,0,0, 0.0 ); }
> -//
> -// // // Debug: colored outline only
> -// // c.a=1.0;
> -// // if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.0 + 1.0 * u_outlineWidth ) ) { float gg = gray - 0.0; gl_FragColor = vec4( c ) + vec4( 0,0,0, 0.0 ); }
> -//
> -// // // Debug: Enable fade to black
> -// // float gray = 1.0;
> -// // float alpha = v_probability + 0.5;
> -// // if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.040 ) ) { float gg = gray - 0.0; gl_FragColor = vec4( white * gg ) + vec4( 0,0,0, 0.7 ); }
> -// // if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.035 ) ) { float gg = gray - 0.1; gl_FragColor = vec4( white * gg ) + vec4( 0,0,0, 0.6 ); }
> -// // if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.030 ) ) { float gg = gray - 0.2; gl_FragColor = vec4( white * gg ) + vec4( 0,0,0, 0.5 ); }
> -// // if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.025 ) ) { float gg = gray - 0.3; gl_FragColor = vec4( white * gg ) + vec4( 0,0,0, 0.4 ); }
> -// // if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.020 ) ) { float gg = gray - 0.4; gl_FragColor = vec4( white * gg ) + vec4( 0,0,0, 0.3 ); }
> -// // if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.015 ) ) { float gg = gray - 0.5; gl_FragColor = vec4( white * gg ) + vec4( 0,0,0, 0.2 ); }
> -// // if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.010 ) ) { float gg = gray - 0.7; gl_FragColor = vec4( white * gg ) + vec4( 0,0,0, 0.1 ); }
> -// // if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.005 ) ) { float gg = gray - 0.9; gl_FragColor = vec4( white * gg ) + vec4( 0,0,0, 0.0 ); }
> -//
> -// if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) > ( radius + 8 * u_outlineWidth ) ) {
> -// discard;
> -// }
> -// }
> -// else {
> -// // Debug: Enable fade to black
> -// float gray = 1.0;
> -// float alpha = v_probability + 0.5;
> -// float u_outlineWidth = 0.009;
> -// if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.0 + 8.0 * u_outlineWidth ) ) { float gg = gray - 0.9; gl_FragColor = vec4( c );}
> -// if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.0 + 7.0 * u_outlineWidth ) ) { float gg = gray - 0.7; gl_FragColor = vec4( c );}
> -// if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.0 + 6.0 * u_outlineWidth ) ) { float gg = gray - 0.5; gl_FragColor = vec4( c );}
> -// if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.0 + 5.0 * u_outlineWidth ) ) { float gg = gray - 0.4; gl_FragColor = vec4( c );}
> -// if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.0 + 4.0 * u_outlineWidth ) ) { float gg = gray - 0.3; gl_FragColor = vec4( c );}
> -// if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.0 + 3.0 * u_outlineWidth ) ) { float gg = gray - 0.2; gl_FragColor = vec4( c );}
> -// if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.0 + 2.0 * u_outlineWidth ) ) { float gg = gray - 0.1; gl_FragColor = vec4( c );}
> -// if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) < ( radius + 0.0 + 1.0 * u_outlineWidth ) ) { float gg = gray - 0.0; gl_FragColor = vec4( c );}
> -//
> -// if( distancePointLineSegment( gl_TexCoord[1].xyz, scaledFocalPoint1, scaledFocalPoint2 ) > ( radius + 8 * u_outlineWidth ) ) {
> -// discard;
> -// }
> -// }
> -//
> -// // // Draw quad and inner cricle
> -// // gl_FragColor = vec4( 1.0, 1.0, 1.0, 1.0 );
> -// // float lp = distance( gl_TexCoord[1].xyz, middlePoint_tex );
> -// // if( lp < 0.5 )
> -// // {
> -// // gl_FragColor = vec4( 0.7, 0.7, 1.0, 1.0 ); // discard;
> -// // }
> -// }
> +}
>
> - // // Draw Line and focal points
> - // if( distancePointLineSegment( gl_TexCoord[1].xyz, focalPoint1, focalPoint2 ) < 0.01 )
> - // {
> - // if( l <= 1.1 )
> - // {
> - // gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );
> - // }
> - // else if( l < 1.225 )
> - // {
> - // gl_FragColor = vec4( 0.0, 1.0, 0.0, 1.0 );
> - // }
> - // else
> - // {
> - // gl_FragColor = vec4( 0.0, 0.0, 1.0, 1.0 );
> - // }
> - // }
> - // // display middle point
> - // if( distance( gl_TexCoord[1].xyz, middlePoint_tex ) <= 0.02 )
> - // {
> - // gl_FragColor = vec4( 0.0, 1.0, 0.0, 1.0 ); // green
> - // }
> -
> - // // display new focal points
> - // if( ( distance( gl_TexCoord[1].xyz, scaledFocalPoint1 ) < 0.01 ) )
> - // {
> - // gl_FragColor = vec4( 0.0, 1.0, 1.0, 1.0 ); // cyan
> - // }
> - // if( ( distance( gl_TexCoord[1].xyz, scaledFocalPoint2 ) < 0.01 ) )
> - // {
> - // gl_FragColor = vec4( 0.0, 0.0, 1.0, 1.0 ); // blue
> - // }
> -
> - // // display evec end points
> - // if( ( distance( gl_TexCoord[1].xyz, focalPoint1 ) < 0.01 ) )
> - // {
> - // gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 ); // red
> - // }
> -
> - // if( ( distance( gl_TexCoord[1].xyz, focalPoint2 ) < 0.01 ) )
> - // {
> - // gl_FragColor = vec4( 1.0, 1.0, 0.0, 1.0 ); // yellow
> - // }
> -}
> diff -r 049641c7f75d -r 17ea4ffe7fc1 FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-uniforms.glsl
> --- a/FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-uniforms.glsl Thu Mar 26 16:13:52 2015 +0100
> +++ b/FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-uniforms.glsl Fri Mar 27 17:18:20 2015 +0100
> @@ -108,7 +108,7 @@
> /**
> * Scales the quad which is used later for the stipples.
> */
> -// uniform float u_glyphSize;
> +uniform float u_glyphSize;
>
> /**
> * Color of the fiber stipples. This will be further combined with tract probability.
> diff -r 049641c7f75d -r 17ea4ffe7fc1 FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-varyings.glsl
> --- a/FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-varyings.glsl Thu Mar 26 16:13:52 2015 +0100
> +++ b/FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-varyings.glsl Fri Mar 27 17:18:20 2015 +0100
> @@ -31,4 +31,7 @@
>
> // varying vec3 diff;
>
> -varying vec3 v_textPos;
> +varying vec3 v_probTexturePos;
> +varying vec3 v_vecTexturePos;
> +varying vec3 v_colorTexturePos;
> +
> diff -r 049641c7f75d -r 17ea4ffe7fc1 FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-vertex.glsl
> --- a/FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-vertex.glsl Thu Mar 26 16:13:52 2015 +0100
> +++ b/FiberStippleToolbox/src/fiberStipples/shaders/WFiberStipples-vertex.glsl Fri Mar 27 17:18:20 2015 +0100
> @@ -39,22 +39,12 @@
> gl_TexCoord[3] = gl_MultiTexCoord3; // for selecting quads within a single hierarchy level
>
> // compute texture coordinates from worldspace coordinates for texture access
> -// mat4 m;
> -// m[0] = vec4(0.0);
> -// m[1] = vec4(0.0);
> -// m[2] = vec4(0.0);
> -// m[3] = vec4(0.0);
> -// m[0][0]=m[1][1]=m[2][2]=m[3][3]=1.0;
> -// m[0][3]=152.315;
> - vec3 texturePosition = ( u_WorldTransform * gl_Vertex ).xyz;
> -// vec3 texturePosition = ( m * gl_Vertex ).xyz;
> - v_textPos = texturePosition;
> - texturePosition.x /= u_pixelSizeX * u_probTractSizeX;
> - texturePosition.y /= u_pixelSizeY * u_probTractSizeY;
> - texturePosition.z /= u_pixelSizeZ * u_probTractSizeZ;
> + v_probTexturePos = ( gl_TextureMatrix[ 1 ] * u_WorldTransform * gl_Vertex ).xyz;
> + v_vecTexturePos = ( gl_TextureMatrix[ 0 ] * u_WorldTransform * gl_Vertex ).xyz;
> + v_colorTexturePos = ( gl_TextureMatrix[ 2 ] * u_WorldTransform * gl_Vertex ).xyz;
>
> // get connectivity score from probTract (please not, it is already scaled between 0.0...1.0 from WDataTexture3D::createTexture
> - v_probability = texture3D( u_probTractSampler, texturePosition ).r;
> + v_probability = texture3D( u_probTractSampler, v_probTexturePos ).r;
>
> // // span quad incase of regions with high probablility
> if( v_probability > u_threshold && ( u_minRange + v_probability ) * u_maxRange * u_numDensitySlices >= gl_TexCoord[2].x + gl_TexCoord[3].x )
> _______________________________________________
> All-openwalnut-commits mailing list
> All-openwalnut-commits at lists.informatik.uni-leipzig.de
> http://lists.informatik.uni-leipzig.de/mailman/listinfo/all-openwalnut-commits
>
More information about the OpenWalnut-Dev
mailing list