|
54 | 54 | import com.jme3.renderer.TextureUnitException; |
55 | 55 | import com.jme3.renderer.queue.RenderQueue.Bucket; |
56 | 56 | import com.jme3.scene.Geometry; |
| 57 | +import com.jme3.scene.GlMesh; |
57 | 58 | import com.jme3.shader.*; |
58 | 59 | import com.jme3.shader.bufferobject.BufferObject; |
59 | 60 | import com.jme3.texture.*; |
|
64 | 65 | import com.jme3.vulkan.commands.CommandBuffer; |
65 | 66 | import com.jme3.vulkan.frames.VersionedResource; |
66 | 67 | import com.jme3.vulkan.pipelines.Pipeline; |
67 | | -import org.lwjgl.opengl.GL45; |
68 | 68 |
|
69 | 69 | import java.io.IOException; |
70 | 70 | import java.util.Collection; |
@@ -837,7 +837,15 @@ public void setVector4(String name, Vector4f value) { |
837 | 837 | * @throws UnsupportedOperationException If no candidate technique supports |
838 | 838 | * the system capabilities. |
839 | 839 | */ |
840 | | - public void selectTechnique(String name, final RenderManager renderManager) { |
| 840 | + public Technique selectTechnique(String name, final RenderManager renderManager) { |
| 841 | + // if null, use the currently selected technique, or the default technique |
| 842 | + if (name == null || technique == null) { |
| 843 | + if (technique != null) { |
| 844 | + return technique; |
| 845 | + } else { |
| 846 | + name = TechniqueDef.DEFAULT_TECHNIQUE_NAME; |
| 847 | + } |
| 848 | + } |
841 | 849 | // check if already created |
842 | 850 | Technique tech = techniques.get(name); |
843 | 851 | // When choosing technique, we choose one that |
@@ -876,14 +884,16 @@ public void selectTechnique(String name, final RenderManager renderManager) { |
876 | 884 | } else if (technique == tech) { |
877 | 885 | // attempting to switch to an already |
878 | 886 | // active technique. |
879 | | - return; |
| 887 | + return technique; |
880 | 888 | } |
881 | 889 |
|
882 | 890 | technique = tech; |
883 | 891 | tech.notifyTechniqueSwitched(); |
884 | 892 |
|
885 | 893 | // shader was changed |
886 | 894 | sortingId = -1; |
| 895 | + |
| 896 | + return technique; |
887 | 897 | } |
888 | 898 |
|
889 | 899 | private void applyOverrides(Renderer renderer, Shader shader, SafeArrayList<MatParamOverride> overrides, BindUnits bindUnits) { |
@@ -947,8 +957,9 @@ private void updateShaderMaterialParameter(Renderer renderer, VarType type, Shad |
947 | 957 | } |
948 | 958 | } |
949 | 959 |
|
950 | | - private BindUnits updateShaderMaterialParameters(Renderer renderer, Shader shader, |
951 | | - SafeArrayList<MatParamOverride> worldOverrides, SafeArrayList<MatParamOverride> forcedOverrides) { |
| 960 | + public BindUnits updateShaderMaterialParameters(Renderer renderer, Shader shader, |
| 961 | + SafeArrayList<MatParamOverride> worldOverrides, |
| 962 | + SafeArrayList<MatParamOverride> forcedOverrides) { |
952 | 963 |
|
953 | 964 | bindUnits.textureUnit = 0; |
954 | 965 | bindUnits.bufferUnit = 0; |
@@ -1015,6 +1026,7 @@ private boolean isNormalsBackward(Vector3f scalar) { |
1015 | 1026 | * @param renderManager The render manager to preload for |
1016 | 1027 | * @param geometry to determine the applicable parameter overrides, if any |
1017 | 1028 | */ |
| 1029 | + @Deprecated // this isn't used anywhere... |
1018 | 1030 | public void preload(RenderManager renderManager, Geometry geometry) { |
1019 | 1031 | if (technique == null) { |
1020 | 1032 | selectTechnique(TechniqueDef.DEFAULT_TECHNIQUE_NAME, renderManager); |
@@ -1153,7 +1165,7 @@ public void render(Geometry geometry, LightList lights, RenderManager renderMana |
1153 | 1165 | resetUniformsNotSetByCurrent(shader); |
1154 | 1166 |
|
1155 | 1167 | // Delegate rendering to the technique |
1156 | | - technique.render(renderManager, shader, geometry, lights, units); |
| 1168 | + technique.render(renderManager, shader, geometry, (GlMesh)geometry.getMesh(), lights, units); |
1157 | 1169 | } |
1158 | 1170 |
|
1159 | 1171 | @Override |
|
0 commit comments