My list of bugs

camera is too far right.

texture issue

buy button is kind of off screen

buy button is all the way off screen

unable to exit condoOS unless I hold tab and the invisible mouse cursor appears. (rare occurrence)

I’m standing on the ground after a jetpack flight and I can make the jetpack still play sounds and particle effects.

Bugs with no pictures:
-There is problem where crouching in first person makes the camera go inside the body.

-Looking down while running causes the player model to appear headless.

-You can clip through the water slide if you’re inside of it

The second one is Z-Fighting, not a texture issue

“z-fighting”? what?

I’m assuming it means when there is light where there shouldn’t be.

Basically, the faces of two objects are at the same spot, so there’s issues determining which one should actually appear (which is why there’s flickering).

Well, I’ve never seen flickering like this in games so I thought it was just normal texture flickering.

That’s known as Z-Fighting. They’re on the same plane and “fighting” to be seen by the player

That makes sense, I guess.

In 3D graphics “Z-Fighting” is an artifact of the depth buffer.

Here’s a quick rundown of the basic 3D pipeline to give some context:

  1. Shapes are represented in 3D euclidean space (X = forward/back, Y = left/right, Z = up/down) as a bunch of dots connected by triangles.

  2. These shapes are projected into camera / screen space (This converts the X,Y,Z coordinates into screen coordinates [X = Left/Right, Y = Up/Down]).

  3. Shapes are then rasterized (filled in) on the screen.

A problem arises when you have shapes that overlap.
Like when you’re rendering a player model.

If you were to draw the player in profile view on paper, you’d probably draw the furthest arm first, then the body, then the nearest arm such that things that were occluded would naturally get drawn over.

Now, this can be done by sorting all the triangles and shapes by distance, but that’s expensive to do. So here’s how it really works.

During the rasterization (fill-in) phase, the graphics card puts the colors of the texture on the screen pixel by pixel.

But before doing that we draw the depth (distance from camera) pixel by pixel.
As the graphics card goes to fill in a pixel, it checks the depth-buffer to see what the last written depth at that pixel is.

If the previously written value is greater than the value we want to add (far), we update it and fill in a color.
If the previously written value is less than the value we want to add (near), we discard the pixel (don’t draw it), thus preserving the previously written color.

This has the effect of sorting elements by depth because we can write over pixels that are further away, but preserve pixels that are closer.

NOW, here’s where Z-Fighting comes in.

The depth buffer uses values known as floating-point numbers.
These numbers are great because they can represent fractional amounts and performing mathematical operations on them is very fast (graphics cards are specifically optimized to do floating-point operations, G-FLOPS / T-FLOPS of speed).

However, one of the side-effects of floating-point numbers is that once you get to working with really small fractional differences (0.001 - 0.0005 for instance), the numerical accuracy starts to deteriorate. Soon numbers that shouldn’t be equal, are equal. or are greater / less than they should be.

This is the Z-Fighting, numbers that are really really close such that it because difficult to determine which pixels to discard or keep, thus the shapes fight each other to get into the frame-buffer.

4 Likes

So… It’s not a bug? I appreciate the explanation.

It’s still a bug; it’s just that it’s not the bug you thought it was.

Well, technically yeah it is a bug, we put 2 things really close to each other. :stuck_out_tongue:
Our bad, been meaning to remove it, just kinda forgot about it.

2 Likes

who invited the nerd haha wow am I right fellas

6 Likes

:frowning:

1 Like

We love you even when we don’t understand you, @Zak

1 Like

I understood just enough to have the explanation make sense. Thanks @Zak

:sunglasses: BLOWN THE FUCK OUT :sunglasses: