8000 This means that there was an unexpected exception when parsing the j3md · Issue #650 · jMonkeyEngine/sdk · GitHub
[go: up one dir, main page]

Skip to content

This means that there was an unexpected exception when parsing the j3md #650

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
Rentenatus opened this issue May 7, 2025 · 8 comments
8000

Comments

@Rentenatus
Copy link

jMonkeyEngine SDK Exception Report
Please submit me to the Issue Tracker
Comment: This means that there was an unexpected exception when parsing the j3md. If this was due to you opening a j3md from a jar (org.openide.filesystems.FSException) then don't report it to us, if it differs, do so!
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at com.jme3.gde.materialdefinition.fileStructure.leaves.DefineBlock.parse(DefineBlock.java:57)
at com.jme3.gde.materialdefinition.fileStructure.leaves.DefineBlock.(DefineBlock.java:21)
at com.jme3.gde.materialdefinition.fileStructure.DefinesBlock.(DefinesBlock.java:21)
at com.jme3.gde.materialdefinition.fileStructure.TechniqueBlock.(TechniqueBlock.java:56)
at com.jme3.gde.materialdefinition.fileStructure.MatDefBlock.(MatDefBlock.java:60)
at com.jme3.gde.materialdefinition.EditableMatDefFile.load(EditableMatDefFile.java:130)
at com.jme3.gde.materialdefinition.EditableMatDefFile.(EditableMatDefFile.java:98)
at com.jme3.gde.materialdefinition.MatDefDataObject.getEditableFile(MatDefDataObject.java:288)
at com.jme3.gde.materialdefinition.navigator.MatDefNavigatorPanel.updateData(MatDefNavigatorPanel.java:127)
at com.jme3.gde.materialdefinition.MatDefDataObject.createEditor(MatDefDataObject.java:206)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.netbeans.core.spi.multiview.MultiViewFactory$MapMVD.createElement(MultiViewFactory.java:431)
at org.netbeans.core.multiview.MultiViewModel.getElementForDescription(MultiViewModel.java:197)
at org.netbeans.core.multiview.MultiViewModel.getActiveElement(MultiViewModel.java:107)
at org.netbeans.core.multiview.MultiViewModel.getActiveElement(MultiViewModel.java:103)
at org.netbeans.core.multiview.MultiViewPeer.assignLookup(MultiViewPeer.java:236)
at org.netbeans.core.multiview.MultiViewCloneableTopComponent.getLookup(MultiViewCloneableTopComponent.java:98)
at org.openide.windows.CloneableTopComponent.componentOpened(CloneableTopComponent.java:169)
at org.netbeans.core.multiview.MultiViewCloneableTopComponent.componentOpened(MultiViewCloneableTopComponent.java:128)
at org.openide.windows.WindowManager.componentOpenNotify(WindowManager.java:282)
at org.netbeans.core.windows.WindowManagerImpl.notifyTopComponentOpened(WindowManagerImpl.java:1192)
at org.netbeans.core.windows.Central.addModeOpenedTopComponent(Central.java:773)
at org.netbeans.core.windows.ModeImpl.addOpenedTopComponent(ModeImpl.java:336)
at org.netbeans.core.windows.WindowManagerImpl.topComponentOpenAtTabPosition(WindowManagerImpl.java:1305)
at org.netbeans.core.windows.WindowManagerImpl.topComponentOpen(WindowManagerImpl.java:1262)
at org.openide.windows.TopComponent.open(TopComponent.java:473)
at org.openide.windows.TopComponent.open(TopComponent.java:453)
at org.openide.windows.CloneableOpenSupport.openCloneableTopComponent(CloneableOpenSupport.java:183)
at org.openide.windows.CloneableOpenSupport$1.run(CloneableOpenSupport.java:82)
at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.doEvent(NbMutexEventProvider.java:97)
at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.writeAccess(NbMutexEventProvider.java:62)
at org.netbeans.modules.openide.util.LazyMutexImplementation.writeAccess(LazyMutexImplementation.java:56)
at org.openide.util.Mutex.writeAccess(Mutex.java:292)
at org.openide.windows.CloneableOpenSupport.open(CloneableOpenSupport.java:79)
at org.openide.text.CloneableEditorSupport.open(CloneableEditorSupport.java:412)
at org.openide.awt.ActionDefaultPerfomer.actionPerformed(ActionDefaultPerfomer.java:47)
at org.openide.awt.ContextAction$Performer.actionPerformed(ContextAction.java:413)
at org.openide.awt.ContextManager.actionPerformed(ContextManager.java:261)
at org.openide.awt.ContextAction.actionPerformed(ContextAction.java:108)
at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:68)
at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:91)
at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:74)
at org.openide.awt.GeneralAction$BaseDelAction.actionPerformed(GeneralAction.java:354)
at org.openide.explorer.view.TreeView$PopupSupport.mouseClicked(TreeView.java:1608)
at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:278)
at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:277)
at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:277)
at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:277)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6624)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3398)
at java.desktop/java.awt.Component.processEvent(Component.java:6386)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4584)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Operating System: Windows 11
Engine Version as used by the SDK: 3.7.0-stable

