Babylon 7 - unable to compile

It works in babylon 6.49.0, throws errors in babylon 7 and up.

I get:
scene is now loaded
chunk-B623SFX6.js?v=798a4441:52 BJS - [08:00:53]: Unable to compile effect:
_LogEnabled @ chunk-B623SFX6.js?v=798a4441:52
Show 1 more frame
Show less
chunk-B623SFX6.js?v=798a4441:52 BJS - [08:00:53]: Uniforms: u_World, u_ViewProjection, u_view, reflectionMatrix, vSphericalL00, vSphericalL1_1, vSphericalL10, vSphericalL11, vSphericalL2_2, vSphericalL2_1, vSphericalL20, vSphericalL21, vSphericalL22, vSphericalX, vSphericalY, vSphericalZ, vSphericalXX_ZZ, vSphericalYY_ZZ, vSphericalZZ, vSphericalXY, vSphericalYZ, vSphericalZX, u_cameraPosition, textureTransform, textureTransform1, textureTransform2, textureTransform3, u_FabricBaseColor, u_PatternTransparentColor, u_PatternTransparentFactor, u_Color, u_PatternReplaceColor, u_PatternReplaceColorFactor, u_PatternReplacementColor, u_DesignTransparentColor, u_DesignTransparentFactor, u_Color1, u_Float, u_Float1, u_Color2, vLightData0, vLightDiffuse0, vLightSpecular0, vLightDirection0, vLightFalloff0, vLightGround0, lightMatrix0, shadowsInfo0, depthValues0, viewFrustumZ0, cascadeBlendFactor0, lightSizeUVCorrection0, depthCorrection0, penumbraDarkness0, frustumLengths0, vLightData1, vLightDiffuse1, vLightSpecular1, vLightDirection1, vLightFalloff1, vLightGround1, lightMatrix1, shadowsInfo1, depthValues1, viewFrustumZ1, cascadeBlendFactor1, lightSizeUVCorrection1, depthCorrection1, penumbraDarkness1, frustumLengths1, textureInfoName, textureInfoName1, textureInfoName2, textureInfoName3, vDebugMode, ambientFromScene, exposureLinear, contrast, vInverseScreenSize, vignetteSettings1, vignetteSettings2, vCameraColorCurveNegative, vCameraColorCurveNeutral, vCameraColorCurvePositive, txColorTransform, colorTransformSettings, ditherIntensity, vLightingIntensity, invertNormal, vMetallicReflectanceFactors, GradientTextureSampler, PatternTextureSampler, DesignTextureSampler, FabricTextureSampler, shadowSampler0, depthSampler0, shadowSampler1, depthSampler1, environmentBrdfSampler
_LogEnabled @ chunk-B623SFX6.js?v=798a4441:52
Show 1 more frame
Show less
chunk-B623SFX6.js?v=798a4441:52 BJS - [08:00:53]: Attributes: position, normal, uv
_LogEnabled @ chunk-B623SFX6.js?v=798a4441:52
Show 1 more frame
Show less
chunk-B623SFX6.js?v=798a4441:52 BJS - [08:00:53]: Defines:
#define NORMAL
#define UV1
#define PREPASS_NORMAL_INDEX -1
#define PREPASS_POSITION_INDEX -1
#define PREPASS_DEPTH_INDEX -1
#define SCENE_MRT_COUNT 0
#define NUM_BONE_INFLUENCERS 0
#define BonesPerMesh 0
#define NUM_MORPH_INFLUENCERS 0
#define VIGNETTEBLENDMODEMULTIPLY
#define SAMPLER3DGREENDEPTH
#define SAMPLER3DBGRMAP
#define BUMPDIRECTUV 0
#define CAMERA_PERSPECTIVE
#define VMAINUV
#define UVTRANSFORM3
#define PBR
#define METALLICWORKFLOW
#define DEBUGMODE 0
#define DEBUGMODE_FORCERETURN
#define NORMALXYSCALE
#define LODBASEDMICROSFURACE
#define AMBIENT
#define USEPHYSICALLIGHTFALLOFF
#define ALPHATESTVALUE 0.5
#define RADIANCEOVERALPHA
#define SPECULAROVERALPHA
#define NUM_SAMPLES 8u
#define BRDF_V_HEIGHT_CORRELATED
#define MS_BRDF_ENERGY_CONSERVATION
#define RADIANCEOCCLUSION
#define HORIZONOCCLUSION
#define ENVIRONMENTBRDF
#define LIGHT0
#define HEMILIGHT0
#define LIGHT1
#define HEMILIGHT1
#define SPECULARTERM

