diff --git a/engine/src/core-data/Common/MatDefs/Blur/HGaussianBlur.j3md b/engine/src/core-data/Common/MatDefs/Blur/HGaussianBlur.j3md index ddb262e91..e46ef5af1 100644 --- a/engine/src/core-data/Common/MatDefs/Blur/HGaussianBlur.j3md +++ b/engine/src/core-data/Common/MatDefs/Blur/HGaussianBlur.j3md @@ -15,7 +15,4 @@ MaterialDef Bloom { WorldViewProjectionMatrix } } - - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-data/Common/MatDefs/Blur/RadialBlur.j3md b/engine/src/core-data/Common/MatDefs/Blur/RadialBlur.j3md index 1e397fa5b..eb3a80d2a 100644 --- a/engine/src/core-data/Common/MatDefs/Blur/RadialBlur.j3md +++ b/engine/src/core-data/Common/MatDefs/Blur/RadialBlur.j3md @@ -30,7 +30,4 @@ MaterialDef Radial Blur { WorldViewProjectionMatrix } } - - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-data/Common/MatDefs/Blur/VGaussianBlur.j3md b/engine/src/core-data/Common/MatDefs/Blur/VGaussianBlur.j3md index 163f9f383..a4c127280 100644 --- a/engine/src/core-data/Common/MatDefs/Blur/VGaussianBlur.j3md +++ b/engine/src/core-data/Common/MatDefs/Blur/VGaussianBlur.j3md @@ -15,7 +15,4 @@ MaterialDef Bloom { WorldViewProjectionMatrix } } - - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-data/Common/MatDefs/Light/Deferred.j3md b/engine/src/core-data/Common/MatDefs/Light/Deferred.j3md index c386a6165..8e0b8d089 100644 --- a/engine/src/core-data/Common/MatDefs/Light/Deferred.j3md +++ b/engine/src/core-data/Common/MatDefs/Light/Deferred.j3md @@ -55,7 +55,7 @@ MaterialDef Phong Lighting Deferred { } } - Technique FixedFunc { + Technique { } } \ No newline at end of file diff --git a/engine/src/core-data/Common/MatDefs/Light/Lighting.j3md b/engine/src/core-data/Common/MatDefs/Light/Lighting.j3md index 32b1f0ea5..a41ea37ea 100644 --- a/engine/src/core-data/Common/MatDefs/Light/Lighting.j3md +++ b/engine/src/core-data/Common/MatDefs/Light/Lighting.j3md @@ -275,7 +275,7 @@ MaterialDef Phong Lighting { } } - Technique FixedFunc { + Technique { LightMode FixedPipeline } diff --git a/engine/src/core-data/Common/MatDefs/Misc/ColoredTextured.j3md b/engine/src/core-data/Common/MatDefs/Misc/ColoredTextured.j3md index dde8ea87d..6b74c3074 100644 --- a/engine/src/core-data/Common/MatDefs/Misc/ColoredTextured.j3md +++ b/engine/src/core-data/Common/MatDefs/Misc/ColoredTextured.j3md @@ -2,7 +2,7 @@ MaterialDef Colored Textured { MaterialParameters { Texture2D ColorMap - Color Color + Color Color (Color) } Technique { @@ -14,7 +14,7 @@ MaterialDef Colored Textured { } } - Technique FixedFunc { + Technique { } } \ No newline at end of file diff --git a/engine/src/core-data/Common/MatDefs/Misc/Particle.j3md b/engine/src/core-data/Common/MatDefs/Misc/Particle.j3md index 893b36391..07e7f2986 100644 --- a/engine/src/core-data/Common/MatDefs/Misc/Particle.j3md +++ b/engine/src/core-data/Common/MatDefs/Misc/Particle.j3md @@ -84,7 +84,7 @@ MaterialDef Point Sprite { } } - Technique FixedFunc { + Technique { RenderState { Blend AlphaAdditive // DepthWrite Off diff --git a/engine/src/core-data/Common/MatDefs/Misc/Sky.j3md b/engine/src/core-data/Common/MatDefs/Misc/Sky.j3md index 919309b30..515777428 100644 --- a/engine/src/core-data/Common/MatDefs/Misc/Sky.j3md +++ b/engine/src/core-data/Common/MatDefs/Misc/Sky.j3md @@ -22,6 +22,6 @@ MaterialDef Sky Plane { SPHERE_MAP : SphereMap } } - Technique FixedFunc { + Technique { } } \ No newline at end of file diff --git a/engine/src/core-data/Common/MatDefs/Misc/Unshaded.j3md b/engine/src/core-data/Common/MatDefs/Misc/Unshaded.j3md index 38c6df4e1..0637087e9 100644 --- a/engine/src/core-data/Common/MatDefs/Misc/Unshaded.j3md +++ b/engine/src/core-data/Common/MatDefs/Misc/Unshaded.j3md @@ -3,8 +3,8 @@ MaterialDef Unshaded { MaterialParameters { Texture2D ColorMap Texture2D LightMap - Color Color ( Color ) - Boolean VertexColor + Color Color (Color) + Boolean VertexColor (UseVertexColor) Boolean SeparateTexCoord // Texture of the glowing parts of the material @@ -30,6 +30,9 @@ MaterialDef Unshaded { } } + Technique { + } + Technique PreNormalPass { VertexShader GLSL100 : Common/MatDefs/SSAO/normal.vert @@ -42,9 +45,7 @@ MaterialDef Unshaded { } RenderState { - } - } @@ -63,8 +64,4 @@ MaterialDef Unshaded { HAS_GLOWCOLOR : GlowColor } } - - Technique FixedFunc { - } - } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Post/BloomExtract.j3md b/engine/src/core-effects/Common/MatDefs/Post/BloomExtract.j3md index 76614ccc7..46817698c 100644 --- a/engine/src/core-effects/Common/MatDefs/Post/BloomExtract.j3md +++ b/engine/src/core-effects/Common/MatDefs/Post/BloomExtract.j3md @@ -37,7 +37,4 @@ MaterialDef Bloom { DO_EXTRACT : Extract } } - - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Post/CartoonEdge.j3md b/engine/src/core-effects/Common/MatDefs/Post/CartoonEdge.j3md index 687193e8e..0d190291f 100644 --- a/engine/src/core-effects/Common/MatDefs/Post/CartoonEdge.j3md +++ b/engine/src/core-effects/Common/MatDefs/Post/CartoonEdge.j3md @@ -42,7 +42,4 @@ MaterialDef Cartoon Edge { Resolution } } - - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Post/CrossHatch.j3md b/engine/src/core-effects/Common/MatDefs/Post/CrossHatch.j3md index bf850dc9f..460c96a1e 100644 --- a/engine/src/core-effects/Common/MatDefs/Post/CrossHatch.j3md +++ b/engine/src/core-effects/Common/MatDefs/Post/CrossHatch.j3md @@ -34,8 +34,4 @@ MaterialDef CrossHatch { WorldViewProjectionMatrix } } - - Technique FixedFunc { - } - } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Post/DepthOfField.j3md b/engine/src/core-effects/Common/MatDefs/Post/DepthOfField.j3md index db30a0975..edd7ac5d4 100644 --- a/engine/src/core-effects/Common/MatDefs/Post/DepthOfField.j3md +++ b/engine/src/core-effects/Common/MatDefs/Post/DepthOfField.j3md @@ -19,7 +19,4 @@ MaterialDef Depth Of Field { WorldViewProjectionMatrix } } - - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Post/FXAA.j3md b/engine/src/core-effects/Common/MatDefs/Post/FXAA.j3md index 66855850c..5ce8b46e5 100644 --- a/engine/src/core-effects/Common/MatDefs/Post/FXAA.j3md +++ b/engine/src/core-effects/Common/MatDefs/Post/FXAA.j3md @@ -15,6 +15,4 @@ MaterialDef FXAA { Resolution } } - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Post/Fade.j3md b/engine/src/core-effects/Common/MatDefs/Post/Fade.j3md index e93b276b9..eeddbfce4 100644 --- a/engine/src/core-effects/Common/MatDefs/Post/Fade.j3md +++ b/engine/src/core-effects/Common/MatDefs/Post/Fade.j3md @@ -27,8 +27,4 @@ MaterialDef Fade { WorldViewProjectionMatrix } } - - Technique FixedFunc { - } - } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Post/Fog.j3md b/engine/src/core-effects/Common/MatDefs/Post/Fog.j3md index e5d6c8db7..f802c8a24 100644 --- a/engine/src/core-effects/Common/MatDefs/Post/Fog.j3md +++ b/engine/src/core-effects/Common/MatDefs/Post/Fog.j3md @@ -32,8 +32,4 @@ MaterialDef Fade { WorldViewProjectionMatrix } } - - Technique FixedFunc { - } - } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Post/GammaCorrection.j3md b/engine/src/core-effects/Common/MatDefs/Post/GammaCorrection.j3md index b9c94c042..d0ca74307 100644 --- a/engine/src/core-effects/Common/MatDefs/Post/GammaCorrection.j3md +++ b/engine/src/core-effects/Common/MatDefs/Post/GammaCorrection.j3md @@ -32,8 +32,4 @@ MaterialDef GammaCorrection { COMPUTE_LUMA : computeLuma } } - - Technique FixedFunc { - } - } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Post/LightScattering.j3md b/engine/src/core-effects/Common/MatDefs/Post/LightScattering.j3md index 37e0e8536..0f1b1ed5b 100644 --- a/engine/src/core-effects/Common/MatDefs/Post/LightScattering.j3md +++ b/engine/src/core-effects/Common/MatDefs/Post/LightScattering.j3md @@ -35,7 +35,4 @@ MaterialDef Light Scattering { WorldViewProjectionMatrix } } - - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Post/Overlay.j3md b/engine/src/core-effects/Common/MatDefs/Post/Overlay.j3md index fbf2d2496..74be11ee1 100644 --- a/engine/src/core-effects/Common/MatDefs/Post/Overlay.j3md +++ b/engine/src/core-effects/Common/MatDefs/Post/Overlay.j3md @@ -29,8 +29,4 @@ MaterialDef Default GUI { } } - - Technique FixedFunc { - } - } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Post/Posterization.j3md b/engine/src/core-effects/Common/MatDefs/Post/Posterization.j3md index 244dcbc54..b3cb78a37 100644 --- a/engine/src/core-effects/Common/MatDefs/Post/Posterization.j3md +++ b/engine/src/core-effects/Common/MatDefs/Post/Posterization.j3md @@ -25,8 +25,4 @@ MaterialDef Posterization { WorldViewProjectionMatrix } } - - Technique FixedFunc { - } - } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/SSAO/ssao.j3md b/engine/src/core-effects/Common/MatDefs/SSAO/ssao.j3md index 762c1e51d..df7e5b762 100644 --- a/engine/src/core-effects/Common/MatDefs/SSAO/ssao.j3md +++ b/engine/src/core-effects/Common/MatDefs/SSAO/ssao.j3md @@ -43,9 +43,4 @@ MaterialDef SSAO { } } - - - - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/SSAO/ssaoBlur.j3md b/engine/src/core-effects/Common/MatDefs/SSAO/ssaoBlur.j3md index dcc5e49a8..69199433a 100644 --- a/engine/src/core-effects/Common/MatDefs/SSAO/ssaoBlur.j3md +++ b/engine/src/core-effects/Common/MatDefs/SSAO/ssaoBlur.j3md @@ -49,9 +49,4 @@ MaterialDef SSAOBlur { RESOLVE_DEPTH_MS : NumSamplesDepth } } - - - - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Water/SimpleWater.j3md b/engine/src/core-effects/Common/MatDefs/Water/SimpleWater.j3md index 12883242f..639e06c19 100644 --- a/engine/src/core-effects/Common/MatDefs/Water/SimpleWater.j3md +++ b/engine/src/core-effects/Common/MatDefs/Water/SimpleWater.j3md @@ -28,7 +28,4 @@ MaterialDef Simple Water { CameraPosition } } - - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-effects/Common/MatDefs/Water/Water.j3md b/engine/src/core-effects/Common/MatDefs/Water/Water.j3md index 160cadb98..3bef8a9f4 100644 --- a/engine/src/core-effects/Common/MatDefs/Water/Water.j3md +++ b/engine/src/core-effects/Common/MatDefs/Water/Water.j3md @@ -84,7 +84,4 @@ MaterialDef Advanced Water { } } - - Technique FixedFunc { - } } \ No newline at end of file diff --git a/engine/src/core-plugins/com/jme3/material/plugins/J3MLoader.java b/engine/src/core-plugins/com/jme3/material/plugins/J3MLoader.java index 71e8d6a53..6da28a057 100644 --- a/engine/src/core-plugins/com/jme3/material/plugins/J3MLoader.java +++ b/engine/src/core-plugins/com/jme3/material/plugins/J3MLoader.java @@ -66,7 +66,9 @@ public class J3MLoader implements AssetLoader { private TechniqueDef technique; private RenderState renderState; - private String shaderLang; + private String vertLanguage; + private String fragLanguage; + private String vertName; private String fragName; @@ -86,18 +88,20 @@ public class J3MLoader implements AssetLoader { // : private void readShaderStatement(String statement) throws IOException { String[] split = statement.split(":"); - if (split.length != 2){ + if (split.length != 2) { throw new IOException("Shader statement syntax incorrect" + statement); } String[] typeAndLang = split[0].split(whitespacePattern); - if (typeAndLang.length != 2){ + if (typeAndLang.length != 2) { throw new IOException("Shader statement syntax incorrect: " + statement); } - shaderLang = typeAndLang[1]; - if (typeAndLang[0].equals("VertexShader")){ + + if (typeAndLang[0].equals("VertexShader")) { vertName = split[1].trim(); - }else if (typeAndLang[0].equals("FragmentShader")){ + vertLanguage = typeAndLang[1]; + } else if (typeAndLang[0].equals("FragmentShader")) { fragName = split[1].trim(); + fragLanguage = typeAndLang[1]; } } @@ -399,11 +403,17 @@ public class J3MLoader implements AssetLoader { private void readTechnique(Statement techStat) throws IOException{ String[] split = techStat.getLine().split(whitespacePattern); - if (split.length == 1){ + if (split.length == 1) { technique = new TechniqueDef(null); - }else if (split.length == 2){ - technique = new TechniqueDef(split[1]); - }else{ + } else if (split.length == 2) { + String techName = split[1]; + if (techName.equals("FixedFunc")) { + throw new UnsupportedOperationException( + "In material: " + key + "\nThe 'FixedFunc' technique name no longer has any special meanining.\n" + + "To support fixed pipeline mode, remove that technique's name entirely."); + } + technique = new TechniqueDef(techName); + } else { throw new IOException("Technique statement syntax incorrect"); } @@ -412,14 +422,15 @@ public class J3MLoader implements AssetLoader { } if (vertName != null && fragName != null){ - technique.setShaderFile(vertName, fragName, shaderLang); + technique.setShaderFile(vertName, fragName, vertLanguage, fragLanguage); } materialDef.addTechniqueDef(technique); technique = null; vertName = null; fragName = null; - shaderLang = null; + vertLanguage = null; + fragLanguage = null; } private void loadFromRoot(List roots) throws IOException{ diff --git a/engine/src/core/com/jme3/material/Material.java b/engine/src/core/com/jme3/material/Material.java index 82e970293..faa57d480 100644 --- a/engine/src/core/com/jme3/material/Material.java +++ b/engine/src/core/com/jme3/material/Material.java @@ -925,14 +925,7 @@ public class Material implements CloneableSmartAsset, Cloneable, Savable { private void autoSelectTechnique(RenderManager rm) { if (technique == null) { - // NOTE: Not really needed anymore since we have technique - // selection by caps. Rename all "FixedFunc" techniques to "Default" - // and remove this hack. - if (def.getTechniqueDef("FixedFunc") != null && !rm.getRenderer().getCaps().contains(Caps.GLSL100)) { - selectTechnique("FixedFunc", rm); - } else { - selectTechnique("Default", rm); - } + selectTechnique("Default", rm); } else { technique.makeCurrent(def.getAssetManager(), false); } diff --git a/engine/src/core/com/jme3/material/MaterialDef.java b/engine/src/core/com/jme3/material/MaterialDef.java index e7ec3fcca..28fba8ec6 100644 --- a/engine/src/core/com/jme3/material/MaterialDef.java +++ b/engine/src/core/com/jme3/material/MaterialDef.java @@ -157,10 +157,10 @@ public class MaterialDef { * * @param technique The technique definition to add. */ - public void addTechniqueDef(TechniqueDef technique){ - if (technique.getName().equals("Default")){ + public void addTechniqueDef(TechniqueDef technique) { + if (technique.getName().equals("Default")) { defaultTechs.add(technique); - }else{ + } else { techniques.put(technique.getName(), technique); } } diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.j3md b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.j3md index d0213e913..bea82f0da 100644 --- a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.j3md +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.j3md @@ -10,10 +10,9 @@ MaterialDef Default GUI { WorldParameters { WorldViewProjectionMatrix - } + } } - Technique FixedFunc { + Technique { } - } \ No newline at end of file diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.j3md b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.j3md index 4b3b22d48..9412ba380 100644 --- a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.j3md +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.j3md @@ -12,7 +12,7 @@ MaterialDef Default GUI { } } - Technique FixedFunc { + Technique { } } \ No newline at end of file diff --git a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.j3md b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.j3md index 07f5e928c..8d3b91998 100644 --- a/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.j3md +++ b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.j3md @@ -14,7 +14,7 @@ MaterialDef Default GUI { } } - Technique FixedFunc { + Technique { } } \ No newline at end of file diff --git a/engine/src/terrain/Common/MatDefs/Terrain/HeightBasedTerrain.j3md b/engine/src/terrain/Common/MatDefs/Terrain/HeightBasedTerrain.j3md index 4b836f087..b57aaa4ca 100644 --- a/engine/src/terrain/Common/MatDefs/Terrain/HeightBasedTerrain.j3md +++ b/engine/src/terrain/Common/MatDefs/Terrain/HeightBasedTerrain.j3md @@ -35,7 +35,6 @@ MaterialDef Terrain { } } - Technique FixedFunc { + Technique { } - } \ No newline at end of file diff --git a/engine/src/terrain/Common/MatDefs/Terrain/Terrain.j3md b/engine/src/terrain/Common/MatDefs/Terrain/Terrain.j3md index 152f51123..9702d6594 100644 --- a/engine/src/terrain/Common/MatDefs/Terrain/Terrain.j3md +++ b/engine/src/terrain/Common/MatDefs/Terrain/Terrain.j3md @@ -27,7 +27,6 @@ MaterialDef Terrain { } } - Technique FixedFunc { + Technique { } - } \ No newline at end of file diff --git a/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md b/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md index d72b9d6bf..bfdbf5b42 100644 --- a/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md +++ b/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md @@ -232,7 +232,7 @@ MaterialDef Terrain Lighting { } } - Technique FixedFunc { + Technique { LightMode FixedPipeline }