public static RayTracingObject ConvertSprite(SpriteRT sprite)
    {
        int              r      = sprite.TextureDimensions;
        float2           center = new float2(sprite.posMin) + new float2(r, r);
        RayTracingObject rt     = new RayTracingObject(new float3(center.x, center.y, sprite.depth), r, 1, float3.zero, new float3(0.3f), 0.5f, new float3(0.0f), sprite.TextureIndex);

        return(rt);
    }
Ejemplo n.º 2
0
    public SpriteRT GenSprite()
    {
        SpriteRT sRT = new SpriteRT();

        if (m_sr == null)
        {
            return(sRT);
        }
        sRT.posMin            = m_sr.bounds.min;
        sRT.posMax            = m_sr.bounds.max;
        sRT.depth             = transform.position.z;
        sRT.TextureDimensions = Dimensions;
        sRT.Width             = sRT.posMax.x - sRT.posMin.x;
        sRT.Height            = sRT.posMax.y - sRT.posMin.y;
        return(sRT);
    }
Ejemplo n.º 3
0
    private void RebuildSprites()
    {
        SpriteWasRemoved = false;
        m_camInfo.transform.hasChanged = true;

        m_spriteRts = new List <SpriteRT>();
        foreach (RayTracingSprite sprite in m_Sprites)
        {
            if (sprite == null)
            {
                continue;
            }
            RayTracingSprite.TextureMode texMode = sprite.TexSize;
            Texture2D tex    = sprite.GetTexture();
            Texture2D normal = sprite.GetNormal();
            int       index  = 0;
            switch (texMode)
            {
            case RayTracingSprite.TextureMode.TEX64: break;

            case RayTracingSprite.TextureMode.TEX128:
                if (m_tex128List.Contains(tex))
                {
                    //  Debug.Log("countains!");
                    index = m_tex128List.IndexOf(tex);
                }
                else
                {
                    index = m_tex128List.Count;
                    m_tex128List.Add(tex);
                    m_tex2DArray128.SetPixels32(tex.GetPixels32(), index, 0);
                    m_tex2DArray128_Normal.SetPixels32(normal.GetPixels32(), index, 0);
                }
                break;

            case RayTracingSprite.TextureMode.TEX256:
                if (m_tex256List.Contains(tex))
                {
                    //   Debug.Log("countains!");
                    index = m_tex256List.IndexOf(tex);
                }
                else
                {
                    index = m_tex256List.Count;
                    m_tex256List.Add(tex);
                    m_tex2DArray256.SetPixels32(tex.GetPixels32(), index, 0);
                    m_tex2DArray256_Normal.SetPixels32(tex.GetPixels32(), index, 0);
                }
                break;

            case RayTracingSprite.TextureMode.TEX512:
                if (m_tex512List.Contains(tex))
                {
                    //   Debug.Log("countains!");
                    index = m_tex512List.IndexOf(tex);
                }
                else
                {
                    index = m_tex512List.Count;
                    m_tex512List.Add(tex);
                    m_tex2DArray512.SetPixels32(tex.GetPixels32(), index, 0);
                    m_tex2DArray512_Normal.SetPixels32(tex.GetPixels32(), index, 0);
                }
                break;
            }
            SpriteRT newSprite = sprite.GenSprite();
            newSprite.TextureIndex = index;
            m_spriteRts.Add(newSprite);
        }
        CreateComputeBuffer(ref m_SpriteBuffer, m_spriteRts, 36);
        m_tex2DArray512.Apply();
        m_tex2DArray256.Apply();
        m_tex2DArray128.Apply();
        m_RebuildCompletely = true;
    }