コード例 #1
0
 private void RenderBulkMesh(GNS_BulkMesh Mesh, int[] PatchIndexes, MaterialPropertyBlock Block, Material Material)
 {
     int[][] SplittedArray = GNS_Extensions.SplitArray <int> (ref PatchIndexes, GrassNStuff.MaxPatchDrawCount);
     for (int i = 0; i < SplittedArray.Length; i++)
     {
         Matrix4x4[] Matrices = new Matrix4x4[SplittedArray[i].Length];                 // build matrices
         for (int x = 0; x < Matrices.Length; x++)
         {
             Matrices [x] = Patches[SplittedArray [i] [x]].TransformMatrix;
         }
         Graphics.DrawMeshInstanced(Mesh.BulkMesh, 0, Material, Matrices, SplittedArray[i].Length, Block, Manager.Shadows);
     }
 }
コード例 #2
0
ファイル: GNS_Object.cs プロジェクト: vince0220/Grass-N-Stuff
        private MeshRenderer InitializeMeshRenderer(Vector3 RelativePosition, Vector3 ParentPosition, Vector2 PatchSize, GNS_BulkMesh Mesh, Material Material, UnityEngine.Rendering.ShadowCastingMode Shadows)
        {
            GameObject   Obj      = new GameObject("Patch", typeof(MeshRenderer), typeof(MeshFilter));
            MeshRenderer Renderer = Obj.GetComponent <MeshRenderer> ();
            MeshFilter   Filter   = Obj.GetComponent <MeshFilter> ();
            Vector3      MeshSize = Mesh.BulkMesh.bounds.size;

            // Set settings
            Renderer.shadowCastingMode = Shadows;
            Obj.transform.position     = ParentPosition + RelativePosition;
            Filter.sharedMesh          = Mesh.BulkMesh;
            Renderer.sharedMaterial    = Material;
            Obj.hideFlags = HideFlags.HideAndDontSave;

            // Set base property block
            MaterialPropertyBlock Block = new MaterialPropertyBlock();

            Block.SetFloat("_CrossFade", 1f);
            Renderer.SetPropertyBlock(Block);

            return(Renderer);
        }