章丘建设局网站小广告怎么做
news/
2025/9/23 11:17:32/
文章来源:
章丘建设局网站,小广告怎么做,西安搜索引擎,从您的角度来看_对于农产品网站的建设有什么想法或建议呢?文章目录 前言一、动态合批的规则1、材质相同是合批的前提#xff0c;但是如果是材质实例的话#xff0c;则一样无法合批。2、支持不同网格的合批3、动态合批需要网格支持的顶点条件二、我们导入一个模型并且制作一个Shader#xff0c;来测试动态合批1、我们选择模型的 Mesh… 文章目录 前言一、动态合批的规则1、材质相同是合批的前提但是如果是材质实例的话则一样无法合批。2、支持不同网格的合批3、动态合批需要网格支持的顶点条件二、我们导入一个模型并且制作一个Shader来测试动态合批1、我们选择模型的 Mesh 可以查看模型的顶点信息2、我们先来测试一下 300 个顶点限制的动态合批3、我们来测试一下Shader中使用了 Position、normal 、uv0 、uv1 和 tangent 最多只能180个顶点以下的动态合批 前言
我们来解析一下上篇文章中提到的 Batching 中的 动态合批
Unity渲染Stats分析 一、动态合批的规则 动态合批是Unity默认去执行的我们无法控制中间的步骤我们只能按照Unity指定的规则去做
1、材质相同是合批的前提但是如果是材质实例的话则一样无法合批。
什么情况下会产生材质实例呢 在之前使用协程控制Shader材质变化的文章中修改材质使用 .material 来修改会导致生成材质实例
Unity中C#使用协程控制Shader材质变化
2、支持不同网格的合批
3、动态合批需要网格支持的顶点条件
单个网格最多 300 个顶点900个顶点属性。顶点属性的上限未来可能会调整如果Shader中用到了网格的Position、normal 和 uv 的话则最多300 个顶点如果Shader中用到了网格的Position、normal 、uv0 、uv1 和 tangent 的话则最多是 180 个顶点负方向缩放会导致无法动态合批早期Unity缩放不一致也会导致无法动态合批
这里的顶点属性指的是 顶点位置信息、顶点法线信息、顶点切线信息 等这些属性 二、我们导入一个模型并且制作一个Shader来测试动态合批
1、我们选择模型的 Mesh 可以查看模型的顶点信息 可以在Mesh信息中了解到入下信息
顶点有 200 个占用 9.4k顶点属性包含PositionNormalTangentUV0
2、我们先来测试一下 300 个顶点限制的动态合批
Shader MyShader/P2_6_2
{Properties{}SubShader{Tags { RenderTypeOpaque }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include UnityCG.cgincstruct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex UnityObjectToClipPos(v.vertex);return o;}fixed4 frag (v2f i) : SV_Target{return 1;}ENDCG}}
}
我们给 这个顶点数小于 300 的模型使用这个Shader材质我们会发现只有两个批次 我们复制一份该模型因为使用了同一个材质所以被动态合批了还是只有两个批次 我们创建一个新的球体因为使用了不同的材质所以现在渲染了3批次 但是我们给该球使用同一材质时会发现还是使用了3个批次
原因是该球体的Mesh顶点数超过了300不支持动态合批 3、我们来测试一下Shader中使用了 Position、normal 、uv0 、uv1 和 tangent 最多只能180个顶点以下的动态合批
如果这几个属性只是在Shader的appdata中声明并不算真正的用到该属性
Shader MyShader/P2_6_2
{Properties{_Color(Color,Color) (1,1,1,1)}SubShader{Tags { RenderTypeOpaque }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include UnityCG.cgincstruct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;float3 normal : NORMAL;float3 tangent : TANGENT;float2 uv1 : TEXCOORD1;};struct v2f{float2 uv : TEXCOORD0;float4 pos : SV_POSITION;float2 uv1 : TEXCOORD1;float3 normal : TEXCOORD2;float3 tangent : TEXCOORD3;float3 worldPos : TEXCOORD4;};fixed4 _Color;v2f vert (appdata v){v2f o;o.pos UnityObjectToClipPos(v.vertex);o.worldPos mul(unity_ObjectToWorld,v.vertex);o.uv v.uv;o.uv1 v.uv1;o.normal v.normal;o.tangent v.tangent;return o;}fixed4 frag (v2f i) : SV_Target{return i.worldPos.y * 0.15 _Color;}ENDCG}}
}
可以看出虽然我们的物体还是之前的两个板凳。但是批次变成了3次。说明没有动态合批成功
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912341.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!