_LogEnabled @ chunk-B623SFX6.js?v=798a4441:52
Show 1 more frame
Show less
chunk-B623SFX6.js?v=798a4441:52 BJS - [08:00:53]: Vertex code:
_LogEnabled @ chunk-B623SFX6.js?v=798a4441:52
Show 1 more frame
Show less
chunk-B623SFX6.js?v=798a4441:52 BJS - [08:00:53]: #version 300 es
#define WEBGL2
#define NORMAL
#define UV1
#define PREPASS_NORMAL_INDEX -1
#define PREPASS_POSITION_INDEX -1
#define PREPASS_DEPTH_INDEX -1
#define SCENE_MRT_COUNT 0
#define NUM_BONE_INFLUENCERS 0
#define BonesPerMesh 0
#define NUM_MORPH_INFLUENCERS 0
#define VIGNETTEBLENDMODEMULTIPLY
#define SAMPLER3DGREENDEPTH
#define SAMPLER3DBGRMAP
#define BUMPDIRECTUV 0
#define CAMERA_PERSPECTIVE
#define VMAINUV
#define UVTRANSFORM3
#define PBR
#define METALLICWORKFLOW
#define DEBUGMODE 0
#define DEBUGMODE_FORCERETURN
#define NORMALXYSCALE
#define LODBASEDMICROSFURACE
#define AMBIENT
#define USEPHYSICALLIGHTFALLOFF
#define ALPHATESTVALUE 0.5
#define RADIANCEOVERALPHA
#define SPECULAROVERALPHA
#define NUM_SAMPLES 8u
#define BRDF_V_HEIGHT_CORRELATED
#define MS_BRDF_ENERGY_CONSERVATION
#define RADIANCEOCCLUSION
#define HORIZONOCCLUSION
#define ENVIRONMENTBRDF
#define LIGHT0
#define HEMILIGHT0
#define LIGHT1
#define HEMILIGHT1
#define SPECULARTERM

