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 temptest123 · May 26, 2013 at 11:44 AM · shadershaderlabgrab

How to first draw all objects using one pass, then using another pass?

I'm writing a refraction shader that in a first pass renders the backfacing triangles of an object, then a grabpass is performed, and then the front facing triangles are drawn using the grabbed texture. For a single object this already works very well and gives good results.

Now, there will be many objects in the scene using this shader (but they can't be batched together as they use different shader properties and textures each, and the textures are too big to be combined into an atlas) - but I do not want to perform an expensive fullscreen grabpass for each object drawn. What I want to do is:

  1. render all objects using pass0 (back facing triangles)

  2. perform one grabpass

  3. render all objects using pass1 (front facing triangles)

How can I achieve this? I know that 'Grabpass' has a mode in which the grabpass is only performed once, but this is not useful in my situation since then this grabbed texture would contain only the backfacing triangles of the very first object that calls the grabpass. I will need the grabpass texture to contain all backfacing triangles of all the objects using this shader.

One way I see is to split the passes into two separate materials, duplicate each object (one clone with each of the materials), fiddle with the renderqueue of the materials to ensure first all material0 objects are drawn and then all material1 objects, and in the material1 shader perform a grabpass that is shared among all objects. But duplicating the objects and splitting the shader into two shaders doesn't seem so elegant.

Anyone sees a better solution to this?

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

13 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

Related Questions

Reuse Shader Pass output as input for next Pass 0 Answers

Exit out of multipass shader 0 Answers

Grab Pass alternative? Frag shader that applies alpha values behind it to itself. 1 Answer

Disabling a Pass or Subshader Programmatically 0 Answers

Curve shader with lights 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