Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

texture3d.frag 3.39 KB
Newer Older
1
2
// ================================================================================================
// 
schultezub's avatar
schultezub committed
3
// This file is part of the CAMPVis Software Framework.
4
// 
5
// If not explicitly stated otherwise: Copyright (C) 2012-2014, all rights reserved,
schultezub's avatar
schultezub committed
6
//      Christian Schulte zu Berge <christian.szb@in.tum.de>
7
//      Chair for Computer Aided Medical Procedures
8
9
//      Technische Universitaet Muenchen
//      Boltzmannstr. 3, 85748 Garching b. Muenchen, Germany
10
// 
schultezub's avatar
schultezub committed
11
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
12
// 
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
// 
// ================================================================================================

schultezub's avatar
schultezub committed
25
26
// TODO: implement coordinate transformation using a trafo matrix?

27
struct TextureParameters3D {
schultezub's avatar
schultezub committed
28
29
30
    // Texture size
    vec3 _size;
    vec3 _sizeRCP;
31

32
33
34
    // Number of channels
    int _numChannels;

35
36
37
    // Voxel spacing
    vec3 _voxelSize;
    vec3 _voxelSizeRCP;
38
39
40

    // Transformation matrices
    mat4 _textureToWorldMatrix;
41
    mat4 _worldToTextureMatrix;
schultezub's avatar
schultezub committed
42
43
};

44
45
46
47
48
49
50
51
52
53
54
/**
 * Transforms texture coordinates for texture \a tex to world coordinates using the texture's
 * texture-to-world matrix.
 * \param	texParams   TextureParameters3D struct with texture for lookup
 * \param   texCoords   texture coordinates
 * \return  \a texCoords transformes to woorld coordinates.
 */
vec4 textureToWorld(in TextureParameters3D texParams, in vec4 texCoords) {
    return texParams._textureToWorldMatrix * texCoords;
}

55
56
57
/**
 * Transforms texture coordinates for texture \a tex to world coordinates using the texture's
 * texture-to-world matrix.
58
 * \param	texParams   TextureParameters3D struct with texture for lookup
59
60
61
 * \param   texCoords   texture coordinates
 * \return  \a texCoords transformes to woorld coordinates.
 */
62
63
64
vec3 textureToWorld(in TextureParameters3D texParams, in vec3 texCoords) {
    vec4 v = textureToWorld(texParams, vec4(texCoords, 1.0));
    return v.xyz;
65
66
67
68
69
70
71
72
73
74
75
}

/**
 * Transforms world coordinates for texture \a tex to texture coordinates using the texture's
 * world-to-texture matrix.
 * \param	texParams   TextureParameters3D struct with texture for lookup
 * \param   worldCoords world coordinates
 * \return  \a texCoords transformes to texture coordinates.
 */
vec4 worldToTexture(in TextureParameters3D texParams, in vec4 worldCoords) {
    return texParams._worldToTextureMatrix * worldCoords;
76
77
}

78
79
80
81
82
83
84
85
/**
 * Transforms world coordinates for texture \a tex to texture coordinates using the texture's
 * world-to-texture matrix.
 * \param	texParams   TextureParameters3D struct with texture for lookup
 * \param   worldCoords world coordinates
 * \return  \a texCoords transformes to texture coordinates.
 */
vec4 worldToTexture(in TextureParameters3D texParams, in vec3 worldCoords) {
86
    return worldToTexture(texParams, vec4(worldCoords, 1.0));
87
}