mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-16 17:22:55 +00:00
making the two sampler look closer
This commit is contained in:
parent
5ccf5dd5bc
commit
4f91cfded4
@ -347,9 +347,9 @@ public:
|
|||||||
|/ |/ |/
|
|/ |/ |/
|
||||||
0----------1 |__ x
|
0----------1 |__ x
|
||||||
*/
|
*/
|
||||||
vtkm::Vec3f_32 bottomLeft(0, 0, 0);
|
|
||||||
bool newCell = true;
|
bool newCell = true;
|
||||||
vtkm::Vec3f parametric{ 0, 0, 0 };
|
vtkm::Vec3f parametric{ 0, 0, 0 };
|
||||||
|
vtkm::Vec3f_32 bottomLeft(0, 0, 0);
|
||||||
|
|
||||||
vtkm::Float32 scalar0 = 0.f;
|
vtkm::Float32 scalar0 = 0.f;
|
||||||
vtkm::Float32 scalar1minus0 = 0.f;
|
vtkm::Float32 scalar1minus0 = 0.f;
|
||||||
@ -369,7 +369,6 @@ public:
|
|||||||
vtkm::Float32 maxt = vtkm::Max(parametric[0], vtkm::Max(parametric[1], parametric[2]));
|
vtkm::Float32 maxt = vtkm::Max(parametric[0], vtkm::Max(parametric[1], parametric[2]));
|
||||||
if (maxt > 1.f || mint < 0.f)
|
if (maxt > 1.f || mint < 0.f)
|
||||||
newCell = true;
|
newCell = true;
|
||||||
|
|
||||||
if (newCell)
|
if (newCell)
|
||||||
{
|
{
|
||||||
vtkm::Vec<vtkm::Id, 8> cellIndices;
|
vtkm::Vec<vtkm::Id, 8> cellIndices;
|
||||||
@ -391,6 +390,8 @@ public:
|
|||||||
scalar5minus4 = scalar5 - scalar4;
|
scalar5minus4 = scalar5 - scalar4;
|
||||||
scalar1minus0 = scalar1 - scalar0;
|
scalar1minus0 = scalar1 - scalar0;
|
||||||
scalar2minus3 = scalar2 - scalar3;
|
scalar2minus3 = scalar2 - scalar3;
|
||||||
|
|
||||||
|
newCell = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkm::Float32 lerped76 = scalar7 + parametric[0] * scalar6minus7;
|
vtkm::Float32 lerped76 = scalar7 + parametric[0] * scalar6minus7;
|
||||||
@ -412,15 +413,14 @@ public:
|
|||||||
colorIndex = 0;
|
colorIndex = 0;
|
||||||
if (colorIndex > ColorMapSize)
|
if (colorIndex > ColorMapSize)
|
||||||
colorIndex = ColorMapSize;
|
colorIndex = ColorMapSize;
|
||||||
|
|
||||||
vtkm::Vec4f_32 sampleColor = ColorMap.Get(colorIndex);
|
vtkm::Vec4f_32 sampleColor = ColorMap.Get(colorIndex);
|
||||||
|
|
||||||
//composite
|
//composite
|
||||||
sampleColor[3] *= (1.f - color[3]);
|
vtkm::Float32 alpha = sampleColor[3] * (1.f - color[3]);
|
||||||
color[0] = color[0] + sampleColor[0] * sampleColor[3];
|
color[0] = color[0] + sampleColor[0] * alpha;
|
||||||
color[1] = color[1] + sampleColor[1] * sampleColor[3];
|
color[1] = color[1] + sampleColor[1] * alpha;
|
||||||
color[2] = color[2] + sampleColor[2] * sampleColor[3];
|
color[2] = color[2] + sampleColor[2] * alpha;
|
||||||
color[3] = sampleColor[3] + color[3];
|
color[3] = alpha + color[3];
|
||||||
|
|
||||||
// terminate the ray early if it became completely opaque.
|
// terminate the ray early if it became completely opaque.
|
||||||
if (color[3] >= 1.f)
|
if (color[3] >= 1.f)
|
||||||
@ -430,7 +430,7 @@ public:
|
|||||||
distance += SampleDistance;
|
distance += SampleDistance;
|
||||||
sampleLocation = sampleLocation + SampleDistance * rayDir;
|
sampleLocation = sampleLocation + SampleDistance * rayDir;
|
||||||
|
|
||||||
// parametric coordinate with the cell for the new sample location
|
// parametric coordinate within the cell for the new sample location
|
||||||
// TODO: this is essentially a WorldToParametric coordinate transform, how can we use the rest of VTKm
|
// TODO: this is essentially a WorldToParametric coordinate transform, how can we use the rest of VTKm
|
||||||
// to do it? The goal is to abstract and remove invSpacing, which is different from Uniform and Rectilinear
|
// to do it? The goal is to abstract and remove invSpacing, which is different from Uniform and Rectilinear
|
||||||
// grid.
|
// grid.
|
||||||
@ -542,26 +542,26 @@ public:
|
|||||||
0----------1 |__ x
|
0----------1 |__ x
|
||||||
*/
|
*/
|
||||||
bool newCell = true;
|
bool newCell = true;
|
||||||
vtkm::Float32 tx = 2.f;
|
|
||||||
vtkm::Float32 ty = 2.f;
|
|
||||||
vtkm::Float32 tz = 2.f;
|
|
||||||
vtkm::Vec3f parametric{ 0, 0, 0 };
|
vtkm::Vec3f parametric{ 0, 0, 0 };
|
||||||
vtkm::Float32 scalar0 = 0.f;
|
vtkm::Float32 scalar0 = 0.f;
|
||||||
vtkm::Vec4f_32 sampleColor(0.f, 0.f, 0.f, 0.f);
|
vtkm::Vec4f_32 sampleColor(0.f, 0.f, 0.f, 0.f);
|
||||||
vtkm::Vec3f_32 bottomLeft(0.f, 0.f, 0.f);
|
vtkm::Vec3f_32 bottomLeft(0.f, 0.f, 0.f);
|
||||||
vtkm::Vec3f_32 invSpacing(0.f, 0.f, 0.f);
|
|
||||||
vtkm::Id3 cell(0, 0, 0);
|
vtkm::Id3 cell(0, 0, 0);
|
||||||
|
vtkm::Vec3f_32 invSpacing(0.f, 0.f, 0.f);
|
||||||
|
|
||||||
while (Locator.IsInside(sampleLocation) && distance < maxDistance)
|
while (Locator.IsInside(sampleLocation) && distance < maxDistance)
|
||||||
{
|
{
|
||||||
vtkm::Float32 mint = vtkm::Min(tx, vtkm::Min(ty, tz));
|
vtkm::Float32 mint = vtkm::Min(parametric[0], vtkm::Min(parametric[1], parametric[2]));
|
||||||
vtkm::Float32 maxt = vtkm::Max(tx, vtkm::Max(ty, tz));
|
vtkm::Float32 maxt = vtkm::Max(parametric[0], vtkm::Max(parametric[1], parametric[2]));
|
||||||
if (maxt > 1.f || mint < 0.f)
|
if (maxt > 1.f || mint < 0.f)
|
||||||
newCell = true;
|
newCell = true;
|
||||||
if (newCell)
|
if (newCell)
|
||||||
{
|
{
|
||||||
Locator.LocateCell(cell, sampleLocation, invSpacing, parametric);
|
Locator.LocateCell(cell, sampleLocation, invSpacing, parametric);
|
||||||
vtkm::Id cellId = Locator.GetCellIndex(cell);
|
vtkm::Id cellId = Locator.GetCellIndex(cell);
|
||||||
|
Locator.GetMinPoint(cell, bottomLeft);
|
||||||
|
|
||||||
scalar0 = vtkm::Float32(scalars.Get(cellId));
|
scalar0 = vtkm::Float32(scalars.Get(cellId));
|
||||||
vtkm::Float32 normalizedScalar = (scalar0 - MinScalar) * InverseDeltaScalar;
|
vtkm::Float32 normalizedScalar = (scalar0 - MinScalar) * InverseDeltaScalar;
|
||||||
|
|
||||||
@ -572,7 +572,6 @@ public:
|
|||||||
if (colorIndex > ColorMapSize)
|
if (colorIndex > ColorMapSize)
|
||||||
colorIndex = ColorMapSize;
|
colorIndex = ColorMapSize;
|
||||||
sampleColor = ColorMap.Get(colorIndex);
|
sampleColor = ColorMap.Get(colorIndex);
|
||||||
Locator.GetMinPoint(cell, bottomLeft);
|
|
||||||
|
|
||||||
newCell = false;
|
newCell = false;
|
||||||
}
|
}
|
||||||
@ -592,10 +591,8 @@ public:
|
|||||||
distance += SampleDistance;
|
distance += SampleDistance;
|
||||||
sampleLocation = sampleLocation + SampleDistance * rayDir;
|
sampleLocation = sampleLocation + SampleDistance * rayDir;
|
||||||
|
|
||||||
// parametric coordinate with the cell for the new sample location
|
// parametric coordinate within the cell for the new sample location
|
||||||
tx = (sampleLocation[0] - bottomLeft[0]) * invSpacing[0];
|
parametric = (sampleLocation - bottomLeft) * invSpacing;
|
||||||
ty = (sampleLocation[1] - bottomLeft[1]) * invSpacing[1];
|
|
||||||
tz = (sampleLocation[2] - bottomLeft[2]) * invSpacing[2];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
color[0] = vtkm::Min(color[0], 1.f);
|
color[0] = vtkm::Min(color[0], 1.f);
|
||||||
|
Loading…
Reference in New Issue
Block a user