#gamedevtips ever played a game and seen little sparkly pixels in the environment even though it is seamless?

Lemme tell you what they are and how to fix them.
The dreaded sparklies are actually pixels of the sky dome or fog that get rendered at the seams of environment geometry- usually where two modules snap together.

So what causes it? They are perfectly flush, so why does the engine draw background?

Well, the answer is maths
It comes down to rasterizing- turning the polygons into pixels.

Imagine you have graph paper, a big black marker and a ruler. Place the ruler down at an angle and then imagine filling in squares with your marker. They can be on or off.

Your decision is called aliasing.
The decision you make as to if the grid square is filled in or not is the rules defined in your head. Say, i it is half covered or more you fill it in.

Now, imagine someone else did the same exercise with the same ruler angle but were not able to see your result?
What are the odds of the two matching up perfectly?

Yeah. No high.

But, if a computer does it, shouldn't it use the same formula on both sides?

Yes.

You won't see a seam.
But...

Let's say one edge has two verts. Call them A and Z.

The other has three. A and Z, but also K in the middle.

So one side is filling in A to Z
One side is filling in A to K, then K to Z.

A---------------------Z
A----------K----------Z
Now you will have sparklies.

Why?

Well, the position of the verts is stored in floats. A float is something like 0.252637111111000000263738381.

If we round that down, we get 0.2527

By rounding down the digits, an error creeps in. Both edges have different values.
So what that means is, the rounded down positions of A and Z are the same, but rasterizing between A---Z is different than A---K and then K---Z.

Aliasing results in squares being filled in differently on your grid.

And thus, floating point errors cause your sparklies.
So there are a couple of ways to solve this.

One. Grab your knife tool at cut verts into both sides, and snap them together. If you have six verts one edge and six on the other, and they are snapped- there will be no errors.

All the values will round to the same.
Method 2- allow your modules to have a lip. Rather than paper thin endings that snap together, extrude a little border out- or give the module some thickness. This causes overdraw, so don't go nuts with this.

Method 3- switch out the skydome as soon as you get indoors to black
Again, not ideal. Especially of you use global fogs.

Many skydomes can be sky hemispheres- which means your fog won't render below the horizon- however this won't stop wall sparkles.
The easiest way is to ensure your modules have matching verts at the borders.

This can require a little planning, but isn't too hard to do.

So now you know. I hope that helps.
All this is illustrated with sexy diagrams in my upcoming book on game art.

Stay tuned folks. ImageImageImage
This will be me taking artists on a journey explaining the nuts and bolts techniques to not only how to do things but why.

Things like why we get seams in normal maps, why our bakes are wonky, why our character mouths look like garbage when they smile and so on.
In the meantime, you can pat me on the head and give me a biscuit here.

ko-fi.com/dellak
Mmmm money.
Try this.

Make two quads in your 3d app. Snap them together but do not weld.
Make the background bright and pan and zoom around a bit. No sparkles.

Now divide one up- a few cuts at random.

Pan and zoom around a bit.

See?

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Delaney King 👩🏻

Delaney King 👩🏻 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @delaneykingrox

Feb 11
I put in two complaints to the IGDA, and both were ignored. I have seen infamously problematic people praised and given awards and grants.
The IGDA has done nothing, absolutely nothing for the game workers.
As a prominent queer woman in games, I cop a lot of shit. But when it gets bad enough that I needed the IGDA to step in- crickets.

I nearly left the industry because of a couple of creepy as fuck stalkers, and the abuse of Jennifer, made going to events terrify me.
I stooped feeling part of the community and retreated into my shell.
Up until then I was heavily involved in building the industry, pushing for women in games, lgbtiqa advocacy and teaching art skills.

Now? Meh. No thanks.
Read 4 tweets
Feb 11
A quick #gamedev hand painted texture lesson.

For this tip I am going to be using a character taken from Vampire Bloodlines... which is an old game that uses the source engine.

This is the female tremere player character imported into Blender. Again, this is not my work. Image
Here is a quick paintover done in photoshop to show a possible direction the textures can go. I wanted to show how values, lighting directions and contrast can be used to give hand painted models more form and unity. Image
And side by side. What I would like you to do is squint at the pictures. Image
Read 21 tweets
Feb 11
I want people to really understand that making game assets (real time assets) require a special set of skills to make things run fast and within tight constraints.

It isn't basic 3D skills. It is actually a discipline in and of itself.

This prop is a TV prop. Not a game one.
This is especially important to hear if you think modern engines that have advanced mesh compression techniques somehow save you from having to care about this stuff.

If this TV was an intractable object it needs to work with the highlight shader, or take damage decals.
Read 7 tweets
Feb 10
Book of Boba Fett failed the basics of storytelling and as a result all the cool visuals and events were wasted.

Without emotional connection there is no tension, without tension there is no release.

I will give one example:
When The Mandalorian, who we care about, is in his darkest moment in the shootout- he is saved by force powers.

He looks up, and there is Grogu and R2D2.

BOOOOOM!

We get the payoff- Grogu chose.
Instead we get a weird scene were comic relief woman meets him and then when he is reunited with Dinn he doesn't have time to warmly greet him.

Din should have his helmet ripped off, and he is bloody and is in his lowest point, feeling abandoned.

And then he sees Grogu.
Read 36 tweets
Jan 14
Incel is the worst PC chip manufacturer. Once you turn an incel on it just makes an awful noise and you cannot turn it off.
Okay, I'll go.
Incel chips want to be inside but they don't have the ram.

Incel chips are incompatible with anything PC.
Read 10 tweets
Jan 13
For artists:
□ Show wireframes and textures on your folio- we need to see how efficient and organised you are.

□ Create a spread of styles as we tend to look for artists who can hit the ground running in the style of our game. Make specific art for a specific job.
□ avoid highly sexualised work in your folio unless the job is specifically for the adult industry. Hirers will just see a "future sexual harassment lawsuit" flashing before their eyes.
□ its is very unlikely you will get a lead character role to begin with- or even a secondary character role- you are most likely going to be picked up for asset creation so ensure you have weapons, rocks, plants, furniture etc to show you are open for basic tasks.
Read 12 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

:(