@Rentenatus
Copy link
Author
Rentenatus commented May 7, 2025

I'm trying to revive an older project using the own shaders...

JME3:
Product Version: jMonkeyEngine SDK v3.7.0-stable
Java: 21.0.5; OpenJDK 64-Bit Server VM 21.0.5+11-LTS
Runtime: OpenJDK Runtime Environment 21.0.5+11-LTS
System: Windows 11 version 10.0 running on amd64; UTF-8; de_DE (jmonkeyplatform)
User directory: C:\Users\jRent\AppData\Roaming\jmonkeyplatform\dev
Cache directory: C:\Users\jRent\AppData\Local\jmonkeyplatform\Cache\dev

@Rentenatus
Copy link
Author

Graphics Capabilities

FrameBuffer
FrameBufferMRT
FrameBufferMultisample
TextureMultisample
OpenGL20
OpenGL21
OpenGL30
OpenGL31
OpenGL32
OpenGL33
OpenGL40
OpenGL41
OpenGL42
OpenGL43
OpenGL44
OpenGL45
GLSL100
GLSL110
GLSL120
GLSL130
GLSL140
GLSL150
GLSL330
GLSL400
GLSL410
GLSL420
GLSL430
GLSL440
GLSL450
VertexTextureFetch
GeometryShader
TesselationShader
TextureArray
TextureBuffer
FloatTexture
FloatColorBufferRGB
FloatColorBufferRGBA
IntegerTexture
FloatColorBuffer
FloatDepthBuffer
PackedFloatTexture
SharedExponentTexture
PackedFloatColorBuffer
NonPowerOfTwoTextures
MeshInstancing
VertexBufferArray
Multisample
PackedDepthStencilBuffer
Srgb
FrameBufferBlit
TextureCompressionS3TC
TextureFilterAnisotropic
TextureCompressionETC1
TextureCompressionETC2
TextureCompressionBPTC
TextureCompressionRGTC
Rgba8
DepthTexture
IntegerIndexBuffer
SeamlessCubemap
BinaryShader
UniformBufferObject
ShaderStorageBufferObject
UnpackRowLength
GLDebug

@Rentenatus
Copy link
Author
Rentenatus commented May 7, 2025

frag:

#import "Common/ShaderLib/GLSLCompat.glsllib"

#extension GL_EXT_texture_array : enable
// #extension GL_EXT_gpu_shader4 : enable

uniform vec4 m_Color;
uniform vec4 m_ColorDawn;     // !JARE pre-baked day-night!
uniform vec4 m_ColorNoon;     // !JARE pre-baked day-night!
uniform vec4 m_ColorSunset;   // !JARE pre-baked day-night!


#if defined(HAS_GLOWMAP) || defined(HAS_COLORMAP) || (defined(HAS_LIGHTMAP) && !defined(SEPARATE_TEXCOORD))
    #define NEED_TEXCOORD1
#endif

#ifdef HAS_COLORMAP
    #if !defined(GL_EXT_texture_array) && __VERSION__ < 130
        #error Texture arrays are not supported, but required for this shader.
    #endif

    uniform sampler2DArray m_ColorMap;
