2
\$\begingroup\$

I'm working on a tile based isometric game and the minimap right now is just a top-down camera.

Usually I just attach some markers to the top of the objects in the world, which are only visible by the minimap camera.

But I want a better approach than this, so some kind of a stylized shader.

I guess I have to render only the floors in this camera... and then I'm stuck.

How could I turn the "real, ingame view of the floors" into some "stylzed/procedural textured" versions like the examples below?

Thanks in advance! enter image description here enter image description here

\$\endgroup\$
4
  • \$\begingroup\$ Can you clarify what exactly you want to change about the appearance of your current output? Your map seems to be very different from the example image, so it's not immediately obvious which elements of that source you want to incorporate. \$\endgroup\$
    – DMGregory
    Commented Mar 16, 2022 at 11:16
  • \$\begingroup\$ Do you need help with creating the shader? Or do you need help with how to get the minimap camera and the main view camera to render the same objects with different shaders? \$\endgroup\$
    – Philipp
    Commented Mar 16, 2022 at 11:37
  • \$\begingroup\$ I need help with the shader. The images in the posts are only examples. My minimap looks as it should be looking for a camera looking at the scene from above. And I want a similar shading like in the examples above. \$\endgroup\$
    – Tudvari
    Commented Mar 16, 2022 at 16:13
  • \$\begingroup\$ The trouble is that the two examples above use very different shading, so it's not clear to a reader what kind of answer would best fit your needs. \$\endgroup\$
    – DMGregory
    Commented Mar 16, 2022 at 16:16

1 Answer 1

2
\$\begingroup\$

When your project uses the standard render pipeline, then you can use a script on the minimap camera which sets a replacement shader. But you would still render the whole scene twice, which could in the worst-case scenario cost you half of your FPS.

A better solution would be to have two completely separate visual representations for each object which is supposed to show up on the minimap.

  1. Create a new layer called "MinimapObject"
  2. Configure the culling mask of your main camera to render everything except the "MinimapObject" layer
  3. Configure the culling mask of your minimap camera to render only the "MinimapObject" layer
  4. Attach a child-object to every game object which is supposed to show up on the minimap.
  5. Set the layer of those child-objects to "MinimapObject"
  6. Create the visual representation on the minimap in the "MinimapObject" child. In the case of level geometry, that would mean a lower detail version of the regular mesh with your stylized shader material. You could also represent points of interest (like quest objectives, for example) as sprites or add text labels to your minimap as world-space canvases.
\$\endgroup\$
3
  • \$\begingroup\$ Unity does provide a way to re-render the scene from a different view with selected shaders replaced by other shaders, but I agree it's not exactly "straight-forward". \$\endgroup\$
    – DMGregory
    Commented Mar 16, 2022 at 11:54
  • \$\begingroup\$ @DMGregory Interesting. I didn't know about that. I guess I can still learn something new about Unity from you every day. I still don't think it's a good idea in this particular case, but I am going to mention it nevertheless. \$\endgroup\$
    – Philipp
    Commented Mar 16, 2022 at 12:01
  • \$\begingroup\$ You don't need to render the whole scene twice if you're using the Culling Mask on your minimap camera. Additionally, it looks like the replacement shader would not need to consider lighting, which reduces the render complexity. \$\endgroup\$
    – Kevin
    Commented Mar 16, 2022 at 22:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .