Skip to content

Commit 17dd7a4

Browse files
committedJun 12, 2024·
No longer using color bias to highlight selected elements because it depends on background color. Only mix un-selected elements with background color so they get dimmed
1 parent e70e3a9 commit 17dd7a4

File tree

12 files changed

+20
-52
lines changed

12 files changed

+20
-52
lines changed
 

‎modules/opengl-commons/src/main/java/org/gephi/viz/engine/util/gl/Constants.java

-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public class Constants {
3939
public static final String UNIFORM_NAME_BACKGROUND_COLOR = "backgroundColor";
4040
public static final String UNIFORM_NAME_SIZE_MULTIPLIER = "sizeMultiplier";
4141
public static final String UNIFORM_NAME_COLOR_LIGHTEN_FACTOR = "colorLightenFactor";
42-
public static final String UNIFORM_NAME_COLOR_BIAS = "colorBias";
4342
public static final String UNIFORM_NAME_COLOR_MULTIPLIER = "colorMultiplier";
4443

4544
//Rendering order:

‎modules/opengl-commons/src/main/resources/org/gephi/viz-engine/shaders/edge/edge-line-directed.vert

+2-7
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@
1010

1111
uniform mat4 mvp;
1212
//#if with_selection
13-
//#if selected
14-
uniform float colorBias;
15-
uniform float colorMultiplier;
16-
//#else
13+
//#if !selected
1714
uniform vec4 backgroundColor;
1815
uniform float colorLightenFactor;
1916
//#endif
@@ -60,9 +57,7 @@ void main() {
6057
color = color / 255.0;
6158

6259
//#if with_selection
63-
//#if selected
64-
color.rgb = colorBias + color.rgb * colorMultiplier;
65-
//#else
60+
//#if !selected
6661
color.rgb = mix(color.rgb, backgroundColor.rgb, colorLightenFactor);
6762
//#endif
6863
//#endif

‎modules/opengl-commons/src/main/resources/org/gephi/viz-engine/shaders/edge/edge-line-undirected.vert

+2-7
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@
99

1010
uniform mat4 mvp;
1111
//#if with_selection
12-
//#if selected
13-
uniform float colorBias;
14-
uniform float colorMultiplier;
15-
//#else
12+
//#if !selected
1613
uniform vec4 backgroundColor;
1714
uniform float colorLightenFactor;
1815
//#endif
@@ -59,9 +56,7 @@ void main() {
5956
color = color / 255.0;
6057

6158
//#if with_selection
62-
//#if selected
63-
color.rgb = colorBias + color.rgb * colorMultiplier;
64-
//#else
59+
//#if !selected
6560
color.rgb = mix(color.rgb, backgroundColor.rgb, colorLightenFactor);
6661
//#endif
6762
//#endif

‎modules/opengl-commons/src/main/resources/org/gephi/viz-engine/shaders/node/node.vert

+2-4
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ uniform mat4 mvp;
1111
uniform float sizeMultiplier;
1212
uniform float colorMultiplier;
1313
//#if with_selection
14-
//#if selected
15-
uniform float colorBias;
16-
//#else
14+
//#if !selected
1715
uniform vec4 backgroundColor;
1816
uniform float colorLightenFactor;
1917
//#endif
@@ -35,7 +33,7 @@ void main() {
3533

3634
//#if with_selection
3735
//#if selected
38-
color.rgb = colorBias + color.rgb * colorMultiplier;
36+
color.rgb = color.rgb * colorMultiplier;
3937
//#else
4038
color.rgb = color.rgb * colorMultiplier;
4139
color.rgb = mix(color.rgb, backgroundColor.rgb, colorLightenFactor);

‎modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/models/EdgeLineModelDirected.java

+3-6
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ private void initProgram(GL2ES2 gl) {
7575

7676
programWithSelectionSelected = new GLShaderProgram(SHADERS_ROOT, SHADERS_EDGE_LINE_SOURCE_WITH_SELECTION_SELECTED, SHADERS_EDGE_LINE_SOURCE)
7777
.addUniformName(UNIFORM_NAME_MODEL_VIEW_PROJECTION)
78-
.addUniformName(UNIFORM_NAME_COLOR_BIAS)
7978
.addUniformName(UNIFORM_NAME_COLOR_MULTIPLIER)
8079
.addUniformName(UNIFORM_NAME_EDGE_SCALE_MIN)
8180
.addUniformName(UNIFORM_NAME_EDGE_SCALE_MAX)
@@ -131,9 +130,9 @@ public void useProgram(GL2ES2 gl, float[] mvpFloats, float scale, float minWeigh
131130
prepareProgramData(gl, mvpFloats, scale, minWeight, maxWeight);
132131
}
133132

134-
public void useProgramWithSelectionSelected(GL2ES2 gl, float[] mvpFloats, float scale, float minWeight, float maxWeight, float colorBias, float colorMultiplier) {
133+
public void useProgramWithSelectionSelected(GL2ES2 gl, float[] mvpFloats, float scale, float minWeight, float maxWeight) {
135134
programWithSelectionSelected.use(gl);
136-
prepareProgramDataWithSelectionSelected(gl, mvpFloats, scale, minWeight, maxWeight, colorBias, colorMultiplier);
135+
prepareProgramDataWithSelectionSelected(gl, mvpFloats, scale, minWeight, maxWeight);
137136
}
138137

139138
public void useProgramWithSelectionUnselected(GL2ES2 gl, float[] mvpFloats, float scale, float minWeight, float maxWeight, float[] backgroundColorFloats, float colorLightenFactor) {
@@ -154,10 +153,8 @@ private void prepareProgramData(GL2ES2 gl, float[] mvpFloats, float scale, float
154153
}
155154
}
156155

157-
private void prepareProgramDataWithSelectionSelected(GL2ES2 gl, float[] mvpFloats, float scale, float minWeight, float maxWeight, float colorBias, float colorMultiplier) {
156+
private void prepareProgramDataWithSelectionSelected(GL2ES2 gl, float[] mvpFloats, float scale, float minWeight, float maxWeight) {
158157
gl.glUniformMatrix4fv(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_MODEL_VIEW_PROJECTION), 1, false, mvpFloats, 0);
159-
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_COLOR_BIAS), colorBias);
160-
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_COLOR_MULTIPLIER), colorMultiplier);
161158
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_EDGE_SCALE_MIN), EDGE_SCALE_MIN * scale);
162159
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_EDGE_SCALE_MAX), EDGE_SCALE_MAX * scale);
163160
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_MIN_WEIGHT), minWeight);

