JCPalmer

Members
  • Content count

    1,864
  • Joined

  • Last visited

  • Days Won

    7

JCPalmer last won the day on May 15

JCPalmer had the most liked content!

3 Followers

About JCPalmer

  • Rank
    Advanced Member

Contact Methods

  • Twitter
    whoopstopia

Profile Information

  • Gender
    Male
  • Location
    Rochester, NY
  • Interests
    Power Napping

Recent Profile Visitors

1,957 profile views
  1. Pushed up a fix to exporter. My meshes with skeletons have no artifacts. Re-export, check, and mark this '[Solved]' if ok.
  2. Update, I now know what the problem is. Tower of Babel has switched to packed matrix indexes like a .babylon file. They are now using the same code on Python side, but there must be something wrong with the unpacking code inserted into the generated code.
  3. if a node is a sphere, you have 400, so you have 400 draw calls. You are not assigning a material, but if you did, as long as it is the same material, then you could create 1 sphere. 399 of them could be instances. If edges are LinesMesh, then you are creating 600 of them. A LinesMesh can have more than one line. accumulate all the point then use the MeshBuilder.createLineSystem().
  4. Not sure TOB is that relevant after instancing. A mesh is a mesh. I know parenting has nothing to do with draw calls. I have not actually heard of linking or joining. Is this correct terminology?
  5. If it helps, the creation which causes the problem is published here: https://github.com/BabylonJS/Extensions/blob/master/QueuedInterpolation/src/entrances/FireEntrance.ts#L51
  6. I thought I was, since I Fetched / Merged yesterday, then go t this from preview. I did again just now to be sure, it still happens. I should note I have 2 uses in the same scene. One is a camp fire which works. The 2nd, a temporary effect when a mesh appears, does not. I did check that the mesh being applied to has UV, and it does. Am beginning to update my scenes to 3.0. Things are running really rough. Will try to resolve others so this is the only problem.
  7. Looking at it, uv is only declare when UV! is defined, but the 102 line section which references is only included when DIFFUSE is defined.
  8. For doc purposes, I just got the Firefox 16 message:
  9. I am using the fire material with my own textures. I was getting a complaint about shadows with the production and the preview BJS, but it was working. I put the preview version of fire in and the vertex shader fails over and over. BJS - [15:08:28]: Error: ERROR: 0:102: 'uv' : undeclared identifier ERROR: 0:102: 'assign' : cannot convert from 'float' to 'out highp 2-component vector of float' ERROR: 0:124: 'x' : field selection requires structure, vector, or interface block on left hand side ERROR: 0:125: 'y' : field selection requires structure, vector, or interface block on left hand side ERROR: 0:126: 'x' : field selection requires structure, vector, or interface block on left hand side ERROR: 0:127: 'y' : field selection requires structure, vector, or interface block on left hand side ERROR: 0:128: 'x' : field selection requires structure, vector, or interface block on left hand side ERROR: 0:129: 'y' : field selection requires structure, vector, or interface block on left hand side BJS - [15:08:28]: Vertex shader: fire 1 #version 300 es 2 #define DIFFUSE 3 #define ALPHATEST 4 #define BonesPerMesh 20 5 #define NUM_BONE_INFLUENCERS 4 6 7 precision highp float; 8 9 in vec3 position; 10 #ifdef UV1 11 in vec2 uv; 12 #endif 13 #ifdef UV2 14 in vec2 uv2; 15 #endif 16 #ifdef VERTEXCOLOR 17 in vec4 color; 18 #endif 19 #if NUM_BONE_INFLUENCERS>0 20 uniform mat4 mBones[BonesPerMesh]; 21 in vec4 matricesIndices; 22 in vec4 matricesWeights; 23 #if NUM_BONE_INFLUENCERS>4 24 in vec4 matricesIndicesExtra; 25 in vec4 matricesWeightsExtra; 26 #endif 27 #endif 28 29 #ifdef INSTANCES 30 in vec4 world0; 31 in vec4 world1; 32 in vec4 world2; 33 in vec4 world3; 34 #else 35 uniform mat4 world; 36 #endif 37 uniform mat4 view; 38 uniform mat4 viewProjection; 39 #ifdef DIFFUSE 40 out vec2 vDiffuseUV; 41 #endif 42 #ifdef POINTSIZE 43 uniform float pointSize; 44 #endif 45 46 out vec3 vPositionW; 47 #ifdef VERTEXCOLOR 48 out vec4 vColor; 49 #endif 50 #ifdef CLIPPLANE 51 uniform vec4 vClipPlane; 52 out float fClipDistance; 53 #endif 54 #ifdef FOG 55 out vec3 vFogDistance; 56 #endif 57 58 uniform float time; 59 uniform float speed; 60 #ifdef DIFFUSE 61 out vec2 vDistortionCoords1; 62 out vec2 vDistortionCoords2; 63 out vec2 vDistortionCoords3; 64 #endif 65 void main(void) { 66 #ifdef INSTANCES 67 mat4 finalWorld=mat4(world0,world1,world2,world3); 68 #else 69 mat4 finalWorld=world; 70 #endif 71 #if NUM_BONE_INFLUENCERS>0 72 mat4 influence; 73 influence=mBones[int(matricesIndices[0])]*matricesWeights[0]; 74 #if NUM_BONE_INFLUENCERS>1 75 influence+=mBones[int(matricesIndices[1])]*matricesWeights[1]; 76 #endif 77 #if NUM_BONE_INFLUENCERS>2 78 influence+=mBones[int(matricesIndices[2])]*matricesWeights[2]; 79 #endif 80 #if NUM_BONE_INFLUENCERS>3 81 influence+=mBones[int(matricesIndices[3])]*matricesWeights[3]; 82 #endif 83 #if NUM_BONE_INFLUENCERS>4 84 influence+=mBones[int(matricesIndicesExtra[0])]*matricesWeightsExtra[0]; 85 #endif 86 #if NUM_BONE_INFLUENCERS>5 87 influence+=mBones[int(matricesIndicesExtra[1])]*matricesWeightsExtra[1]; 88 #endif 89 #if NUM_BONE_INFLUENCERS>6 90 influence+=mBones[int(matricesIndicesExtra[2])]*matricesWeightsExtra[2]; 91 #endif 92 #if NUM_BONE_INFLUENCERS>7 93 influence+=mBones[int(matricesIndicesExtra[3])]*matricesWeightsExtra[3]; 94 #endif 95 finalWorld=finalWorld*influence; 96 #endif 97 gl_Position=viewProjection*finalWorld*vec4(position,1.0); 98 vec4 worldPos=finalWorld*vec4(position,1.0); 99 vPositionW=vec3(worldPos); 100 101 #ifdef DIFFUSE 102 vDiffuseUV=uv; 103 vDiffuseUV.y-=0.2; 104 #endif 105 106 #ifdef CLIPPLANE 107 fClipDistance=dot(worldPos,vClipPlane); 108 #endif 109 110 #ifdef FOG 111 vFogDistance=(view*worldPos).xyz; 112 #endif 113 114 #ifdef VERTEXCOLOR 115 vColor=color; 116 #endif 117 118 #ifdef POINTSIZE 119 gl_PointSize=pointSize; 120 #endif 121 #ifdef DIFFUSE 122 123 vec3 layerSpeed=vec3(-0.2,-0.52,-0.1)*speed; 124 vDistortionCoords1.x=uv.x; 125 vDistortionCoords1.y=uv.y+layerSpeed.x*time/1000.0; 126 vDistortionCoords2.x=uv.x; 127 vDistortionCoords2.y=uv.y+layerSpeed.y*time/1000.0; 128 vDistortionCoords3.x=uv.x; 129 vDistortionCoords3.y=uv.y+layerSpeed.z*time/1000.0; 130 #endif 131 }
  10. Yeah, I am looking at problems with skeletons in my own scenes right now. Please also post your .log file. Will update as I find more.
  11. How are you measuring memory? If you are using a tool external to FireFox like Windows Resource Monitor, then you should probably see memory move from free to standby as succeeding scenes load. That is so you may hit the back button. As I said before firefox does not reload scenes when you go back. Click this scene. There is an effect (1 of 3 randomly decided) run at the beginning, then animation. In the middle, go to any other page. Then hit the back button. In Firefox, it picks up right from where it left off. Other browsers reload & start over. To do this, it must keep the memory for the scene. You might not like it, but I see no problem, per say.
  12. I do not need to do this, but I modified the button of one of my scenes to do a engine.dispose() to see what happens. In Firefox, there is a memory snapshot thing. I snap before and after the dispose, and only small amount of the typed array / ArrayBuffer, and JS array data goes down. Before: After: ArrayBuffers & Arrays do not have a dispose, the GC is supposed to clean when they go out of scope. The only thing being actively disposed is GPU resources. Not sure you can actually request a GC like in Java (even then Java can just ignore you). I even actively re-assigned the Float32Array member, _data, of Buffer.ts in the dispose(). This build yielded the same results. When I load a different URL or even reload the same in the same tab, everything is cleaned up. You might be looking at system memory though. One thing I noticed is Firefox lets you go back to previous scenes. IT DOES NOT reload them. If you do a lot of refreshing during Firefox will log something like "max webgl sessions of 16 exceeded, last one dropped". It's a feature!
  13. https://github.com/BabylonJS/Babylon.js/blob/master/src/babylon.scene.ts#L1683 What's a "table"?
  14. For A: 12 meshes with 60k vertices does not seem wildly excessive. I personally do not believe in scene optimizer, though it might do a good job. You should probably try to isolate if there is one big area which is your bottle neck. Assuming yes there is you can adjust. Blind optimization checklist following rarely gets it down to the real problem. Assuming desktop profiling might not be a good enough indicator, try progressively eliminating stuff from the scene one at a time. Hopefully, after one it will just pop up. Then you will be dealing with hard things to attack. Just dumping PBR material for the simplest Standard material would be an example. Also, since you are using 2.5, I assume you are using skeleton animation. How many bones per skeleton are you using?
  15. You close it yourself, by editing the first post, putting a '[SOVLED]' at front of topic.