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); }
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); }
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; }