#endif

#if defined(HAS_FOG) || defined(HAS_MAGICMARKMAP) || defined(HAS_MAGICMARKINDEX1) || defined(HAS_MAGICMARKINDEX2)
    varying vec3 position;                    // !JARE magic mark & fog!
    uniform mat4 g_WorldMatrix ;              // !JARE magic mark & fog!
#endif

#ifdef HAS_MAGICMARKMAP
    uniform sampler2DArray m_MagicMarkMap;    // !JARE magic mark!
 #endif
 #ifdef HAS_MAGICMARKINDEX1
    uniform vec3 m_MagicMarkPos1;             // !JARE magic mark!
    uniform float m_MagicMarkIndex1;          // !JARE magic mark!
    uniform float m_MagicMarkSin1;            // !JARE magic mark!
    uniform float m_MagicMarkCos1;            // !JARE magic mark!
    uniform float m_MagicMarkHalfSize1;       // !JARE magic mark!
#endif
#ifdef HAS_MAGICMARKINDEX2
    uniform vec3 m_MagicMarkPos2;             // !JARE magic mark!
    uniform float m_MagicMarkIndex2;          // !JARE magic mark!
    uniform float m_MagicMarkSin2;            // !JARE magic mark!
    uniform float m_MagicMarkCos2;            // !JARE magic mark!
    uniform float m_MagicMarkHalfSize2;       // !JARE magic mark!
#endif

#ifdef HAS_FOG
    uniform vec3 m_FogCamPos;                 // !JARE fog!  
    uniform float m_FogStartDistanceSqr;      // !JARE fog! Start distance ^2
    uniform vec4 m_FogStartColor0;            // !JARE fog! Start color on y == 0
    uniform float m_FogTop;                   // !JARE fog! y of FogStartColorUp
    uniform vec4 m_FogStartColorUp;           // !JARE fog! Start color on y == FogTop
    uniform float m_FogDistanceSqr;           // !JARE fog! distance ^2
#endif

#ifdef NEED_TEXCOORD1
    varying vec3 texCoord1;   
#endif

#ifdef HAS_LIGHTMAP
    uniform sampler2D m_LightMap;
    #ifdef SEPERATE_TEXCOORD
        varying vec3 texCoord2;
    #endif
#endif

#ifdef HAS_VERTEXCOLOR
    varying vec4 vertColor;
#endif

