Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
11 Jun 22 - 14 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
2
Question by macmouse · Jul 04, 2015 at 11:52 AM · shaderrenderingmaterialobject

Render a object on top of another.

I have two objects in the scene.

alt text

How can I make it, that the red Object is always seen by the camera? Here, red is seen by the camera with red color.

I read somewhere, that is possible with the depth of a second camera. But I want a shader.

I found, that it must be possible with a tag in a shader like this here:

 Tags { "Queue" = "Overlay" }

or with this:

 Tags { "Queue" = "Geometry+1" }

But it's not working with these tags.

Here the full shader code:

 Shader "Custom/ObjectControlAxisZ" {
     Properties {
         _MainTex ("Base (RGB)", 2D) = "white" {}
     }
     SubShader {
         Tags {  "Queue" = "Geometry+1" "RenderType"="Opaque" }
         LOD 200
         
         CGPROGRAM
         #pragma surface surf Lambert
 
         sampler2D _MainTex;
 
         struct Input {
             float2 uv_MainTex;
         };
 
         void surf (Input IN, inout SurfaceOutput o) {
             half4 c = tex2D (_MainTex, IN.uv_MainTex);
             o.Albedo = c.rgb;
             o.Alpha = c.a;
         }
         ENDCG
     } 
     FallBack "Diffuse"
 }
 

 

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

3 Replies

· Add your reply
  • Sort: 
avatar image
7
Best Answer

Answer by tanoshimi · Jul 04, 2015 at 11:53 AM

You want the ZTest Always tag. (And possibly also ZWrite Off).

http://docs.unity3d.com/Manual/SL-CullAndDepth.html

Comment
Add comment · Show 2 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image dixonalex · Jul 24, 2019 at 06:46 AM 0
Share

Is that offer us a 4D effect? I can see the diffuse function has 4 vertices. I think we are using 4 vertices for 4D object, aren't we?

avatar image tgrushka · Jul 05, 2020 at 04:00 AM 0
Share

There is a more helpful answer by lolmaster2 below with a code example with twice as many upvotes. Why is this one still marked as the best answer?

avatar image
24

Answer by lolmaster2 · Feb 01, 2017 at 09:05 AM

1 - In the menu: Assets -> Create -> Shader -> Standard Surface Shader

2 - Name it AlwaysOnTop

3 - Open it and replace the content with this code

4 - In the Inspector goto your material and choose your new shader: Custom -> AlwaysOnTop

You can also use transparency by changing the alpha value of the "Text Color" parameter of the material (the shader is just a modified version of the 3D Text Shader)

 Shader "Custom/AlwaysOnTop" {
     Properties {
         _MainTex ("Font Texture", 2D) = "white" {}
         _Color ("Text Color", Color) = (1,1,1,1)
         
         _StencilComp ("Stencil Comparison", Float) = 8
         _Stencil ("Stencil ID", Float) = 0
         _StencilOp ("Stencil Operation", Float) = 0
         _StencilWriteMask ("Stencil Write Mask", Float) = 255
         _StencilReadMask ("Stencil Read Mask", Float) = 255
 
         _ColorMask ("Color Mask", Float) = 15
     }
 
     SubShader {
 
         Tags 
         {
             "Queue"="Transparent"
             "IgnoreProjector"="True"
             "RenderType"="Transparent"
             "PreviewType"="Plane"
         }
         
         Stencil
         {
             Ref [_Stencil]
             Comp [_StencilComp]
             Pass [_StencilOp] 
             ReadMask [_StencilReadMask]
             WriteMask [_StencilWriteMask]
         }
         
         Lighting Off 
         Cull Off 
         ZTest Off
         ZWrite Off 
         Blend SrcAlpha OneMinusSrcAlpha
         ColorMask [_ColorMask]
 
         Pass 
         {
             CGPROGRAM
             #pragma vertex vert
             #pragma fragment frag
 
             #include "UnityCG.cginc"
 
             struct appdata_t {
                 float4 vertex : POSITION;
                 fixed4 color : COLOR;
                 float2 texcoord : TEXCOORD0;
             };
 
             struct v2f {
                 float4 vertex : SV_POSITION;
                 fixed4 color : COLOR;
                 float2 texcoord : TEXCOORD0;
             };
 
             sampler2D _MainTex;
             uniform float4 _MainTex_ST;
             uniform fixed4 _Color;
             
             v2f vert (appdata_t v)
             {
                 v2f o;
                 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
                 o.color = v.color * _Color;
                 o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
 #ifdef UNITY_HALF_TEXEL_OFFSET
                 o.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1);
 #endif
                 return o;
             }
 
             fixed4 frag (v2f i) : SV_Target
             {
                 fixed4 col = i.color;
                 col.a *= tex2D(_MainTex, i.texcoord).a;
                 clip (col.a - 0.01);
                 return col;
             }
             ENDCG 
         }
     }
 }


Comment
Add comment · Show 4 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Eric_Lu · Aug 27, 2018 at 08:22 PM 0
Share

Saved my day... Thanks a lot!

avatar image tgrushka · Jul 03, 2020 at 08:43 PM 0
Share

This is by far a better answer than any of the others I have come across. Why is it not marked as the best answer?

avatar image mikaelK · Sep 19, 2020 at 03:44 PM 0
Share

This does not seem to work with virtual reality enabled. Any idea why?

avatar image fahruz · Jul 13, 2021 at 09:56 AM 0
Share

Awesome. This worked great for me (in VR). Even with semi-transparent colours.

avatar image
0

Answer by conscienceawake · Nov 06, 2018 at 10:02 AM

can anyone hep , i have a problem i need to solve

sprite 1 = is an overlay is in front of everything sprite 2 = buildings, are behind the overlay sprite 3 = stars, are behind the buildings

i want to render sprite 3 on top of sprite 1, but i want to render sprite 3 behind sprite 2 and sprite 2 must render behind sprite 1.

any Ideas :(

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image LostOter · Jul 24, 2019 at 06:10 AM 0
Share

assu$$anonymous$$g sprite 2 is completely opaque then this can be achieved with a sprite mask. Sprite3 is in front of everything, Sprite1 is behind Sprite3, Sprite2 is behind Sprite1, Sprite2 has a sprite$$anonymous$$ask component blocking out parts of Sprite3.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

11 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to set pre-render properties to UGUI Image? 0 Answers

OUYA Rendering Problem 0 Answers

Material doesn't have a color property '_Color' 2 Answers

HDRP shadergraph material not visible in renderTexture if render pass is set to After post process 0 Answers

Rendering problem for objects with low y position 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges