Skip to content
Snippets Groups Projects
Commit 4f7d6bdc authored by Alexander Rose's avatar Alexander Rose
Browse files

fixed marker color, fixed read-from-texture

parent 126ef26a
No related branches found
No related tags found
No related merge requests found
float marker = vMarker * 256.0;
float marker = vMarker * 255.0;
if (marker > 0.1) {
if (mod(marker, 2.0) < 0.1) {
if (mod(marker, 2.0) > 0.1) {
gl_FragColor.rgb = mix(uHighlightColor, gl_FragColor.rgb, 0.3);
} else {
gl_FragColor.rgb = mix(uSelectColor, gl_FragColor.rgb, 0.3);
......
......@@ -4,9 +4,12 @@
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
float intDiv(float a, float b) { return float(int(a) / int(b)); }
float intMod(float a, float b) { return a - b * float(int(a) / int(b)); }
vec4 readFromTexture (const in sampler2D tex, const in float i, const in vec2 dim) {
float x = mod(i, dim.x);
float y = floor(i / dim.x);
float x = intMod(i, dim.x);
float y = floor(intDiv(i, dim.x));
vec2 uv = (vec2(x, y) + 0.5) / dim;
return texture2D(tex, uv);
}
......
......@@ -5,20 +5,19 @@
* @author Michael Krone <michael.krone@uni-tuebingen.de>
*/
// TODO workaround due to some kind of GPU quirk
float myMod(float a, float b) { return a - b * float(int(a) / int(b)); }
float myDiv(float a, float b) { return float(int(a) / int(b)); }
float intDiv(float a, float b) { return float(int(a) / int(b)); }
float intMod(float a, float b) { return a - b * float(int(a) / int(b)); }
vec4 texture3dFrom2dLinear(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) {
float zSlice0 = floor(pos.z * gridDim.z);
float column0 = myMod(zSlice0 * gridDim.x, texDim.x) / gridDim.x;
float row0 = floor(myDiv(zSlice0 * gridDim.x, texDim.x));
float column0 = intMod(zSlice0 * gridDim.x, texDim.x) / gridDim.x;
float row0 = floor(intDiv(zSlice0 * gridDim.x, texDim.x));
vec2 coord0 = (vec2(column0 * gridDim.x, row0 * gridDim.y) + (pos.xy * gridDim.xy)) / texDim;
vec4 color0 = texture2D(tex, coord0);
float zSlice1 = zSlice0 + 1.0;
float column1 = myMod(zSlice1 * gridDim.x, texDim.x) / gridDim.x;
float row1 = floor(myDiv(zSlice1 * gridDim.x, texDim.x));
float column1 = intMod(zSlice1 * gridDim.x, texDim.x) / gridDim.x;
float row1 = floor(intDiv(zSlice1 * gridDim.x, texDim.x));
vec2 coord1 = (vec2(column1 * gridDim.x, row1 * gridDim.y) + (pos.xy * gridDim.xy)) / texDim;
vec4 color1 = texture2D(tex, coord1);
......
......@@ -5,14 +5,13 @@
* @author Michael Krone <michael.krone@uni-tuebingen.de>
*/
// TODO workaround due to some kind of GPU quirk
float myMod(float a, float b) { return a - b * float(int(a) / int(b)); }
float myDiv(float a, float b) { return float(int(a) / int(b)); }
float intDiv(float a, float b) { return float(int(a) / int(b)); }
float intMod(float a, float b) { return a - b * float(int(a) / int(b)); }
vec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) {
float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice
float column = myMod(zSlice * gridDim.x, texDim.x) / gridDim.x;
float row = floor(myDiv(zSlice * gridDim.x, texDim.x));
float column = intMod(zSlice * gridDim.x, texDim.x) / gridDim.x;
float row = floor(intDiv(zSlice * gridDim.x, texDim.x));
vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / texDim;
return texture2D(tex, coord);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment