instance不合批问题

本文探讨了Unity中instance shader未能减少draw call(DC)的问题。问题源于编辑器下更改材质球导致每个meshRenderer拥有独立的材质,从而阻止了instance。而在真机运行时,由于共享材质球,instance能够正常工作。通过分析 Snapdragon 中的DrawElements指令,发现与成功instance的DrawElement..instance指令不同。最后,作者计划通过去除场景物体来检查是否由于深度原因导致合批失败,并引用了多篇相关文章进行深入研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事情起因

写了个instance的shader,理论上能通过instance减少dc,但实际测试,dc并没有减少。单独把instance部分拿出来是可以合批的。然后看到运用过程中会改变材质球,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class testInstance : MonoBehaviour {
    public List<MeshRenderer> meshRenderer;
    public Texture2D tex;
    public GameObject flagGo;

    List<Material> tempMaterials;

    // Use this for initialization
    void Start () {
#if UNITY_EDITOR
        Debug.LogError("Error: in editor");
        Renderer[] flagRenderComponent = flagGo.GetComponentsInChildren<Renderer>(false);
        for (int i = 0; i < flagRenderComponent.Length; i++)
        {
            Material flagMaterial = new Material(flagRenderCom
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值