#define SHADER_NAME vertex:nodeMaterial3
precision highp sampler2DArray;
precision highp float;
in vec3 position;
in vec3 normal;
in vec2 uv;
uniform mat4 u_World;
uniform mat4 u_ViewProjection;
uniform mat4 u_view;
uniform mat4 reflectionMatrix;
uniform vec3 vSphericalX;
uniform vec3 vSphericalY;
uniform vec3 vSphericalZ;
uniform vec3 vSphericalXX_ZZ;
uniform vec3 vSphericalYY_ZZ;
uniform vec3 vSphericalZZ;
uniform vec3 vSphericalXY;
uniform vec3 vSphericalYZ;
uniform vec3 vSphericalZX;
uniform vec3 u_cameraPosition;
uniform mat4 textureTransform3;
uniform vec3 u_FabricBaseColor;
uniform vec4 u_PatternTransparentColor;
uniform float u_PatternTransparentFactor;
uniform vec4 u_Color;
uniform vec4 u_PatternReplaceColor;
uniform float u_PatternReplaceColorFactor;
uniform vec4 u_PatternReplacementColor;
uniform vec4 u_DesignTransparentColor;
uniform float u_DesignTransparentFactor;
uniform vec4 u_Color1;
uniform float u_Float;
uniform float u_Float1;
uniform vec3 u_Color2;
uniform sampler2D GradientTextureSampler;
uniform sampler2D PatternTextureSampler;
uniform sampler2D DesignTextureSampler;
uniform sampler2D FabricTextureSampler;
out vec4 v_output0;
out vec2 vMainuv;
out vec2 transformedUV3;
out vec4 v_output2;
const float PI=3.1415926535897932384626433832795;
const float RECIPROCAL_PI=0.3183098861837907;
const float RECIPROCAL_PI2=0.15915494309189535;
const float HALF_MIN=5.96046448e-08;
const float LinearEncodePowerApprox=2.2;
const float GammaEncodePowerApprox=1.0/LinearEncodePowerApprox;
const vec3 LuminanceEncodeApprox=vec3(0.2126,0.7152,0.0722);
const float Epsilon=0.0000001;
#define saturate(x) clamp(x,0.0,1.0)
#define absEps(x) abs(x)+Epsilon
#define maxEps(x) max(x,Epsilon)
#define saturateEps(x) clamp(x,Epsilon,1.0)
mat3 transposeMat3(mat3 inMatrix) {vec3 i0=inMatrix[0];
vec3 i1=inMatrix[1];
vec3 i2=inMatrix[2];
mat3 outMatrix=mat3(
vec3(i0.x,i1.x,i2.x),
vec3(i0.y,i1.y,i2.y),
vec3(i0.z,i1.z,i2.z)
);
return outMatrix;
}
mat3 inverseMat3(mat3 inMatrix) {float a00=inMatrix[0][0],a01=inMatrix[0][1],a02=inMatrix[0][2];
float a10=inMatrix[1][0],a11=inMatrix[1][1],a12=inMatrix[1][2];
float a20=inMatrix[2][0],a21=inMatrix[2][1],a22=inMatrix[2][2];
float b01=a22a11-a12a21;
float b11=-a22a10+a12a20;
float b21=a21a10-a11a20;
float det=a00b01+a01b11+a02b21;
return mat3(b01,(-a22
a01+a02a21),(a12a01-a02a11),
b11,(a22
a00-a02a20),(-a12a00+a02a10),
b21,(-a21
a00+a01a20),(a11a00-a01a10))/det;
}
float toLinearSpace(float color)
{
return pow(color,LinearEncodePowerApprox);
}
vec3 toLinearSpace(vec3 color)
{
return pow(color,vec3(LinearEncodePowerApprox));
}
vec4 toLinearSpace(vec4 color)
{
return vec4(pow(color.rgb,vec3(LinearEncodePowerApprox)),color.a);
}
float toGammaSpace(float color)
{
return pow(color,GammaEncodePowerApprox);
}
vec3 toGammaSpace(vec3 color)
{
return pow(color,vec3(GammaEncodePowerApprox));
}
vec4 toGammaSpace(vec4 color)
{
return vec4(pow(color.rgb,vec3(GammaEncodePowerApprox)),color.a);
}
float square(float value)
{return value
value;
}
vec3 square(vec3 value)
{return valuevalue;
}
float pow5(float value) {float sq=value
value;
return sqsqvalue;
}
float getLuminance(vec3 color)
{return clamp(dot(color,LuminanceEncodeApprox),0.,1.);
}
float getRand(vec2 seed) {return fract(sin(dot(seed.xy ,vec2(12.9898,78.233)))43758.5453);
}
float dither(vec2 seed,float varianceAmount) {float rand=getRand(seed);
float normVariance=varianceAmount/255.0;
float dither=mix(-normVariance,normVariance,rand);
return dither;
}
const float rgbdMaxRange=255.0;
vec4 toRGBD(vec3 color) {float maxRGB=maxEps(max(color.r,max(color.g,color.b)));
float D =max(rgbdMaxRange/maxRGB,1.);
D =clamp(floor(D)/255.0,0.,1.);
vec3 rgb=color.rgb
D;
rgb=toGammaSpace(rgb);
return vec4(clamp(rgb,0.,1.),D);
}
vec3 fromRGBD(vec4 rgbd) {rgbd.rgb=toLinearSpace(rgbd.rgb);
return rgbd.rgb/rgbd.a;
}
vec3 parallaxCorrectNormal( vec3 vertexPos,vec3 origVec,vec3 cubeSize,vec3 cubePos ) {vec3 invOrigVec=vec3(1.0,1.0,1.0)/origVec;
vec3 halfSize=cubeSize*0.5;
vec3 intersecAtMaxPlane=(cubePos+halfSize-vertexPos)*invOrigVec;
vec3 intersecAtMinPlane=(cubePos-halfSize-vertexPos)invOrigVec;
vec3 largestIntersec=max(intersecAtMaxPlane,intersecAtMinPlane);
float distance=min(min(largestIntersec.x,largestIntersec.y),largestIntersec.z);
vec3 intersectPositionWS=vertexPos+origVec
distance;
return intersectPositionWS-cubePos;
}
uniform Light0
{vec4 vLightData;
vec4 vLightDiffuse;
vec4 vLightSpecular;
vec3 vLightGround;
vec4 shadowsInfo;
vec2 depthValues;
} light0;
uniform Light1
{vec4 vLightData;
vec4 vLightDiffuse;
vec4 vLightSpecular;
vec3 vLightGround;
vec4 shadowsInfo;
vec2 depthValues;
} light1;
void main(void) {
mat3 u_World_NUS = mat3(u_World);
vec4 output2 = vec4(u_World_NUS * normal, 0.0);
vec4 output1 = u_World * vec4(position, 1.0);
vec4 output0 = u_ViewProjection * output1;
gl_Position = output0;
v_output0 = output0;
vec4 worldPos = output0;
mat4 view = u_view;
vMainuv = uv.xy;
vMainuv = uv.xy;
vMainuv = uv.xy;
transformedUV3 = vec4(textureTransform3 * vec4(uv.xy, 1.0, 0.0));
v_output2 = output2;
}

