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
1
Question by DanjelRicci · Jun 11, 2011 at 07:29 AM · meshrenderingperformancealphatransparent

Performance drop with transparent objecs overlying big meshes

In my iOS game I have many very small transparent objects sitting on a big terrain mesh, wich is about 7000 polygons big. I'm aware of the fact that transparent objects require every underlying object to be rendered multiple times, in fact game performance drops from 60 to 25 FPS, so I tought to split my terrain mesh in many small parts, with no more than 500 polys each.

But, as far as I know, Unity combines meshes with the same materials, and this would happen with my splitted terrain mesh (wich is using only one material). So, when rendering these small transparent objects, does the terrain count again as an unique big object like before, requiring to be drawn again entirely, or does it re-render only the parts with overlaying transparent objects (wich is what I want)?

Thanks for your help.

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 ckfinite · Jun 14, 2011 at 12:00 AM

This will require some explanation of how graphics cards and their interfaces work.

First, Unity very much doesn't combine meshes with the same material. If you go access the .mesh variable, you will find exactly the same thing you sent in the first time. What it does do is keep vertex buffers on the graphics card, and they don't really ever have to move once they get onto it.

If you are using the deferred rendering pipeline, transparent objects are rendered though the forward pipeline for complicated reasons, directly onto the output surface. They are only rendered once. What could be doing this is the transparent objects are being re-sent to the GPU every frame, which is probably what is happening. Try turning static on, and see if anything changes. You should still experience large drops in fps (10-20), since transparent objects are rendered in a bit of a expensive way (additive, after most everything else).

If nothing changes, you will just have to accept the performance decrease. It is either a non-optimization on Unity's part, or barring a couple unlikely things, is just the expense of rendering transparent objects. As a engine developer, I can say they are quite annoying.

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 Peter G · Jun 14, 2011 at 12:10 AM 0
Share

There is no deferred rendering on iOS.

avatar image ckfinite · Jun 14, 2011 at 12:19 AM 0
Share

Okay, the same comments still apply. The exact rendering path is a little different, but the best solution is still bear with it, or avoid transparencies. You could try geometry replacement and billboarding at distance to reduce the complexity of the transparent objects, but there is really no "easy" solution-the only real changes to improve transparent objects would be on the engine developer's side-not the consumers.

avatar image save · Jun 14, 2011 at 12:37 AM 0
Share

Would Draw$$anonymous$$eshNow make any difference to this?

avatar image ckfinite · Jun 14, 2011 at 12:44 AM 0
Share

I think it would most likely make it slower. I think the big problem is that the little objects are not having their Vertex buffers kept in VRA$$anonymous$$, so the little objects have to be sent every frame. I think geometry replacement would be the best way to go.

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

Performance Question 1 Answer

How does Mesh.CreateVBO work? 1 Answer

Weapon system 0 Answers

Stencil buffer and transparency 0 Answers

Will Semi Transparent mesh with several folds of geometry sort correctly? 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