Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 Killhatch · Apr 07, 2015 at 03:21 PM · shadermaterialfragment

Change fragment output color depending on pixel overlaps.

I'm trying to code a fragment shader that outputs color in the range of cold (dark blue) to hot (white, reds, yellows) depending on how many times the current fragment has been rendered to by the same mesh's shader.

Basically, the more the model's pixels, the warmer the color (in the overlapping pixels) should be.

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

1 Reply

· Add your reply
  • Sort: 
avatar image
1

Answer by _Gkxd · Apr 07, 2015 at 05:33 PM

Renderers have an optimization called depth culling. Essentially, for each pixel, it keeps track of the closest object from the camera that appears in that pixel. After depth culling, the color computations are done. By doing this, the renderer can avoid wasting time computing colors of things that are blocked by other things, especially in complex models with lots of overlaps.

Because of this process, it is difficult to obtain the amount of times each pixel is drawn to per frame, unless you can somehow hook into the depth culling process to count how much overlap is at each pixel (which may or may not be possible).

I can think of a hacky way around this, but it's not very fast. The idea is to render each triangle of your model with a low alpha color onto an initially black texture. (If you enable transparency, depth culling should be disabled... though Unity might handle this automatically.) Since each triangle is transparent, areas with more overlaps will appear lighter in the texture, and areas with few overlaps will appear mostly dark. You can get a camera to render directly to a texture by setting its target texture.

You can then pass this texture to a shader which examines how light each pixel of the texture is, then maps that to some value in an array of colors (i.e. the colors for your heatmap).

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 Killhatch · Apr 07, 2015 at 07:48 PM 0
Share

I can accept some slowdown since I am primarily working on editor scripts, though they probably will need to update most frames (scene-view redraws). Give me a few days to try some implementations. Thank you for your suggestion. :)

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

19 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

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

Static+Real Time lighting in Angry Bots Demo 1 Answer

LineRenderer not showing in certain angles 1 Answer

Material Animation from -1 to 1 0 Answers

2D Sprite Always Visible - Shader / Material not working (ZTest, ZWrite, Culling) 1 Answer


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