void main(){
 
    vec4 color = vec4(1.0);

    #ifdef HAS_COLORMAP
        color *= texture2DArray(m_ColorMap, texCoord1); 
    #endif

    #ifdef HAS_VERTEXCOLOR
        color *= vec4(vertColor.r, vertColor.g, vertColor.b, 1.0); // !JARE pre-baked day-night! 
    #endif

    #ifdef HAS_COLOR
        color *= m_Color;
    #endif

    // !JARE pre-baked day-night! Begin
    #ifdef HAS_COLORDAWN
        float extraUnusedIndex = 0.0; 
        float h = 0.5;   // default := flat
        #ifdef HAS_VERTEXCOLOR
            // While h is between 0 and 0.9999, 
            // the whole numbers above could be used for further information. 
            // E.g. for the seasons slope north-south.
            // Not used in Momnet.
            extraUnusedIndex = floor(vertColor.a); 
            h = vertColor.a - extraUnusedIndex; 
        #endif
        float east = max(0.0,(h-0.25)*(0.25-h)*20.0 +1.0);
        float west = max(0.0,(h-0.75)*(0.75-h)*20.0 +1.0);
        color = m_ColorDawn * east + m_ColorNoon * color + m_ColorSunset * west;
        color = color / (color.a+0.0001);
    #endif
    // !JARE pre-baked day-night! End

    #ifdef HAS_LIGHTMAP
        #ifdef SEPARATE_TEXCOORD
            color.rgb *= texture2D(m_LightMap, texCoord2).rgb;
        #else
            color.rgb *= texture2D(m_LightMap, texCoord1).rgb;   
        #endif
    #endif
    
    // !JARE magic mark & fog! Begin
    // !JARE magic mark & fog!  
    // !JARE magic mark & fog!  
    #if defined(HAS_FOG) || defined(HAS_MAGICMARKMAP) || defined(HAS_MAGICMARKINDEX1) || defined(HAS_MAGICMARKINDEX2)
        vec4 worldPos = g_WorldMatrix  * vec4(position, 1.0);
        float rP;
        float rR;
        float reduction;
    #endif
    #if defined(HAS_MAGICMARKMAP) && defined(HAS_MAGICMARKINDEX1)
        float mark1_x=(m_MagicMarkPos1.x  - worldPos.x) / m_MagicMarkHalfSize1;
        float mark1_z=(m_MagicMarkPos1.z  - worldPos.z) / m_MagicMarkHalfSize1;
        float mark1_y=(m_MagicMarkPos1.y  - worldPos.y) / 2.0;
        rP = mark1_x*mark1_x + mark1_z*mark1_z;
        rR = rP + mark1_y*mark1_y;
        reduction = (rP > 0.0001) ? sqrt(rR/rP) : 1.0;
        // multiplication with reduction, 
        // because the faster out of the range [0, 1[ the smaller the image.
        mark1_x *= reduction;
        mark1_z *= reduction;
        vec3 mark1_texCoord = vec3(
            (mark1_x*m_MagicMarkCos1 - mark1_z*m_MagicMarkSin1)/2.0 + 0.5,
            (mark1_x*m_MagicMarkSin1 + mark1_z*m_MagicMarkCos1)/2.0 + 0.5,
            m_MagicMarkIndex1
        );
        vec4 mark1_color = (mark1_texCoord.x>=0.0 && mark1_texCoord.x<1.0 && mark1_texCoord.y>=0.0 && mark1_texCoord.y<1.0)
            ?texture2DArray(m_MagicMarkMap, mark1_texCoord)
            :vec4(0.0); 
        color =max(color,mark1_color*mark1_color.a + color*(1.0-mark1_color.a));
    #endif
    #if defined(HAS_MAGICMARKMAP) && defined(HAS_MAGICMARKINDEX2)
        float mark2_x=(m_MagicMarkPos2.x  - worldPos.x) / m_MagicMarkHalfSize2;
        float mark2_z=(m_MagicMarkPos2.z  - worldPos.z) / m_MagicMarkHalfSize2;
        float mark2_y=(m_MagicMarkPos2.y  - worldPos.y) / 2.0;
        rP = mark2_x*mark2_x + mark2_z*mark2_z;
        rR = rP + mark2_y*mark2_y;
        reduction = (rP > 0.0001) ? sqrt(rR/rP) : 1.0;
        // multiplication with reduction, 
        // because the faster out of the range [0, 1[ the smaller the image.
        mark2_x *= reduction;
        mark2_z *= reduction;
        vec3 mark2_texCoord = vec3(
            (mark2_x*m_MagicMarkCos2 - mark2_z*m_MagicMarkSin2)/2.0 + 0.5,
            (mark2_x*m_MagicMarkSin2 + mark2_z*m_MagicMarkCos2)/2.0 + 0.5,
            m_MagicMarkIndex2
        );
        vec4 mark2_color = (mark2_texCoord.x>=0.0 && mark2_texCoord.x<1.0 && mark2_texCoord.y>=0.0 && mark2_texCoord.y<1.0)
            ?texture2DArray(m_MagicMarkMap, mark2_texCoord)
            :vec4(0.0); 
        color =max(color,mark2_color*mark2_color.a + color*(1.0-mark2_color.a));
    #endif
    #ifdef HAS_FOG
        float fog_x=  m_FogCamPos.x  - worldPos.x;
        float fog_z=  m_FogCamPos.z  - worldPos.z;
        float fog_y=  max(0.0,min(1.0, worldPos.y / m_FogTop));
        vec4 fog_color = m_FogStartColorUp*fog_y + m_FogStartColor0*(1.0-fog_y);
        rP = max(0.0, fog_x*fog_x + fog_z*fog_z - m_FogStartDistanceSqr);
        rR = min(1.0, rP / m_FogDistanceSqr); 
        color =fog_color*rR + color*(1.0-rR);
    #endif    
    // !JARE magic mark & fog!  
    // !JARE magic mark & fog!  
    // !JARE magic mark & fog! End

    gl_FragColor = color;
}

