[VRChat] Materials for Floors and Walls: Color, Pattern, and Gloss

Created: 2026-09-08Last updated: 2026-09-09

Sorting out Shader, Material, and Texture with a wallpaper analogy, then applying a tile image to a 6m floor. Covers deciding Tiling from real-world size, what actually causes pink, and the pitfall of shared materials.

Once you can place a floor and walk on it, the next step is making grey boxes look like a room. Changing the floor's color, adding a tile pattern, and pulling the gloss down a little changes the whole impression of the same space.

Unity lines up three similarly-named things, though: Shader, Material, Texture. Work without knowing what goes where and your floor turns pink, or the pattern comes out the wrong size.

This article sorts out those three roles, then applies a tile image to a 6m-square floor and sets the pattern size in real-world terms.

The same board looking like plain color, tile, and wood grain, from surface settings alone

What You'll Learn

  • How Shader, Material, and Texture differ
  • How to set pattern size (Tiling) from real-world measurements
  • What actually causes a material to go pink
  • What happens when you share one material

Start with a 6m-square floor. If you don't have one, build it in your first world.

Sponsored


Wallpaper makes it clear

The relationship between the three sorts itself out if you think of hanging wallpaper in a room.

Texture and Shader gathered into a Material, applied to the floor by a Renderer
  • Texture is the wallpaper pattern itself. The image file of wood grain or tile
  • Shader is the kind of surface. It sets the rules for how light behaves, like "matte wall" or "glossy floor"
  • Material is that pattern applied on that surface. Pattern, color, and gloss bundled into one

What attaches to an object is the Material. A Texture is a part you plug into one of its fields, and a Shader is the type you pick at the very top of the Material.

The order of work goes like this.

  1. Create a material and assign it to the object
  2. Pick a shader at the top of the material
  3. Fields for color, image, bumps, and so on appear according to that shader
  4. Plug textures into those fields

Change the shader and the whole list of fields below swaps out. Seeing that happen once makes the material panel readable afterwards.

For VRChat worlds, Standard is plenty for floors and walls. It covers color, metalness, gloss, and bumps, and it connects cleanly with baked lighting.

Shaders used for avatar customization, like lilToon, aren't suited to world floors and walls. They're built around how characters look, so they don't mesh with the room's lighting and get heavy across large surfaces. Remember avatar shaders and world shaders as separate things.

Sponsored

Hands-On: Tile the floor

Apply a tile pattern to a 6m-square floor and adjust the pattern size. When you're done, one tile is about 37cm square, which looks natural from standing height.

1. Create a material and assign it

Stop Play and create a Materials folder under Assets in Project. Right-click inside it, choose "Create → Material," and name it FloorTile.

Set these values in the Inspector.

FieldSettingMeaning
ShaderStandardThe basic light-receiving surface
Rendering ModeOpaqueAn opaque floor
Albedo colorWhiteShow the image's colors as they are
Metallic0Not metal
Smoothness0.2Keeps strong gloss down

Drag FloorTile from Project onto Floor in the Hierarchy. It worked if it lands in the Materials field on Floor's Mesh Renderer.

Albedo is the surface's base color. With no image in yet, the color field alone decides the whole floor's color. Try setting Albedo to a blue-grey and you'll see the floor change. Set it back to white once you've confirmed it.

2. Import a tile image

There's a practice tile image (PNG, 1024×1024) available for comparing patterns. It was made for this article and doesn't reproduce any real product.

The blue-grey practice tile image, holding a 4-by-4 pattern

The preview is WebP. Use the linked PNG when importing into Unity.

  1. Create a Textures folder under Assets
  2. Drag the saved PNG into that folder
  3. Select the image, check the following in the Inspector, and press "Apply"
Import settingValueReason
Texture TypeDefaultUsed as an ordinary color image
sRGB (Color Texture)OnIt's an image seen as color
Wrap ModeRepeatRepeat past the edges
Generate Mip MapsOnSuppresses shimmer from a distance
Max Size1024Matches the practice image's size

What you're editing here is how the image asset is imported, not the material. It's a separate panel from the material settings, so keep the two apart.

Back in FloorTile, drag the image you just imported into the image slot to the left of Albedo. The pattern appearing on the floor means it worked.

Leave Albedo's color white. Standard multiplies the color setting into the image, so a tinted color makes it look darker and muddier than the original.

3. Set Tiling from real-world size

The tile you just applied is probably too big. Let's fix that.

Tiling is how many times the image repeats across one surface. The number alone tells you nothing about size, so think in terms of how many meters one tile actually covers.

On the same 6m floor, Tiling 1 gives a huge pattern and 2 gives a finer one

This floor is 6m square, and the practice image holds a 4-by-4 tile pattern. So the math works out like this.

