4 * Copyright (C) 2010 - 2016 Leonid Kostrykin
6 * Chair of Medical Engineering (mediTEC)
7 * RWTH Aachen University
13 * Copyright (C) 2021 - 2025 Leonid Kostrykin
17uniform sampler3D intensities;
18uniform sampler1D colorMap;
19uniform float minIntensity;
20uniform float maxIntensity;
21uniform mat4 modelTexture;
23in vec4 modelSpaceCoordinates;
25layout( location = 0 ) out vec4 _gl_FragColor;
30// ----------------------------------------------------------------------------------
32// ----------------------------------------------------------------------------------
34float intensityAt( vec3 p )
36 return texture( intensities, p ).r;
40// ----------------------------------------------------------------------------------
42// ----------------------------------------------------------------------------------
46 if( abs( modelSpaceCoordinates.x ) > 0.5 || abs( modelSpaceCoordinates.y ) > 0.5 || abs( modelSpaceCoordinates.z ) > 0.5 )
51 vec4 textureCoordinates = modelTexture * modelSpaceCoordinates;
52 float intensity = intensityAt( textureCoordinates.xyz );
54 /* Apply intensity clipping.
57 ( intensity - minIntensity + EPS ) / ( maxIntensity - minIntensity + EPS )
60 /* Query color in `colorMap` and write result.
62 _gl_FragColor = vec4( texture( colorMap, intensity ).rgb, 1 );