# Weird pixelized coloring near camera

**URL:** <https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811>\
**Category:** Questions\
**Created:** [October 14, 2022, 4:41pm UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811 "2022-10-14T16:41:05Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 14, 2022, 4:41pm UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/1 "2022-10-14T16:41:05Z")

</div>

So I have an open world map that I’m adding a bunch of grass to, and all seems well except one issue-  
When the grass is close to the camera it looks really weird. You can see this in the screen shot below:

 ![cropped](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/8/b/8b7f421ff89c79da73b8dc1dc6afefb348415269.jpeg)

However, in this playground the issue does not seem to happen:

> **[Babylon.js Playground](https://playground.babylonjs.com/#KBS9I5%2327350)**
>
> Babylon.js playground is a live editor for Babylon.js WebGL 3D scenes

Lastly, I had question about baking wind-blowing animations into the grass - I was thinking I would have a physics sim play out in blender and just record it, but does anyone have any tips or resources for turning that into an animation?

---

<div class="post-metadata">

**Author:** ![slin](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/slin/32/36084_2.png) [@slin](https://forum.babylonjs.com/u/slin)\
**Post date:** [October 14, 2022, 10:19pm UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/2 "2022-10-14T22:19:01Z")

</div>

Did you change the UV scale for the grass texture in the open world map? You can find the texture in BJS inspector and check.

BTW, this open world map looks very cool now! Is the high mountains accessible for the character?

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 14, 2022, 11:05pm UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/3 "2022-10-14T23:05:03Z")

</div>

> BTW, this open world map looks very cool now! Is the high mountains accessible for the character?

Sure is! Part of my journey has been figuring out ways to make this work in the browser within reasonable parameters (not using too much ram, etc.) such that it works on most peoples laptops. I’ll be posting it in the demos topic later. I’ll probably use it for the GUI competition 😃

> Did you change the UV scale for the grass texture in the open world map? You can find the texture in BJS inspector and check.

No, everything I did was pretty standard - the editing that I did do was split this grass model out from a larger gltf file that had other grass models from a pack I found on sketchfab. I then re-centered the model on itself, but I can’t imagine any of that being the issue.

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [October 15, 2022, 10:43am UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/4 "2022-10-15T10:43:16Z")

</div>

You could make a snapshot of a frame with [Spector](https://spector.babylonjs.com/) and see if you can find something strange in it. We could also have a look if you are able to provide a link to a live repro.

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 15, 2022, 6:54pm UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/5 "2022-10-15T18:54:20Z")

</div>

Woah, nice tool, I’ll try that out. I’ll also try to get this up live, I was only just starting to play with adding grass to my map; I’ll move quickly to just have it added to the areas around the base of each tree using that same algo I used in the playground. The live demo itself is here:  
[https://g7r7sz.colyseus.dev/client/index.html](https://g7r7sz.colyseus.dev/client/index.html)  
(frame rate is awful for some reason compared to my localhost version)

I’ll post back here once the grass is up.

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 17, 2022, 3:27am UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/6 "2022-10-17T03:27:12Z")

</div>

@Evgeni_Popov Unfortunately I won’t be able to work on this till Tuesday probably. I realized I need to use some precomputed results regarding the placement of each grass instance, and doing that right will take a little more time.

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 19, 2022, 6:05am UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/7 "2022-10-19T06:05:33Z")

</div>

@Evgeni_Popov btw, I had another tangential question regarding thin instances I was hoping to ask you-  
if I have 140k grass model thin instances but I want to reduce the burden on the gpu, if I were to set the scaling to zero for all thin instances not located in the players current grid region on the map (I have it divided up in to 20x20 grid regions) would this stop the gpu from computing for those instances? And if not, would it at least reduce by some noticeable amount?

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [October 19, 2022, 8:48am UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/8 "2022-10-19T08:48:24Z")

</div>

Yes, it would reduce the burden a bit because the triangles with vertex scaling = 0 would have no area so the fragment shader will never be executed for them. You could reduce the burden even further by making sure those triangles have 0 area at the geometry level: you can do this by copying the 2nd index into the 3rd of the index array for each triangle that should be excluded from rasterization.

For eg, to remove the first triangle of the ground plane:

> **[Babylon.js Playground](https://playground.babylonjs.com/#HPRW7A)**
>
> Babylon.js playground is a live editor for Babylon.js WebGL 3D scenes

[…] Ah, by re-reading your question you want to do this for thin instances… So, this latter technic won’t work because you have a single instance of the mesh. If you remove a triangle this way it will be removed for all instances.

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 21, 2022, 1:53am UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/9 "2022-10-21T01:53:54Z")

</div>

So I tried out turning off the grass thin instances via setting scaling to zero, and turning those thin instances back on again via the reverse operation of setting their scaling back to it’s original value. Unfortunately it takes a really long time to do so.

To solve this issue of wanting to have 1400 - 1600 instances be shown only when the player is the corresponding grid region, I was thinking maybe I could make a copy from the grass source mesh for each grid on the map. I would then create thin instances that pertain to a given region and have the visibility of that grid’s source mesh toggled on and off. Would I still be getting the performance savings by doing it this way?

The alternative, that I’m trying right now, would be the same ^ but use regular instanced meshes instead of thin instances.

Do either of these sound like they would work? Are there any better ways to go about this?

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [October 21, 2022, 10:27am UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/10 "2022-10-21T10:27:10Z")

</div>

> [@arcman7](#):
>
> I would then create thin instances that pertain to a given region and have the visibility of that grid’s source mesh toggled on and off

This strategy looks good to me as long as your grid cell is big enough (if the source mesh has only 5 thin instances it’s probably not interesting), as your grid is already your visibility unit.

> [@arcman7](#):
>
> have the visibility of that grid’s source mesh toggled on and off. Would I still be getting the performance savings by doing it this way?

I think it’s a perf saving if you track which grid cells become visible/disappear when you move the camera instead of scanning all the grid cells to update their visibility status. In the former strategy, you will update the status of only a fraction of the grid cells, whereas in the latter you will update all the grid cells. Though it probably warrants some testing as just looping over all the cells is easier than tracking which cells become visible/invisible…

> [@arcman7](#):
>
> The alternative, that I’m trying right now, would be the same ^ but use regular instanced meshes instead of thin instances.

Using regular instanced meshes is probably not the right strategy here as you would need to create tens (or more) thousands of them and the system won’t be able to handle so many meshes.

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 21, 2022, 8:01pm UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/11 "2022-10-21T20:01:16Z")

</div>

> [@Evgeni\_Popov](#):
>
> This strategy looks good to me as long as your grid cell is big enough (if the source mesh has only 5 thin instances it’s probably not interesting), as your grid is already your visibility unit.

Each grid’s source mesh for the grass would be responsible for ~ 1400 - 1600 thin instances. So if this strategy works, it would definitely show.

I have a system that checks whether the users position has crossed any grid boundaries, and if so freezes the previous grid and unfreezes the new current grid; so I’m only ever iterating over two grids worth of objects / instances (~ (1400 - 1600) x 2). I was considering adding some logic that also operates on the surrounding grids as well, but I’ll save that for later.

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 23, 2022, 6:31pm UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/12 "2022-10-23T18:31:30Z")

</div>

Okay, so this approach seems to be performing a bit better, but I’m still hitting an issue:

```auto
Map.ts:651 ** setCurrGridZone - calling _loadGrid 10 6
setCurrGridZone @ Map.ts:651
onPlayerMoveCallback @ Game.ts:971
_updateFromKeyboardControls @ Player.ts:793
_beforeRenderUpdate @ Player.ts:984
notifyObservers @ observable.ts:325
render @ scene.ts:3844
renderLoop @ gameUtils.ts:912
_renderFrame @ engine.ts:1303
_renderLoop @ engine.ts:1321
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
requestAnimationFrame (async)
QueueNewFrame @ thinEngine.ts:5961
_queueNewFrame @ thinEngine.ts:1634
_renderLoop @ engine.ts:1340
localhost/:1 [.WebGL-0000725C086CA200] GL_INVALID_OPERATION: Error: 0x00000502, in ..\..\third_party\angle\src\libANGLE\renderer\d3d\VertexDataManager.cpp, reserveSpaceForAttrib:520. Internal error: 0x00000502: Vertex buffer is not big enough for the draw call.
localhost/:1 [.WebGL-0000725C086CA200] GL_INVALID_OPERATION: Error: 0x00000502, in ..\..\third_party\angle\src\libANGLE\renderer\d3d\VertexDataManager.cpp, reserveSpaceForAttrib:520. Internal error: 0x00000502: Vertex buffer is not big enough for the draw call.
localhost/:1 [.WebGL-0000725C086CA200] GL_INVALID_OPERATION: Error: 0x00000502, in ..\..\third_party\angle\src\libANGLE\renderer\d3d\VertexDataManager.cpp, reserveSpaceForAttrib:520. Internal error: 0x00000502: Vertex buffer is not big enough for the draw call.
localhost/:1 [.WebGL-0000725C086CA200] GL_INVALID_OPERATION: Error: 0x00000502, in ..\..\third_party\angle\src\libANGLE\renderer\d3d\VertexDataManager.cpp, reserveSpaceForAttrib:520. Internal error: 0x00000502: Vertex buffer is not big enough for the draw call.

```

I don’t really understand this error message, as I’ve already tested out loading all grass across the entire map at once, so why would loading 1/(20 x 20) of that become a space allocation issue? This is the the method that I use to clone the grass mesh per grid:

```auto
const getGridResourceTemplate = (sourceMesh: Mesh, row: number, col: number) => {
  const sourceMeshCopy = sourceMesh.clone(
    `${sourceMesh.name}_EEGridSourceMesh[${row}][${col}]`,
    sourceMesh.parent,
  )

  return {
    matrices: [],
    sourceMesh: sourceMeshCopy,
    thinInstanceBuffer: new Float32Array(),
    ees: [],
  }
}

```

Am I missing something here?

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [October 24, 2022, 8:34am UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/13 "2022-10-24T08:34:39Z")

</div>

Are you sure you have enough data in the thin instance buffers to account for `mesh.thinInstanceCount` instances?

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 24, 2022, 7:00pm UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/14 "2022-10-24T19:00:16Z")

</div>

I think so… here’s how I load a given grid:

```auto
  _loadGrid(row: row, col: col) {
    /* grid[row][col] = return value of getGridResourceTemplate */
    const grid = this._eeResourcesGrid[row][col]
    console.log('loadGrid: ', grid)
    for (const [_eeName, eeResource] of Object.entries(grid)) {
      const matrices = eeResource['matrices']
      const sourceMesh = eeResource['sourceMesh']
      const thinInstanceBuffer = createThinInstances(
        sourceMesh,
        matrices,
      )
      eeResource['thinInstanceBuffer'] = thinInstanceBuffer
  
      this._setGridLoaded(row, col, true)
    }

  }

export const createThinInstances = (
  sourceMesh: Mesh | AbstractMesh,
  matricies: Matrix[],
) => {
  const matricesData = new Float32Array(matricies.length * 16)

  let mat: Matrix
  for (let i = 0; i < matricies.length; i++) {
    mat = matricies[i]
    mat.copyToArray(matricesData, i * 16)
  }

  sourceMesh.parent = null
  sourceMesh.position.setAll(0)
  sourceMesh.scaling.setAll(1)
  sourceMesh.rotation.setAll(0)
  sourceMesh.rotationQuaternion = new Quaternion()

  //@ts-ignore
  sourceMesh.thinInstanceSetBuffer(
    "matrix", matricesData, 16
  )

  return matricesData
}

```

I’m wondering if when I create these per grid region clones of the grass mesh, I’m doing it in such a way that babylon.js thinks each one shares all the same thin instances (across all grids)?

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 24, 2022, 7:44pm UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/15 "2022-10-24T19:44:03Z")

</div>

@Evgeni_Popov I think it has to do with this

> [@Mesh.clone() does not play well with Thin Instance](https://forum.babylonjs.com/t/mesh-clone-does-not-play-well-with-thin-instance/27495):
>
> Hi there, It seems that even after cloning a mesh, all clones are still sharing the same Thin Instance capabilities, i.e. make 10 clones, create Thin Instances for each of them, and only the last call to mesh.thinInstanceSetBuffer( 'matrix' , ... ) produces something, previous calls seems to be overwritten. Use case: I’m currently planting tree on a rather big map, each map sector having its own set of Thin Instance (so a sector can be turned off when it’s too far away). Playground demonstrat…

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 24, 2022, 7:48pm UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/16 "2022-10-24T19:48:44Z")

</div>

Okay yeah that was it. I’m launching this on the live demo link now so that you can see how the grass behaves.

Just know that you’ll need to give the game like 15 seconds after the you see the character load in, for some reason loading the audio first kills the frame rate.

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [October 25, 2022, 9:35am UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/17 "2022-10-25T09:35:36Z")

</div>

I can’t see the grass?

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/9/f/9f261a3f75da64940aa21e54826813202d3c72f2.jpeg)

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 25, 2022, 2:14pm UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/18 "2022-10-25T14:14:16Z")

</div>

Shoot so sorry, I’ve not yet created a checklist behind each deployment where changes to the environment are being made. There’s a plain json file that holds the blueprints for the world map’s trees, rocks, grass etc. My installer simply checks if the file exists atm, but not if you have the newest version downloaded; working on a fix for that.

---

<div class="post-metadata">

**Author:** ![arcman7](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/arcman7/32/20249_2.png) [@arcman7](https://forum.babylonjs.com/u/arcman7)\
**Post date:** [October 26, 2022, 7:04am UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/19 "2022-10-26T07:04:22Z")

</div>

@Evgeni_Popov It should work now. Please let me know if not, thank you!

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [October 26, 2022, 7:48am UTC](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811/20 "2022-10-26T07:48:05Z")

</div>

It seems the problem comes from the bump texture: if we remove it there’s no more flickering.

You should create a minimal repro in the Playground with only a single grass mesh so that it’s easier for us to look for the problem.

[Next page](https://forum.babylonjs.com/t/weird-pixelized-coloring-near-camera/34811.md?page=2)
