How-To: True Fullbright in High Fidelity


#1

Credit to HiFi’s Alan for telling me about this in-world. The technique is not documented in writing anywhere, so I thought I’d share how to do it here for everyone, or at least Blender users anyway.

For a long time, people have faked a fullbright effect in HiFi by using a texture set to Emissive. This is NOT actually fullbright. Lights and shadows still cast onto the mesh, often resulting in overly-bright textures.

What I’m going to show you is how to force the engine to render the EXACT colors in the texture at their original intensity, with no light or lamp ever affecting them. Even skybox lighting won’t cast on them.

image
Copy the settings above, or just use these directions:

  1. Make sure you are in Blender Render, not Cycles.
  2. Set Diffuse Color and Specular Color to black (#000000)
  3. Set Specular shader to Wardiso
  4. Turn on “Shadeless”
  5. In the texture tab, make sure only Diffuse Color has any Influence set. Like so:
    image
    Leave the other settings to their default.

That’s it. The texture will now appear fullbright.

What can you do with this? A lot. One major use case is baked lighting. You can bake beautiful, globally-illuminated shadows and lighting in Blender’s Cycles and bring that in to HiFi. (Note that we have strict texture limits at the moment, though.) You can also create incredibly stylized worlds.

Here’s one I just made. A VR recreation of Pallet Town from Pokemon Red/Blue for the GameBoy, in the original 4-color palette. The entire town (all models, textures, and skybox) total less than 1 MB. It’s incredibly lightweight and loads super fast. And only took about 2.5 days to make. You’d be surprised with what you can do with only 4 colors.

HiFi URL if you want to visit it and see the fullbright trick in action:
hifi://heavenlybrew/1108.96,7545.9,-6619.42/0,0.886516,0,-0.462697

I hope by sharing this, we can start seeing more crazy, stylized worlds in High Fidelity. Enjoy.


#2

nice build
maybe u need one of these


#3

Hmm, noted. Ill add this to the plugin as well for short hand material setting. Thanks for figuring it out :slight_smile:

The danger about using emission is the fact that at some point the want to add actual glow so it definitely was the wrong way to go around (especially since its addative emission, so blacks would still get effected by lights and show the original color, which make sense, as it is supposed to emit (Blacks after all dont emit :slight_smile: ))

Does the shadless texture get effected by light at all, including blacks? or is it truely fullbright


#4

I wouldn’t have made this thread if it was still affected by light. That would mean it’s not actually fullbright and I was just wasting all of your time. lol

No, nothing (in terms of light) affects it. Neither light entities nor the zone skybox affect it. If you go to my Pallet Town build you’ll see that your avatar is still being lit and shadowed by the zone’s keylight and ambient light. But the world around you isn’t. Doesn’t matter if the texture is white or black. With the Emission way people were using before, light WOULD affect it, and very light and very dark colors become crushed and lose their detail. With this method, that doesn’t happen.

Here’s an earlier test I posted on Twitter last week to verify this:


I made a cube with a grayscale gradient texture. It’s using the fullbright trick I outlined above. Note that the black is still black, despite that I have a light entity with a VERY high intensity sitting right above it. My avatar IS being lit by that light, as you can see (the white glow on my penguin) - but the cube below me isn’t. :sunglasses:

The only thing that still affect the color with my method above is Haze from the zone entity but that’s not light, that’s just a fog effect, which is entirely different.


#5

I’ve encountered an unfortunate limitation with fullbright right now in the engine. Apparently High Fidelity only supports it with static meshes.

Any mesh with rigging data (that means animated Model Entities as well avatars) will simply be invisible if you attempt to make it fullbright using the technique above. You’ll still have to use Emissive for anything rigged, it seems, unless they fix this limitation in the future (I’m not holding my breath, there aren’t enough users that would care). I had to use Emissive for this low-poly “electric mouse” avatar I made, and as you can see, the colors are off. They’re brighter than they should be. Oh well.
image

With that said, you can still do a lot if you only stick to static stuff. Or, theoretically you could bypass this issue for things that don’t need to deform (only needing whole-mesh translate and rotate), by importing the fullbright model as a static mesh & then parenting it to a bone in a separate animated Model Entity…


#6

CC: one of the @Sam (s) should look into it (not sure what Samuel’s name is here :slight_smile: )