TilingTiles across the floorSize of one tileHow it reads
(1, 1)4 × 41.5mEnormous. Doesn't read as tile
(2, 2)8 × 80.75mLarge-format tile
(4, 4)16 × 160.375mAbout right for ordinary floor tile

Try (4, 4). Stand in it with ClientSim and look down at your feet. The trick is deciding from standing height, not from the screen.

Knowing real-world figures speeds up the adjustment. Floor tile runs 30–60cm, flooring planks are 10–20cm wide, bricks around 20cm long.

Floors and walls don't need the same Tiling. You step directly onto a floor, so the repetition is obvious; walls are seen at an angle, so slightly larger doesn't stand out.

Only the way it's applied changes. Neither the floor's Transform nor its collision size is affected by Tiling.

4. Add gloss and bumps

Smoothness is how smooth the surface is. Swap between 0.2 and 0.8 and compare the floor at a glancing angle. Higher values make the lighting's reflection sharper.

Raising the number doesn't turn it into a mirror, though. What gets reflected depends on the surrounding objects and lighting. And setting Metallic to 1 to make it shine switches it to metal reflection, changing the color as well.

A Normal Map carries surface-direction information as an image, changing how light hits so grooves and scratches appear. It suits things like tile grout.

If you have a Normal Map image, set its Texture Type to "Normal map" and press Apply in that image's Import settings before putting it in the material's Normal Map field. Skip that and Unity treats it as an ordinary color image, giving unnatural bumps.

The practice PNG here is a color image, so putting it in the Normal Map field won't give correct bumps.

And once more: a Normal Map changes neither shape nor collision. Steps you can stand on are built from Cubes and Colliders; fine surface texture is built from Normal Maps.

When it goes pink, suspect the shader

Floors and distributed assets sometimes turn vivid pink (magenta). It's the display problem you'll meet most often in VRChat world building.

A missing shader gives pink, and switching back to Standard fixes it

That pink is a sign that this material's shader isn't running in your project. Nothing is wrong with the image, and no texture is missing.

The situations you'll meet, roughly in order:

  1. Right after importing a distributed asset, where its material references a URP or HDRP shader
  2. Using a material with an avatar shader (lilToon and friends) in a project without that shader
  3. Deleting the shader file during folder cleanup, or missing it when copying to another PC

The fix is easy.

  1. Select the pink object
  2. Open the Shader dropdown at the top of its material in the Inspector
  3. Switch to Standard
  4. Reassign the original texture to Albedo

That resolves most cases. Starting with texture reimports is the long way around, so remember: look at the shader first.

Sharing one material

Try assigning the FloorTile you made to another Cube as well. Change one material's color and the other changes with it.

That's not a bug. The two objects reference the same material.

Sharing one material changes both at once and draws more cheaply

When you want to adjust every floor in the room at once, that property is useful. When you want one part a different color, duplicate the material in Project, rename it to something like FloorTileAccent, and assign it.

Rather than making a separate material per object, splitting by "which surfaces do I want to adjust together" is easier to manage later. More materials also means more drawing cost.

Sponsored

Common Pitfalls

  • It turned pink → The shader isn't running. Switch to Standard (see the section above)
  • The image looks darker than expected → Check whether Albedo's color is something other than white. Standard multiplies the color into the image
  • The pattern stretches instead of repeating → Check that the image's Import setting has Wrap Mode at Repeat
  • Changing one floor changed another → They share a material. Duplicate to split them

Bonus: Good to Know Up Front

  • When in doubt, Rendering Mode is Opaque: There are transparent modes, but they bring draw-order problems and extra cost. Change it only where you need it, like glass or foliage
  • Pick texture resolution by viewing distance: Large surfaces like floors and walls want 1024–2048, small props around 512. For Quest or phones, start at half that
  • Lowering Max Size doesn't change the original image: Max Size in Import settings only decides the size Unity uses. Compare 1024 against 512, and if the difference doesn't bother you, leave it lower
  • The pattern squashing on the sides is normal: A 6m-square floor 0.2m thick has wildly different areas on its top and sides. The same material stretches on the sides, but nobody sees there, so don't worry about it
  • Free assets still have rights: Textures from distribution sites can carry conditions like commercial use or credit. Check before using them in a published world

Summary

A floor's appearance is made from three parts.

  • Texture is the pattern, Shader is the kind of surface, Material is the two applied together
  • Set pattern size by how many meters one tile covers, not by the number
  • Pink isn't an image problem — it's the sign of a shader not running
  • Sharing a material means one change reaches everything using it

The question to ask when adjusting is: "Standing here and looking down, is this pattern too big?" Decide from the viewpoint of someone in the room, not from the screen, and you won't miss.

Once the floor looks right, brightness is next. Lighting and baking puts light and shadow in the same room. You can check the overall progression in the world-building learning map.

VRChat Notes in this section63