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 Deathcalibur · Jul 22, 2013 at 04:22 PM · texturematerialtexture2dsetpixelsgetpixels

Merging Textures At Runtime - Not Correct?

Background:

I've been working on texturing a 3d model for the past few days, and the specific issue I'm working on is being able to turn on and off certain colored regions on the model. This would be similar to layering textures as in here. The difference being is that none of my textures actually overlap, they exist is different areas of the model with all other parts of the texture being transparent. I got the desired effect to work by writing a custom shader similar to the Decal shader provided by default in Unity; however, my shader took 5+ decals at one time. This runs into the issue where if I want 12+ textures to be merged, then the shader can't handle it because it runs into the limits of the hardware.

The Issue:

urrently, I am combining textures at run-time and they are not combining properly. Here is what I am getting:

alt text alt text alt text

The left two images combined become the right-most image, which clearly is not correct.

Code:

 public class CNS_Label : MonoBehaviour {
     public Texture2D text1;
     public Texture2D text2;
     public Material material;
 
     private Texture2D temp;
 
     // Use this for initialization
     void Start () {
         if (text1 != null && text2 != null)
         {
             temp = new Texture2D(1024, 1024, TextureFormat.ARGB32, false);
             var pixels1 = text1.GetPixels();
             var pixels2 = text2.GetPixels();
 
             for (int i = 0; i < pixels1.Length; i++)
             {
                 pixels1[i] += pixels2[i];
             }
 
             temp.SetPixels(pixels1);
             temp.Apply();
             material.SetTexture("_DecalTex", temp);
 
             SaveTextureToFile(temp, "output.png");
         }
     }

All the textures are set to the ARGB32 format with mipsmaps turned off.

Comment
Add comment · Show 1
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 Deathcalibur · Jul 22, 2013 at 04:34 PM 0
Share

I have a feeling the issue might be the way the colors are combined: pixels1[i] += pixels2[i];. What I want to do is replace transparent pixels in the first picture with the colored pixels in the second.

1 Reply

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

Answer by Deathcalibur · Jul 22, 2013 at 04:40 PM

I fixed the issue somewhat by changing the color combining code:

             for (int i = 0; i < pixels1.Length; i++)
             {
                 if (pixels2[i].a > 0.5f) {
                     pixels1[i] = pixels2[i]; 
                 }
             }
Comment
Add comment · 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

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

15 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

Related Questions

Setting pixels on a texture? 2 Answers

Draw one texture on to another? Get Set Pixels. 0 Answers

Setpixels leads to a blank texture? 1 Answer

What is the best way to reset textures in the editor after SetPixels? 1 Answer

change part of texture with color or other texture 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