MCPcopy Create free account
hub / github.com/Kitware/VTK / ShadingSingleInput

Function ShadingSingleInput

Rendering/VolumeOpenGL2/vtkVolumeShaderComposer.h:2628–3013  ·  view source on GitHub ↗

--------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

2626
2627//--------------------------------------------------------------------------
2628inline std::string ShadingSingleInput(vtkRenderer* vtkNotUsed(ren), vtkVolumeMapper* mapper,
2629 vtkVolume* vtkNotUsed(vol), vtkImageData* maskInput, vtkVolumeTexture* mask, int maskType,
2630 int noOfComponents, int independentComponents = 0)
2631{
2632 auto glMapper = vtkOpenGLGPUVolumeRayCastMapper::SafeDownCast(mapper);
2633
2634 std::string shaderStr;
2635
2636 shaderStr += std::string("\
2637 \n if (!g_skip)\
2638 \n {\
2639 \n vec4 scalar;\
2640 \n");
2641 if (vtkRectilinearGrid::SafeDownCast(mapper->GetInput()))
2642 {
2643 shaderStr += std::string("\
2644 \n // Compute IJK vertex position for current sample in the rectilinear grid\
2645 \n vec4 dataPosWorld = in_volumeMatrix[0] * in_textureDatasetMatrix[0] * vec4(g_dataPos, 1.0);\
2646 \n dataPosWorld = dataPosWorld / dataPosWorld.w;\
2647 \n dataPosWorld.w = 1.0;\
2648 \n ivec3 ijk = ivec3(0);\
2649 \n vec3 ijkTexCoord = vec3(0.0);\
2650 \n vec3 pCoords = vec3(0.0);\
2651 \n vec3 xPrev, xNext, tmp;\
2652 \n int sz = textureSize(in_coordTexs, 0);\
2653 \n vec4 dataPosWorldScaled = dataPosWorld * vec4(in_coordsScale, 1.0) +\
2654 \n vec4(in_coordsBias, 1.0);\
2655 \n for (int j = 0; j < 3; ++j)\
2656 \n {\
2657 \n xPrev = texture1D(in_coordTexs, 0.0).xyz;\
2658 \n xNext = texture1D(in_coordTexs, (in_coordTexSizes[j] - 1) / sz).xyz;\
2659 \n if (xNext[j] < xPrev[j])\
2660 \n {\
2661 \n tmp = xNext;\
2662 \n xNext = xPrev;\
2663 \n xPrev = tmp;\
2664 \n }\
2665 \n for (int i = 0; i < int(in_coordTexSizes[j]); i++)\
2666 \n {\
2667 \n xNext = texture1D(in_coordTexs, (i + 0.5) / sz).xyz;\
2668 \n if (dataPosWorldScaled[j] >= xPrev[j] && dataPosWorldScaled[j] < xNext[j])\
2669 \n {\
2670 \n ijk[j] = i - 1;\
2671 \n pCoords[j] = (dataPosWorldScaled[j] - xPrev[j]) / (xNext[j] - xPrev[j]);\
2672 \n break;\
2673 \n }\
2674 \n else if (dataPosWorldScaled[j] == xNext[j])\
2675 \n {\
2676 \n ijk[j] = i - 1;\
2677 \n pCoords[j] = 1.0;\
2678 \n break;\
2679 \n }\
2680 \n xPrev = xNext;\
2681 \n }\
2682 \n ijkTexCoord[j] = (ijk[j] + pCoords[j]) / in_coordTexSizes[j];\
2683 \n }\
2684 \n scalar = texture3D(in_volume[0], sign(in_cellSpacing[0]) * ijkTexCoord);\
2685 \n");

Callers 1

ReplaceShaderShadingMethod · 0.85

Calls 3

GetBlendModeMethod · 0.80
stringClass · 0.50
GetInputMethod · 0.45

Tested by

no test coverage detected