vert:

#import "Common/ShaderLib/GLSLCompat.glsllib"

uniform mat4 g_WorldViewProjectionMatrix;
uniform vec3 m_test;
attribute vec3 inPosition;

#ifdef HAS_MAGICMARKMAP
    varying vec3 position;                    // !JARE magic mark!
#endif

#if defined(HAS_COLORMAP) || (defined(HAS_LIGHTMAP) && !defined(SEPARATE_TEXCOORD))
    #define NEED_TEXCOORD1
#endif

#ifdef NEED_TEXCOORD1
    attribute vec3 inTexCoord;
    varying vec3 texCoord1;
#endif

#ifdef SEPARATE_TEXCOORD
    attribute vec3 inTexCoord2;
    varying vec3 texCoord2;
#endif

#ifdef HAS_VERTEXCOLOR
    attribute vec4 inColor;
    varying vec4 vertColor;
#endif

void main(){
    #ifdef NEED_TEXCOORD1
        texCoord1 = inTexCoord;
    #endif

    #ifdef SEPARATE_TEXCOORD
        texCoord2 = inTexCoord2;
    #endif

    #ifdef HAS_VERTEXCOLOR
        vertColor = inColor;
    #endif

    #if defined(HAS_FOG) || defined(HAS_MAGICMARKMAP) || defined(HAS_MAGICMARKINDEX1) || defined(HAS_MAGICMARKINDEX2)
        position = inPosition;                    // !JARE magic mark & fog!
    #endif

    gl_Position = g_WorldViewProjectionMatrix * vec4(inPosition, 1.0);
}

corrupted j3md:

MaterialDef JaReTerrainArray {
 
    MaterialParameters {
        TextureArray ColorMap
        TextureArray MagicMarkMap   // !JARE magic mark! Pictures
        Vector3 MagicMarkPos1       // !JARE magic mark! x-y-z in 3d space E.G.: shootables.collideWith(ray, results);
        Float MagicMarkIndex1       // !JARE magic mark! Index of Texture, clear Param == mark is off
        Float MagicMarkSin1         // !JARE magic mark! Rotate mark
        Float MagicMarkCos1         // !JARE magic mark! Rotate mark
        Float MagicMarkHalfSize1    // !JARE magic mark! Size
        Vector3 MagicMarkPos2       // !JARE magic mark! x-y-z in 3d space E.G.: shootables.collideWith(ray, results);
        Float MagicMarkIndex2       // !JARE magic mark! Index of Texture, clear Param == mark is off
        Float MagicMarkSin2         // !JARE magic mark! Rotate mark
        Float MagicMarkCos2         // !JARE magic mark! Rotate mark
        Float MagicMarkHalfSize2    // !JARE magic mark! Size
        Vector3 FogCamPos           // !JARE fog! x-y-z camera position in 3d space, clear Param == fog is off
        Float FogStartDistanceSqr   // !JARE fog! Start distance ^2
        Color FogStartColor0        // !JARE fog! Start color on y == 0
        Float FogTop                // !JARE fog! y of FogStartColorUp
        Color FogStartColorUp       // !JARE fog! Start color on y == FogTop
        Float FogDistanceSqr        // !JARE fog! distance ^2
        Texture2D LightMap
        Color Color (Color)
        Boolean VertexColor
        Boolean SeparateTexCoord
        Color ColorDawn             // !JARE pre-baked day-night!
        Color ColorNoon             // !JARE pre-baked day-night!
        Color ColorSunset           // !JARE pre-baked day-night!

        // Texture of the glowing parts of the material
        Texture2D GlowMap
        // The glow color of the object
        Color GlowColor
    }

    Technique {
        VertexShader GLSL300 GLSL100:   assets/matdefs/JaReTerrainArray.vert
        FragmentShader GLSL300 GLSL100: assets/matdefs/JaReTerrainArray.frag

        WorldParameters {
            WorldViewProjectionMatrix
            WorldMatrix                              // !JARE magic mark!
        }

        Defines {
            SEPARATE_TEXCOORD : SeparateTexCoord
            HAS_COLORMAP : ColorMap
            HAS_MAGICMARKMAP : MagicMarkMap          // !JARE magic mark!
            HAS_MAGICMARKINDEX1 : MagicMarkIndex1    // !JARE magic mark!
            HAS_MAGICMARKINDEX2 : MagicMarkIndex2    // !JARE magic mark!
            HAS_COLORDAWN : ColorDawn                // !JARE pre-baked day-night!
            HAS_FOG : FogCamPos                      // !JARE fog!
            HAS_LIGHTMAP : LightMap
            HAS_VERTEXCOLOR : VertexColor
            HAS_COLOR : Color
        }
    }

      Technique PreNormalPass {

            VertexShader GLSL300 GLSL100 :   Common/MatDefs/SSAO/normal.vert
            FragmentShader GLSL300 GLSL100 : Common/MatDefs/SSAO/normal.frag

            WorldParameters {
                WorldViewProjectionMatrix
                WorldViewMatrix
                NormalMatrix
            }

            RenderState {

            }

        }


    Technique Glow {

        VertexShader GLSL300 GLSL100:   assets/matdefs/JaReTerrainArray.vert
        FragmentShader GLSL300 GLSL100: Common/MatDefs/Light/Glow.frag

        WorldParameters {
            WorldViewProjectionMatrix
        }

        Defines {
            HAS_GLOWMAP : GlowMap
            HAS_GLOWCOLOR : GlowColor
            HAS_COLORMAP // Must be passed so that Unshaded.vert exports texCoord.
        }
    }
}

