Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
428 changes: 417 additions & 11 deletions jme3-core/src/plugins/java/com/jme3/material/plugins/J3MLoader.java

Large diffs are not rendered by default.

389 changes: 389 additions & 0 deletions jme3-core/src/test/java/com/jme3/material/plugins/J3MLoaderTest.java

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions jme3-core/src/test/resources/child-matdef-empty.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
MaterialDef ChildEmpty : parent-matdef.j3md {
}
6 changes: 6 additions & 0 deletions jme3-core/src/test/resources/child-matdef-new-technique.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
MaterialDef ChildWithNewTech : parent-matdef.j3md {
Technique Glow {
VertexShader GLSL150 GLSL100 : glow.vert
FragmentShader GLSL150 GLSL100 : glow.frag
}
}
5 changes: 5 additions & 0 deletions jme3-core/src/test/resources/child-matdef-params-only.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
MaterialDef ChildParamsOnly : parent-matdef.j3md {
MaterialParameters {
Float Metallic : 0.0
}
}
8 changes: 8 additions & 0 deletions jme3-core/src/test/resources/child-matdef-renderstate.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
MaterialDef ChildRenderState : parent-matdef.j3md {
Technique {
RenderState {
FaceCull Off
Blend Alpha
}
}
}
5 changes: 5 additions & 0 deletions jme3-core/src/test/resources/child-matdef-technique-only.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
MaterialDef ChildTechOnly : parent-matdef.j3md {
Technique {
FragmentShader GLSL150 GLSL100 : childtech.frag
}
}
5 changes: 5 additions & 0 deletions jme3-core/src/test/resources/child-matdef-type-mismatch.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
MaterialDef BadChild : parent-matdef.j3md {
MaterialParameters {
Vector4 Roughness : 1.0 1.0 1.0 1.0
}
}
5 changes: 5 additions & 0 deletions jme3-core/src/test/resources/child-matdef-vertshader.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
MaterialDef ChildVertShader : parent-matdef.j3md {
Technique {
VertexShader GLSL150 GLSL100 : childvert.vert
}
}
7 changes: 7 additions & 0 deletions jme3-core/src/test/resources/child-matdef-worldparams.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
MaterialDef ChildWorldParams : parent-matdef.j3md {
Technique {
WorldParameters {
ViewMatrix
}
}
}
12 changes: 12 additions & 0 deletions jme3-core/src/test/resources/child-matdef.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
MaterialDef Child : parent-matdef.j3md {
MaterialParameters {
Float Wetness : 0.0
Float Roughness : 0.8
}
Technique {
FragmentShader GLSL150 GLSL100 : child.frag
Defines {
WETNESS : Wetness
}
}
}
6 changes: 6 additions & 0 deletions jme3-core/src/test/resources/child-multi-conflict-param.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
MaterialDef ChildConflict : mixin-a.j3md, mixin-conflict-param.j3md {
Technique {
VertexShader GLSL150 GLSL100 : child.vert
FragmentShader GLSL150 GLSL100 : child.frag
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
MaterialDef ChildTechConflict : mixin-a.j3md, mixin-conflict-technique.j3md {
Technique {
VertexShader GLSL150 GLSL100 : child.vert
FragmentShader GLSL150 GLSL100 : child.frag
}
}
9 changes: 9 additions & 0 deletions jme3-core/src/test/resources/child-multi-inherit.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
MaterialDef ChildMulti : mixin-a.j3md, mixin-b.j3md {
MaterialParameters {
Color BaseColor : 1.0 1.0 1.0 1.0
}
Technique {
VertexShader GLSL150 GLSL100 : child.vert
FragmentShader GLSL150 GLSL100 : child.frag
}
}
6 changes: 6 additions & 0 deletions jme3-core/src/test/resources/child-multi-same-technique.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
MaterialDef ChildSameTech : mixin-a.j3md, mixin-same-technique.j3md {
Technique {
VertexShader GLSL150 GLSL100 : child.vert
FragmentShader GLSL150 GLSL100 : child.frag
}
}
6 changes: 6 additions & 0 deletions jme3-core/src/test/resources/child-multi-shared-param.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
MaterialDef ChildShared : mixin-a.j3md, mixin-shared-param.j3md {
Technique {
VertexShader GLSL150 GLSL100 : child.vert
FragmentShader GLSL150 GLSL100 : child.frag
}
}
6 changes: 6 additions & 0 deletions jme3-core/src/test/resources/child-triple-inherit.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
MaterialDef ChildTriple : mixin-a.j3md, mixin-b.j3md, mixin-shared-param.j3md {
Technique {
VertexShader GLSL150 GLSL100 : child.vert
FragmentShader GLSL150 GLSL100 : child.frag
}
}
13 changes: 13 additions & 0 deletions jme3-core/src/test/resources/mixin-a.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
MaterialDef MixinA {
MaterialParameters {
Float AlphaDiscardThreshold
Int NumberOfBones
}
Technique PreShadow {
VertexShader GLSL150 GLSL100 : shadow.vert
FragmentShader GLSL150 GLSL100 : shadow.frag
WorldParameters {
WorldViewProjectionMatrix
}
}
}
13 changes: 13 additions & 0 deletions jme3-core/src/test/resources/mixin-b.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
MaterialDef MixinB {
MaterialParameters {
Texture2D GlowMap
Color GlowColor
}
Technique Glow {
VertexShader GLSL150 GLSL100 : glow.vert
FragmentShader GLSL150 GLSL100 : glow.frag
WorldParameters {
WorldViewProjectionMatrix
}
}
}
9 changes: 9 additions & 0 deletions jme3-core/src/test/resources/mixin-conflict-param.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
MaterialDef MixinConflictParam {
MaterialParameters {
Vector4 AlphaDiscardThreshold
}
Technique SomePass {
VertexShader GLSL150 GLSL100 : some.vert
FragmentShader GLSL150 GLSL100 : some.frag
}
}
9 changes: 9 additions & 0 deletions jme3-core/src/test/resources/mixin-conflict-technique.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
MaterialDef MixinConflictTechnique {
MaterialParameters {
Float Roughness
}
Technique PreShadow {
VertexShader GLSL150 GLSL100 : other-shadow.vert
FragmentShader GLSL150 GLSL100 : other-shadow.frag
}
}
12 changes: 12 additions & 0 deletions jme3-core/src/test/resources/mixin-same-technique.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
MaterialDef MixinSameTechnique {
MaterialParameters {
Float Roughness
}
Technique PreShadow {
VertexShader GLSL150 GLSL100 : shadow.vert
FragmentShader GLSL150 GLSL100 : shadow.frag
WorldParameters {
WorldViewProjectionMatrix
}
}
}
10 changes: 10 additions & 0 deletions jme3-core/src/test/resources/mixin-shared-param.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
MaterialDef MixinSharedParam {
MaterialParameters {
Float AlphaDiscardThreshold
Boolean UseFog
}
Technique Fog {
VertexShader GLSL150 GLSL100 : fog.vert
FragmentShader GLSL150 GLSL100 : fog.frag
}
}
20 changes: 20 additions & 0 deletions jme3-core/src/test/resources/parent-matdef.j3md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
MaterialDef Parent {
MaterialParameters {
Float Roughness : 0.5
Texture2D DiffuseMap
}
Technique {
VertexShader GLSL150 GLSL100 : parent.vert
FragmentShader GLSL150 GLSL100 : parent.frag
WorldParameters {
WorldViewProjectionMatrix
}
Defines {
HAS_DIFFUSEMAP : DiffuseMap
}
}
Technique PreShadow {
VertexShader GLSL150 GLSL100 : shadow.vert
FragmentShader GLSL150 GLSL100 : shadow.frag
}
}
Loading