• 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 maxime_unity4 · Mar 22, 2022 at 08:39 PM · shadertexturegraphicswebglblit

Blit into Texture2DArray slice not working in WebGL

I am trying to copy the data from a texture into a RenderTexture set as array.


I wanted to use Grap$$anonymous$$cs.CopyTexture but it isn't supported in WebGl so I fallback to using Grap$$anonymous$$cs.Blit.


Blitting from a texture into the first slice of the Texture2DArray works fine, but all other indices only work in the editor and not on the WebGL build (using WebGL 2).


here is an image of the issue (left plane shows the source texture, right plane shows the texture array at slice 1) alt text


Here are the C# code and shader code:

C#

 public class TextureArrayTest : MonoBehaviour
 {
     public Material textureArrayMat;
     public Texture2D source;
     public RenderTexture destination;
 
     void Start()
     {
         destination = new RenderTexture(512, 512, 16);
         destination.dimension = UnityEngine.Rendering.TextureDimension.Tex2DArray;
         destination.volumeDepth = 2;
         destination.Create();
         textureArrayMat.SetTexture("_TextureAray", destination);
 
         Grap$$anonymous$$cs.Blit(source, destination, sourceDepthSlice: 0, destDepthSlice: 1);
     }
 }


Shader

 Shader "Unlit/texture_array_test"
 {
     Properties
     {
         _TextureAray("Texture", 2DArray) = " " {}
     }
     SubShader
     {
         Tags { "RenderType"="Opaque" }
         LOD 100
 
         Pass
         {
             CGPROGRAM
             #pragma vertex vert
             #pragma fragment frag
 
             #include "UnityCG.cginc"
 
             struct appdata
             {
                 float4 vertex : POSITION;
                 float2 uv : TEXCOORD0;
             };
 
             struct v2f
             {
                 float2 uv : TEXCOORD0;
                 float4 vertex : SV_POSITION;
             };
 
             UNITY_DECLARE_TEX2DARRAY(_TextureAray);
 
             v2f vert (appdata v)
             {
                 v2f o;
                 o.vertex = UnityObjectToClipPos(v.vertex);
                 o.uv = v.uv;
                 return o;
             }
 
             fixed4 frag (v2f i) : SV_Target
             {
                 fixed4 col = UNITY_SAMPLE_TEX2DARRAY(_TextureAray, float3(i.uv, 1));
                 return col;
             }
             ENDCG
         }
     }
 }
 

Am doing somet$$anonymous$$ng wrong or is t$$anonymous$$s a bug ?

texture-results.jpg (385.2 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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by XANTOMEN · Jul 18, 2022 at 10:35 PM

Found the same problem, and unfortunately no solution. Did you perhaps already find one? I've created a Bug Report for it, will reply here again if they answer it :)

https://unity3d.atlassian.net/servicedesk/customer/portal/2/IN-10637

EDIT:

Ok I'm back... So I created t$$anonymous$$s thread and some friendlies helped me out:

https://forum.unity.com/threads/blit-to-from-rendertexture-texture2darray-slice-not-working-in-webgl-built-in-and-urp.1311077/#post-8294612

The good news is that apparently the only t$$anonymous$$ng I actually needed to do is t$$anonymous$$s:

Shader shader = Shader.Find("Hidden/BlitCopy"); Material mat = new Material(shader);

Then the Blit needs to include mat as an argument. Example:

Grap$$anonymous$$cs.Blit(sourceTexture, destinationTexture, mat, 0, 1);

Try it out, maybe it works for you too! Definitely a bug, but until they fix it that's a way to make it work...

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

240 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 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 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 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 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 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 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 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 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 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 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 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 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

use RenderTexture on a sphere correctly? 1 Answer

Black Texture on Initial Load 1 Answer

How to disable texture perspective correction? 1 Answer

Tracing in Unity3D 2 Answers

How can I prevent lights overlapping in intensity? 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