mirror of
https://github.com/OPM/ResInsight.git
synced 2025-01-08 07:03:25 -06:00
84 lines
2.6 KiB
GLSL
84 lines
2.6 KiB
GLSL
|
|
varying vec2 v_localCoord; // Normalized coordinates along quad
|
|
|
|
varying vec4 v_cellColor; // cell face color
|
|
|
|
varying vec4 v_bottomColor; // color along edge v0-v1
|
|
varying vec4 v_rightColor; // color along edge v1-v2
|
|
varying vec4 v_topColor; // color along edge v2-v3
|
|
varying vec4 v_leftColor; // color along edge v3-v0
|
|
|
|
|
|
void colormapCorners(in vec2 coord, inout vec4 color)
|
|
{
|
|
if (coord.x < 0.2 && coord.y < 0.2) // lower, left corner
|
|
{
|
|
if (v_bottomColor == color) color = v_leftColor;
|
|
else if (v_leftColor == color) color = v_bottomColor;
|
|
else if (coord.x > coord.y) color = v_bottomColor;
|
|
else color = v_leftColor;
|
|
}
|
|
else if (coord.x > 0.8 && coord.y < 0.2) // lower, right corner
|
|
{
|
|
float x = 1.0 - coord.x;
|
|
if (v_rightColor == color) color = v_bottomColor;
|
|
else if (v_bottomColor == color) color = v_rightColor;
|
|
else if (x < coord.y) color = v_rightColor;
|
|
else color = v_bottomColor;
|
|
}
|
|
else if (coord.x > 0.8 && coord.y > 0.8) // upper, right corner
|
|
{
|
|
if (v_rightColor == color) color = v_topColor;
|
|
else if (v_topColor == color) color = v_rightColor;
|
|
else if (coord.x > coord.y) color = v_rightColor;
|
|
else color = v_topColor;
|
|
}
|
|
else if (coord.x < 0.2 && coord.y > 0.8) // upper, left corner
|
|
{
|
|
float y = 1.0 - coord.y;
|
|
|
|
if (v_topColor == color) color = v_leftColor;
|
|
else if (v_leftColor == color) color = v_topColor;
|
|
else if (coord.x > y) color = v_topColor;
|
|
else color = v_leftColor;
|
|
}
|
|
}
|
|
|
|
|
|
void colormapEdgeRegions(in vec2 coord, inout vec4 color)
|
|
{
|
|
if (coord.y < 0.2 && coord.x > 0.2 && coord.x < 0.8)
|
|
{
|
|
color = v_bottomColor;
|
|
}
|
|
else if (coord.x > 0.8 && coord.y > 0.2 && coord.y < 0.8)
|
|
{
|
|
color = v_rightColor;
|
|
}
|
|
else if (coord.y > 0.8 && coord.x > 0.2 && coord.x < 0.8)
|
|
{
|
|
color = v_topColor;
|
|
}
|
|
else if (coord.x < 0.2 && coord.y > 0.2 && coord.y < 0.8)
|
|
{
|
|
color = v_leftColor;
|
|
}
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
/// Texture 2D source fragment
|
|
//--------------------------------------------------------------------------------------------------
|
|
vec4 srcFragment()
|
|
{
|
|
vec4 color = v_cellColor; // cell color to be used for areas that are not along edges
|
|
|
|
// Performance test code
|
|
// color = 0.2 * (v_cellColor + v_bottomColor + v_rightColor + v_topColor + v_leftColor);
|
|
|
|
colormapEdgeRegions(v_localCoord, color);
|
|
colormapCorners(v_localCoord, color);
|
|
|
|
return color;
|
|
}
|