‎modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/models/EdgeLineModelUndirected.java

+3-7
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,6 @@ private void initProgram(GL2ES2 gl) {
7979

8080
programWithSelectionSelected = new GLShaderProgram(SHADERS_ROOT, SHADERS_EDGE_LINE_SOURCE_WITH_SELECTION_SELECTED, SHADERS_EDGE_LINE_SOURCE)
8181
.addUniformName(UNIFORM_NAME_MODEL_VIEW_PROJECTION)
82-
.addUniformName(UNIFORM_NAME_COLOR_BIAS)
83-
.addUniformName(UNIFORM_NAME_COLOR_MULTIPLIER)
8482
.addUniformName(UNIFORM_NAME_EDGE_SCALE_MIN)
8583
.addUniformName(UNIFORM_NAME_EDGE_SCALE_MAX)
8684
.addUniformName(UNIFORM_NAME_MIN_WEIGHT)
@@ -137,9 +135,9 @@ public void useProgram(GL2ES2 gl, float[] mvpFloats, float scale, float minWeigh
137135
prepareProgramData(gl, mvpFloats, scale, minWeight, maxWeight);
138136
}
139137

140-
public void useProgramWithSelectionSelected(GL2ES2 gl, float[] mvpFloats, float scale, float minWeight, float maxWeight, float colorBias, float colorMultiplier) {
138+
public void useProgramWithSelectionSelected(GL2ES2 gl, float[] mvpFloats, float scale, float minWeight, float maxWeight) {
141139
programWithSelectionSelected.use(gl);
142-
prepareProgramDataWithSelectionSelected(gl, mvpFloats, scale, minWeight, maxWeight, colorBias, colorMultiplier);
140+
prepareProgramDataWithSelectionSelected(gl, mvpFloats, scale, minWeight, maxWeight);
143141
}
144142

145143
public void useProgramWithSelectionUnselected(GL2ES2 gl, float[] mvpFloats, float scale, float minWeight, float maxWeight, float[] backgroundColorFloats, float colorLightenFactor) {
@@ -164,10 +162,8 @@ private void prepareProgramData(GL2ES2 gl, float[] mvpFloats, float scale, float
164162
}
165163
}
166164

167-
private void prepareProgramDataWithSelectionSelected(GL2ES2 gl, float[] mvpFloats, float scale, float minWeight, float maxWeight, float colorBias, float colorMultiplier) {
165+
private void prepareProgramDataWithSelectionSelected(GL2ES2 gl, float[] mvpFloats, float scale, float minWeight, float maxWeight) {
168166
gl.glUniformMatrix4fv(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_MODEL_VIEW_PROJECTION), 1, false, mvpFloats, 0);
169-
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_COLOR_BIAS), colorBias);
170-
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_COLOR_MULTIPLIER), colorMultiplier);
171167
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_EDGE_SCALE_MIN), EDGE_SCALE_MIN * scale);
172168
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_EDGE_SCALE_MAX), EDGE_SCALE_MAX * scale);
173169
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_MIN_WEIGHT), minWeight);

‎modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/models/NodeDiskModel.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import static org.gephi.viz.engine.util.gl.Constants.SHADER_SIZE_LOCATION;
1717
import static org.gephi.viz.engine.util.gl.Constants.SHADER_VERT_LOCATION;
1818
import static org.gephi.viz.engine.util.gl.Constants.UNIFORM_NAME_BACKGROUND_COLOR;
19-
import static org.gephi.viz.engine.util.gl.Constants.UNIFORM_NAME_COLOR_BIAS;
2019
import static org.gephi.viz.engine.util.gl.Constants.UNIFORM_NAME_COLOR_LIGHTEN_FACTOR;
2120
import static org.gephi.viz.engine.util.gl.Constants.UNIFORM_NAME_COLOR_MULTIPLIER;
2221
import static org.gephi.viz.engine.util.gl.Constants.UNIFORM_NAME_MODEL_VIEW_PROJECTION;
@@ -62,7 +61,6 @@ public void initGLPrograms(GL2ES2 gl) {
6261
programWithSelectionSelected = new GLShaderProgram(SHADERS_ROOT, SHADERS_NODE_CIRCLE_SOURCE_WITH_SELECTION_SELECTED, SHADERS_NODE_CIRCLE_SOURCE)
6362
.addUniformName(UNIFORM_NAME_MODEL_VIEW_PROJECTION)
6463
.addUniformName(UNIFORM_NAME_SIZE_MULTIPLIER)
65-
.addUniformName(UNIFORM_NAME_COLOR_BIAS)
6664
.addUniformName(UNIFORM_NAME_COLOR_MULTIPLIER)
6765
.addAttribLocation(ATTRIB_NAME_VERT, SHADER_VERT_LOCATION)
6866
.addAttribLocation(ATTRIB_NAME_POSITION, SHADER_POSITION_LOCATION)
@@ -101,13 +99,12 @@ public void drawIndirect(GL4 gl, int instanceCount, int instancesOffset) {
10199
gl.glMultiDrawArraysIndirect(GL_TRIANGLES, (long) instancesOffset * INDIRECT_DRAW_COMMAND_BYTES, instanceCount, 0);
102100
}
103101

104-
public void useProgramWithSelectionSelected(GL2ES2 gl, float[] mvpFloats, float sizeMultiplier, float colorBias, float colorMultiplier) {
102+
public void useProgramWithSelectionSelected(GL2ES2 gl, float[] mvpFloats, float sizeMultiplier, float colorMultiplier) {
105103
//Circle:
106104
programWithSelectionSelected.use(gl);
107105

108106
gl.glUniformMatrix4fv(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_MODEL_VIEW_PROJECTION), 1, false, mvpFloats, 0);
109107
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_SIZE_MULTIPLIER), sizeMultiplier);
110-
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_COLOR_BIAS), colorBias);
111108
gl.glUniform1f(programWithSelectionSelected.getUniformLocation(UNIFORM_NAME_COLOR_MULTIPLIER), colorMultiplier);
112109
}
113110

