Skip to content

Commit 1caefd1

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

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

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

+9-8
Original file line numberDiff line numberDiff line change
@@ -907,20 +907,21 @@ 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
}
925926

926927
/**

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)