_LogEnabled @ chunk-B623SFX6.js?v=798a4441:52
Show 1 more frame
Show less
chunk-B623SFX6.js?v=798a4441:52 BJS - [08:00:53]: Fragment code:
_LogEnabled @ chunk-B623SFX6.js?v=798a4441:52
Show 1 more frame
Show less
chunk-B623SFX6.js?v=798a4441:52 BJS - [08:00:53]: #version 300 es
#define WEBGL2
#define NORMAL
#define UV1
#define PREPASS_NORMAL_INDEX -1
#define PREPASS_POSITION_INDEX -1
#define PREPASS_DEPTH_INDEX -1
#define SCENE_MRT_COUNT 0
#define NUM_BONE_INFLUENCERS 0
#define BonesPerMesh 0
#define NUM_MORPH_INFLUENCERS 0
#define VIGNETTEBLENDMODEMULTIPLY
#define SAMPLER3DGREENDEPTH
#define SAMPLER3DBGRMAP
#define BUMPDIRECTUV 0
#define CAMERA_PERSPECTIVE
#define VMAINUV
#define UVTRANSFORM3
#define PBR
#define METALLICWORKFLOW
#define DEBUGMODE 0
#define DEBUGMODE_FORCERETURN
#define NORMALXYSCALE
#define LODBASEDMICROSFURACE
#define AMBIENT
#define USEPHYSICALLIGHTFALLOFF
#define ALPHATESTVALUE 0.5
#define RADIANCEOVERALPHA
#define SPECULAROVERALPHA
#define NUM_SAMPLES 8u
#define BRDF_V_HEIGHT_CORRELATED
#define MS_BRDF_ENERGY_CONSERVATION
#define RADIANCEOCCLUSION
#define HORIZONOCCLUSION
#define ENVIRONMENTBRDF
#define LIGHT0
#define HEMILIGHT0
#define LIGHT1
#define HEMILIGHT1
#define SPECULARTERM

