Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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
0
Question by RMAudio · Aug 26, 2015 at 09:58 PM · 2dshaderalphaholesee-through

Cutting hole from player character to camera through multiple sprites with edge blending

We are currently developing a 2D orthographic tile-based game in which the player can move multiple different characters around maps. Though we're using sprites, we chose to build the game using the 3D functions of Unity in order to simplify issues of depth (and partially because we originally started out using 3D models but later made the switch to 2D).

The issue that we currently face is that we would like for the player to be able to see their units at all times, regardless of how many obstacles stand between the camera and the unit itself. There would, of course, be multiple units onscreen at any given time and all should be visible in the same manner. Here's a screenshot from Wakfu illustrating the desired effect:

Wakfu

Our understanding is that using modified shaders would be the ideal way to go about this, but despite much searching and finding many solutions that were similar to what we were after, none of them have worked quite as we would like. It seems like a relatively simple task to accomplish but our lack of expertise in shaders is making things much harder. Part of the issue seems to lie in the requirement of edge blending on the cut-out area as this seems to mostly rule out most depth masking solutions.

For reference, the current shader we're using (since we're not sure of how many of these solutions could be adapted for use with our shader):

     Shader "Custom/Unlit/Transparent" {
      
     Properties {
         _Color ("Main Color (A=Opacity)", Color) = (1,1,1,1)
         _MainTex ("Base (A=Opacity)", 2D) = ""
     }
      
     Category {
         Tags {"Queue"="Transparent" "IgnoreProjector"="True"}
         ZWrite Off
         Blend SrcAlpha OneMinusSrcAlpha
      
         SubShader {Pass {
             GLSLPROGRAM
             varying mediump vec2 uv;
            
             #ifdef VERTEX
             uniform mediump vec4 _MainTex_ST;
             void main() {
                 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
                 uv = gl_MultiTexCoord0.xy * _MainTex_ST.xy + _MainTex_ST.zw;
             }
             #endif
            
             #ifdef FRAGMENT
             uniform lowp sampler2D _MainTex;
             uniform lowp vec4 _Color;
             void main() {
                 gl_FragColor = texture2D(_MainTex, uv) * _Color;
             }
             #endif     
             ENDGLSL
         }}
        
         SubShader {Pass {
             SetTexture[_MainTex] {Combine texture * constant ConstantColor[_Color]}
         }}
     }
      
     }
 

Many thanks in advance to any kind soul who could assist us in getting on the right track!

example.png (266.8 kB)
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

0 Replies

· Add your reply
  • Sort: 

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

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

See-through hole via shaders on a 2D plane 2 Answers

Custom shader of sprite results in black alpha. 0 Answers

I want to fade out this Texture Masking Shader (using Rendertextures) and I need your help 3 Answers

Rewrite simple alphamask fixed function shader to surface or cg shader 2 Answers

See-through hole/hide away walls in a 2D environment (via shader)? 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