| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- using System;
 
- using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
 
- using UnityEngine;
 
- namespace GameLogic.Combat.Hero.HeroGPU
 
- {
 
-     public class GPURender
 
-     {
 
-         private static readonly int shader_enableShaderId = Shader.PropertyToID("_EnableAnimation");
 
-         readonly int shader_animtionStateId = Shader.PropertyToID("_AnimationState");
 
-         readonly int shader_edgeColor = Shader.PropertyToID("_edgeColor");
 
-         readonly int shader_edgeStrength = Shader.PropertyToID("_edgeStrength");
 
-         readonly int shader_injuriedStrength = Shader.PropertyToID("_injuriedStrength");
 
-         public Material Material;
 
-         public Mesh Mesh;
 
-         public MaterialPropertyBlock _materialPropertyBlock;
 
-         BetterList<Matrix4x4> instData = new BetterList<Matrix4x4>(100);
 
-         BetterList<Matrix4x4> animtionStata = new BetterList<Matrix4x4>(100);
 
-         BetterList<float> enableAnimations = new BetterList<float>(100);
 
-         BetterList<Vector4> edgeColor = new BetterList<Vector4>(100);
 
-         BetterList<float> edgeStrength = new BetterList<float>(100);
 
-         BetterList<float> injuriedStrength = new BetterList<float>(100);
 
-         private RenderParams rp;
 
-         public void Init(Material Material, Mesh Mesh)
 
-         {
 
-             
 
-             this.Material = Material;
 
-             this.Mesh = Mesh;
 
-             _materialPropertyBlock = new MaterialPropertyBlock();
 
-             rp = new RenderParams(Material);
 
-             rp.matProps = _materialPropertyBlock;
 
-             rp.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
 
-             rp.receiveShadows = false;
 
-         }
 
-         public void Render(BetterList<HeroGPUMono> gpuMonoList)
 
-         {
 
-             int count = gpuMonoList.Count;
 
-             if (count <= 0)
 
-             {
 
-                 return;
 
-             }
 
-             _materialPropertyBlock.Clear();
 
-             // Matrix4x4[] instData = new Matrix4x4[count];
 
-             // Matrix4x4[] animtionStata = new Matrix4x4[count];
 
-             // float[] enableAnimations = new float[count];
 
-             // Vector4[] edgeColor = new Vector4[count];
 
-             // float[] edgeStrength = new float[count];
 
-             // float[] injuriedStrength = new float[count];
 
-             instData.Clear();
 
-             animtionStata.Clear();
 
-             enableAnimations.Clear();
 
-             edgeColor.Clear();
 
-             edgeStrength.Clear();
 
-             injuriedStrength.Clear();
 
-             int rendCombat = 0;
 
-             for (int i = 0; i < count; i++)
 
-             {
 
-                 HeroGPUMono heroGPUMono = gpuMonoList[i];
 
-                 if (!heroGPUMono.gameObject.activeSelf)
 
-                 {
 
-                     continue;
 
-                 }
 
-                 rendCombat++;
 
-                 instData.Add(heroGPUMono.rootTrans.localToWorldMatrix);
 
-                 animtionStata.Add(heroGPUMono.animtionState);
 
-                 edgeColor.Add(heroGPUMono.edgecolor);
 
-                 edgeStrength.Add(heroGPUMono.edgeStength);
 
-                 injuriedStrength.Add(heroGPUMono.injuriedStrength);
 
-                 enableAnimations.Add(1);
 
-             }
 
-             _materialPropertyBlock.SetFloatArray(shader_enableShaderId, enableAnimations.ToArray(true));
 
-             _materialPropertyBlock.SetMatrixArray(shader_animtionStateId, animtionStata.ToArray(true));
 
-             _materialPropertyBlock.SetVectorArray(shader_edgeColor, edgeColor.ToArray(true));
 
-             _materialPropertyBlock.SetFloatArray(shader_edgeStrength, edgeStrength.ToArray(true));
 
-             _materialPropertyBlock.SetFloatArray(shader_injuriedStrength, injuriedStrength.ToArray(true));
 
-             Graphics.RenderMeshInstanced(rp, Mesh, 0, instData.ToArray(true), rendCombat, 0);
 
-         }
 
-     }
 
- }
 
 
  |