#define SHADER_NAME fragment:nodeMaterial3

precision highp sampler2DArray;
precision highp float;
uniform mat4 u_World;
uniform mat4 u_ViewProjection;
uniform mat4 u_view;
uniform mat4 reflectionMatrix;
uniform vec3 vSphericalX;
uniform vec3 vSphericalY;
uniform vec3 vSphericalZ;
uniform vec3 vSphericalXX_ZZ;
uniform vec3 vSphericalYY_ZZ;
uniform vec3 vSphericalZZ;
uniform vec3 vSphericalXY;
uniform vec3 vSphericalYZ;
uniform vec3 vSphericalZX;
uniform vec3 u_cameraPosition;
uniform mat4 textureTransform3;
uniform vec3 u_FabricBaseColor;
uniform vec4 u_PatternTransparentColor;
uniform float u_PatternTransparentFactor;
uniform vec4 u_Color;
uniform vec4 u_PatternReplaceColor;
uniform float u_PatternReplaceColorFactor;
uniform vec4 u_PatternReplacementColor;
uniform vec4 u_DesignTransparentColor;
uniform float u_DesignTransparentFactor;
uniform vec4 u_Color1;
uniform float u_Float;
uniform float u_Float1;
uniform vec3 u_Color2;
uniform float textureInfoName;
uniform float textureInfoName1;
uniform float textureInfoName2;
uniform float textureInfoName3;
uniform vec3 ambientFromScene;
uniform vec4 vLightingIntensity;
uniform float invertNormal;
uniform vec4 vMetallicReflectanceFactors;
uniform sampler2D GradientTextureSampler;
uniform sampler2D PatternTextureSampler;
uniform sampler2D DesignTextureSampler;
uniform sampler2D FabricTextureSampler;
uniform sampler2D environmentBrdfSampler;
in vec4 v_output0;
in vec2 vMainuv;
in vec2 transformedUV3;
in vec4 v_output2;
const float PI=3.1415926535897932384626433832795;
const float RECIPROCAL_PI=0.3183098861837907;
const float RECIPROCAL_PI2=0.15915494309189535;
const float HALF_MIN=5.96046448e-08;
const float LinearEncodePowerApprox=2.2;
const float GammaEncodePowerApprox=1.0/LinearEncodePowerApprox;
const vec3 LuminanceEncodeApprox=vec3(0.2126,0.7152,0.0722);
const float Epsilon=0.0000001;
#define saturate(x) clamp(x,0.0,1.0)
#define absEps(x) abs(x)+Epsilon
#define maxEps(x) max(x,Epsilon)
#define saturateEps(x) clamp(x,Epsilon,1.0)
mat3 transposeMat3(mat3 inMatrix) {vec3 i0=inMatrix[0];
vec3 i1=inMatrix[1];
vec3 i2=inMatrix[2];
mat3 outMatrix=mat3(
vec3(i0.x,i1.x,i2.x),
vec3(i0.y,i1.y,i2.y),
vec3(i0.z,i1.z,i2.z)
);
return outMatrix;
}
mat3 inverseMat3(mat3 inMatrix) {float a00=inMatrix[0][0],a01=inMatrix[0][1],a02=inMatrix[0][2];
float a10=inMatrix[1][0],a11=inMatrix[1][1],a12=inMatrix[1][2];
float a20=inMatrix[2][0],a21=inMatrix[2][1],a22=inMatrix[2][2];
float b01=a22a11-a12a21;
float b11=-a22a10+a12a20;
float b21=a21a10-a11a20;
float det=a00b01+a01b11+a02b21;
return mat3(b01,(-a22
a01+a02a21),(a12a01-a02a11),
b11,(a22
a00-a02a20),(-a12a00+a02a10),
b21,(-a21
a00+a01a20),(a11a00-a01a10))/det;
}
float toLinearSpace(float color)
{
return pow(color,LinearEncodePowerApprox);
}
vec3 toLinearSpace(vec3 color)
{
return pow(color,vec3(LinearEncodePowerApprox));
}
vec4 toLinearSpace(vec4 color)
{
return vec4(pow(color.rgb,vec3(LinearEncodePowerApprox)),color.a);
}
float toGammaSpace(float color)
{
return pow(color,GammaEncodePowerApprox);
}
vec3 toGammaSpace(vec3 color)
{
return pow(color,vec3(GammaEncodePowerApprox));
}
vec4 toGammaSpace(vec4 color)
{
return vec4(pow(color.rgb,vec3(GammaEncodePowerApprox)),color.a);
}
float square(float value)
{return value
value;
}
vec3 square(vec3 value)
{return valuevalue;
}
float pow5(float value) {float sq=value
value;
return sqsqvalue;
}
float getLuminance(vec3 color)
{return clamp(dot(color,LuminanceEncodeApprox),0.,1.);
}
float getRand(vec2 seed) {return fract(sin(dot(seed.xy ,vec2(12.9898,78.233)))43758.5453);
}
float dither(vec2 seed,float varianceAmount) {float rand=getRand(seed);
float normVariance=varianceAmount/255.0;
float dither=mix(-normVariance,normVariance,rand);
return dither;
}
const float rgbdMaxRange=255.0;
vec4 toRGBD(vec3 color) {float maxRGB=maxEps(max(color.r,max(color.g,color.b)));
float D =max(rgbdMaxRange/maxRGB,1.);
D =clamp(floor(D)/255.0,0.,1.);
vec3 rgb=color.rgb
D;
rgb=toGammaSpace(rgb);
return vec4(clamp(rgb,0.,1.),D)
_LogEnabled @ chunk-B623SFX6.js?v=798a4441:52
Show 1 more frame
Show less
chunk-B623SFX6.js?v=798a4441:52 BJS - [08:00:53]: Offending line [208] in vertex code: transformedUV3 = vec4(textureTransform3 * vec4(uv.xy, 1.0, 0.0));
_LogEnabled @ chunk-B623SFX6.js?v=798a4441:52
Show 1 more frame
Show less
chunk-B623SFX6.js?v=798a4441:52 BJS - [08:00:53]: Error: VERTEX SHADER ERROR: 0:208: ‘=’ : dimension mismatch
ERROR: 0:208: ‘assign’ : cannot convert from ‘highp 4-component vector of float’ to ‘out highp 2-component vector of float’

Hi @acero

I usually get this kind of message (big red error in the console) where there are too many lights enlighting the same mesh. Shaders become too big to be rendered correctly.

see the limitation chapter here : Babylon.js docs

If i’m right, try to decrease the maxSimultaneousLights value to your materials.

Regards,

Boris

Hi bvaisman ,

I tried “mesh.material.maxSimultaneousLights = 1;” but the error remains.

If I go back to babylon 6.49.0 everything works fine.

Are you able to reproduce the error in a PG ?
That would be helpful…

I think the error is from node material created in NME, here it is:

It was error free before.

When I load material JSON to NME it logs:

17:17:28: Node material build successful
17:17:30: Shader compilation error: VERTEX SHADER ERROR: 0:199: ‘=’ : dimension mismatch ERROR: 0:199: ‘assign’ : cannot convert from ‘highp 4-component vector of float’ to ‘out highp 2-component vector of float’

It is strange, when I put Texture “Scale U” or “Scale V” to any other value than 1, NME throws:

19:1:9: Node material build successful
19:1:20: Shader compilation error: VERTEX SHADER ERROR: 0:196: ‘=’ : dimension mismatch ERROR: 0:196: ‘assign’ : cannot convert from ‘highp 4-component vector of float’ to ‘out highp 2-component vector of float’

When I go back to 1, error remains.

Here is simple reproduction:

Just change Texture “Scale U” to a value other than 1.

I can not seem to be able to repro

Anything else to do to ensure it does not compile ?

It is fixed: