Skip to content

Commit 22618ff

Browse files
committed
fix render states merging when additionalState is not set
1 parent 56fecab commit 22618ff

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

jme3-core/src/main/java/com/jme3/material/Material.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -907,22 +907,23 @@ private BindUnits updateShaderMaterialParameters(Renderer renderer, Shader shade
907907

908908

909909
private void updateRenderState(Geometry geometry, RenderManager renderManager, Renderer renderer, TechniqueDef techniqueDef) {
910+
RenderState finalRenderState;
910911
if (renderManager.getForcedRenderState() != null) {
911-
mergedRenderState.copyFrom(renderManager.getForcedRenderState());
912+
finalRenderState = mergedRenderState.copyFrom(renderManager.getForcedRenderState());
912913
} else if (techniqueDef.getRenderState() != null) {
913-
mergedRenderState.copyFrom(RenderState.DEFAULT);
914-
techniqueDef.getRenderState().copyMergedTo(additionalState, mergedRenderState);
914+
finalRenderState = mergedRenderState.copyFrom(RenderState.DEFAULT);
915+
finalRenderState = techniqueDef.getRenderState().copyMergedTo(additionalState, finalRenderState);
915916
} else {
916-
mergedRenderState.copyFrom(RenderState.DEFAULT);
917-
RenderState.DEFAULT.copyMergedTo(additionalState, mergedRenderState);
917+
finalRenderState = mergedRenderState.copyFrom(RenderState.DEFAULT);
918+
finalRenderState = RenderState.DEFAULT.copyMergedTo(additionalState, finalRenderState);
918919
}
919920
// test if the face cull mode should be flipped before render
920-
if (mergedRenderState.isFaceCullFlippable() && isNormalsBackward(geometry.getWorldScale())) {
921-
mergedRenderState.flipFaceCull();
921+
if (finalRenderState.isFaceCullFlippable() && isNormalsBackward(geometry.getWorldScale())) {
922+
finalRenderState.flipFaceCull();
922923
}
923-
renderer.applyRenderState(mergedRenderState);
924+
renderer.applyRenderState(finalRenderState);
924925
}
925-
926+
926927
/**
927928
* Returns true if the geometry world scale indicates that normals will be backward.
928929
* @param scalar geometry world scale

jme3-core/src/main/java/com/jme3/material/RenderState.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1692,7 +1692,7 @@ public void set(RenderState state) {
16921692
* This method is more precise than {@link #set(com.jme3.material.RenderState)}.
16931693
* @param state state to copy from
16941694
*/
1695-
public void copyFrom(RenderState state) {
1695+
public RenderState copyFrom(RenderState state) {
16961696
this.applyBlendMode = state.applyBlendMode;
16971697
this.applyColorWrite = state.applyColorWrite;
16981698
this.applyCullMode = state.applyCullMode;
@@ -1734,6 +1734,7 @@ public void copyFrom(RenderState state) {
17341734
this.sfactorRGB = state.sfactorRGB;
17351735
this.stencilTest = state.stencilTest;
17361736
this.wireframe = state.wireframe;
1737+
return this;
17371738
}
17381739

17391740
@Override

0 commit comments

Comments
 (0)