@Rentenatus
Copy link
Author

Note: I store src, test and assets in external paths, they are not located in the project workspace.

@neph1
Copy link
Contributor
neph1 commented May 7, 2025

Is this the shader editor, or material editor? I seem to remember this issue from the time i worked on the shader editor.

This:

Comment: This means that there was an unexpected exception when parsing the j3md. If this was due to you opening a j3md from a jar (org.openide.filesystems.FSException) then don't report it to us, if it differs, do so!
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1

Seems to indicate some issue with the j3md file, some Define block problem.

HAS_COLORMAP // Must be passed so that Unshaded.vert exports texCoord.

Should there pehaps be something defined here? ColorMap maybe?

@Rentenatus
Copy link
Author
Rentenatus commented May 10, 2025

This is the shader editor.
The shader isn't bug-free.

However, I believe that programming errors shouldn't crash the editor.
Imagine an error in your Java code and the editor turns gray, turning into a simple text editor—that wouldn't make you happy either.

HAS_COLORMAP isn't commented with // !JARE, which is a line from the [old JME3.3.2] original JME3 shader.

And ultimately, it doesn't matter to an editor whether frag and vert are even already defined in the SDK.

Not a problem for me, I just wanted to report the issue.

@Rentenatus
Copy link
Author
Rentenatus commented May 10, 2025

By the way, the shader still runs on the graphics card and creates 3D images.

after I corrected this line in vert:

#import "Common/ShaderLib/GLSLCompat.glsllib"

uniform mat4 g_WorldViewProjectionMatrix;
uniform vec3 m_test;
attribute vec3 inPosition;

#if defined(HAS_FOG) || defined(HAS_MAGICMARKMAP) || defined(HAS_MAGICMARKINDEX1) || defined(HAS_MAGICMARKINDEX2)
    varying vec3 position;                    // !JARE magic mark!
#endif

@Rentenatus
Copy link
Author
Rentenatus commented May 10, 2025

By the way, it already worked in2021 in JME 3.3.2:

Magic MarkMap: https://youtu.be/Etkj70sdigo
ColorDawn: https://youtu.be/tSxrHq4VPE4 , https://youtu.be/K0sExSSJtZk
FogCamPos: https://youtu.be/UJXECPeA-3E

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants
0