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.
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.
Wallpaper makes it clear
The relationship between the three sorts itself out if you think of hanging wallpaper in a room.

- 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.
- Create a material and assign it to the object
- Pick a shader at the top of the material
- Fields for color, image, bumps, and so on appear according to that shader
- 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.
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.
| Field | Setting | Meaning |
|---|---|---|
| Shader | Standard | The basic light-receiving surface |
| Rendering Mode | Opaque | An opaque floor |
| Albedo color | White | Show the image's colors as they are |
| Metallic | 0 | Not metal |
| Smoothness | 0.2 | Keeps 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 preview is WebP. Use the linked PNG when importing into Unity.
- Create a
Texturesfolder underAssets - Drag the saved PNG into that folder
- Select the image, check the following in the Inspector, and press "Apply"
| Import setting | Value | Reason |
|---|---|---|
| Texture Type | Default | Used as an ordinary color image |
| sRGB (Color Texture) | On | It's an image seen as color |
| Wrap Mode | Repeat | Repeat past the edges |
| Generate Mip Maps | On | Suppresses shimmer from a distance |
| Max Size | 1024 | Matches 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.

This floor is 6m square, and the practice image holds a 4-by-4 tile pattern. So the math works out like this.
| Tiling | Tiles across the floor | Size of one tile | How it reads |
|---|---|---|---|
(1, 1) | 4 × 4 | 1.5m | Enormous. Doesn't read as tile |
(2, 2) | 8 × 8 | 0.75m | Large-format tile |
(4, 4) | 16 × 16 | 0.375m | About 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.

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:
- Right after importing a distributed asset, where its material references a URP or HDRP shader
- Using a material with an avatar shader (lilToon and friends) in a project without that shader
- Deleting the shader file during folder cleanup, or missing it when copying to another PC
The fix is easy.
- Select the pink object
- Open the Shader dropdown at the top of its material in the Inspector
- Switch to Standard
- 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.

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.
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
1024against512, 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.