pointpredicateevaluator.frag 2.68 KB
Newer Older
1
2
3
4
// ================================================================================================
// 
// This file is part of the CAMPVis Software Framework.
// 
5
// If not explicitly stated otherwise: Copyright (C) 2012-2014, all rights reserved,
6
7
//      Christian Schulte zu Berge <christian.szb@in.tum.de>
//      Chair for Computer Aided Medical Procedures
8
9
10
//      Technische Universitaet Muenchen
//      Boltzmannstr. 3, 85748 Garching b. Muenchen, Germany
// 
11
12
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
// 
13
14
15
16
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 
// except in compliance with the License. You may obtain a copy of the License at
// 
// http://www.apache.org/licenses/LICENSE-2.0
17
// 
18
19
20
21
// Unless required by applicable law or agreed to in writing, software distributed under the 
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
// either express or implied. See the License for the specific language governing permissions 
// and limitations under the License.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// 
// ================================================================================================

in vec3 ex_TexCoord;
out uint out_Mask;

#include "tools/gradient.frag"
#include "tools/texture3d.frag"


// volume
uniform sampler3D _volume;
uniform TextureParameters3D _volumeTextureParams;

uniform sampler3D _labels;
uniform TextureParameters3D _labelsParams;
uniform sampler3D _snr;
uniform TextureParameters3D _snrParams;
uniform sampler3D _vesselness;
uniform TextureParameters3D _vesselnessParams;
uniform sampler3D _confidence;
uniform TextureParameters3D _confidenceParams;

uniform float _zTexCoord;
uniform vec3 _scanningDirection = vec3(0.0, 1.0, 0.0);
uniform vec3 _cameraPosition = vec3(1.0, 1.0, 1.0);

void main() {
    vec3 position = vec3(ex_TexCoord.xy, _zTexCoord); 

    float intensity = texture(_volume, position).x;
    uint label = uint(texture(_labels, position).x * 255);
    float snr = texture(_snr, position).x;
    float vesselness = texture(_vesselness, position).x;
    float confidence = texture(_confidence, position).x;

    vec3 gradient = computeGradientCentralDifferencesLod(_volume, _volumeTextureParams, position, 0.5);
    float gradientAngle = acos(dot(normalize(gradient), normalize(_scanningDirection))) * 57.29577951308;
    vec3 worldPosition = textureToWorld(_volumeTextureParams, position).xyz;
    float viewAngle = acos(dot(normalize(gradient), normalize(worldPosition - _cameraPosition))) * 57.29577951308;

    //out_Mask = 0xFFFFFFFF;
    out_Mask = computePredicateBitfield(intensity, length(gradient) * 10.0, gradientAngle, viewAngle, snr, vesselness, confidence, label);
}