‎modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/arrays/ArrayDrawNodeData.java

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public void update(VizEngine engine, GraphIndexImpl spatialIndex) {
4545

4646
public void drawArrays(GL2ES2 gl, RenderingLayer layer, VizEngine engine, float[] mvpFloats) {
4747
//First we draw outside circle (for border) and then inside circle:
48+
//FIXME: all node parts should be drawn at the same time, otherwise internal parts of nodes can cover external parts!
4849
drawArraysInternal(gl, layer, engine, mvpFloats, true);
4950
drawArraysInternal(gl, layer, engine, mvpFloats, false);
5051
}

‎modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/common/AbstractEdgeData.java

+3-13
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ protected int setupShaderProgramForRenderingLayerUndirected(final GL2ES2 gl,
133133
);
134134

135135
if (someSelection) {
136-
if (someSelection && edgeSelectionColor) {
136+
if (edgeSelectionColor) {
137137
lineModelUndirected.useProgram(
138138
gl,
139139
mvpFloats,
@@ -142,17 +142,12 @@ protected int setupShaderProgramForRenderingLayerUndirected(final GL2ES2 gl,
142142
maxWeight
143143
);
144144
} else {
145-
final float colorBias = 0.5f;
146-
final float colorMultiplier = 0.5f;
147-
148145
lineModelUndirected.useProgramWithSelectionSelected(
149146
gl,
150147
mvpFloats,
151148
edgeScale,
152149
minWeight,
153-
maxWeight,
154-
colorBias,
155-
colorMultiplier
150+
maxWeight
156151
);
157152
}
158153
} else {
@@ -231,17 +226,12 @@ protected int setupShaderProgramForRenderingLayerDirected(final GL2ES2 gl,
231226
maxWeight
232227
);
233228
} else {
234-
final float colorBias = 0.5f;
235-
final float colorMultiplier = 0.5f;
236-
237229
lineModelDirected.useProgramWithSelectionSelected(
238230
gl,
239231
mvpFloats,
240232
edgeScale,
241233
minWeight,
242-
maxWeight,
243-
colorBias,
244-
colorMultiplier
234+
maxWeight
245235
);
246236
}
247237
} else {

‎modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/common/AbstractNodeData.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -190,13 +190,11 @@ protected int setupShaderProgramForRenderingLayer(final GL2ES2 gl,
190190
instanceCount = instanceCounter.selectedCountToDraw;
191191

192192
if (someSelection) {
193-
final float colorBias = isRenderingOutsideCircle ? 0f : 0.5f;
194-
final float colorMultiplier = isRenderingOutsideCircle ? 1f : 0.5f;
193+
final float colorMultiplier = isRenderingOutsideCircle ? NODER_BORDER_DARKEN_FACTOR : 1f;
195194
diskModel.useProgramWithSelectionSelected(
196195
gl,
197196
mvpFloats,
198197
sizeMultiplier,
199-
colorBias,
200198
colorMultiplier
201199
);
202200
} else {

‎modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/indirect/IndirectNodeData.java

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public void update(VizEngine engine, GraphIndexImpl spatialIndex) {
5252

5353
public void drawIndirect(GL4 gl, RenderingLayer layer, VizEngine engine, float[] mvpFloats) {
5454
//First we draw outside circle (for border) and then inside circle:
55+
//FIXME: all node parts should be drawn at the same time, otherwise internal parts of nodes can cover external parts!
5556
drawIndirectInternal(gl, layer, engine, mvpFloats, true);
5657
drawIndirectInternal(gl, layer, engine, mvpFloats, false);
5758
}

‎modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/instanced/InstancedNodeData.java

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public void update(VizEngine engine, GraphIndexImpl spatialIndex) {
5353

5454
public void drawInstanced(GL2ES3 gl, RenderingLayer layer, VizEngine engine, float[] mvpFloats) {
5555
//First we draw outside circle (for border) and then inside circle:
56+
//FIXME: all node parts should be drawn at the same time, otherwise internal parts of nodes can cover external parts!
5657
drawInstancedInternal(gl, layer, engine, mvpFloats, true);
5758
drawInstancedInternal(gl, layer, engine, mvpFloats, false);
5859
}

0 commit comments

Comments
 (0)
Please sign in to comment.