这是一篇神奇的记录。 里面有一句注释很让我吃鲸。admin管理员组文章数量:1611957
o.dummy = v.vertex; // make OpenGL happy
然后,这里做一点笔记。
下面这个是测试shader1
Shader "ShaderStore/Templates/Test Vertex POSITION"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
v2f vert (appdata v)
{
v2f o;
float4 vertpos = float4(0,0,0,1);
o.vertex = mul(UNITY_MATRIX_P, mul(UNITY_MATRIX_MV, vertpos) + float4(v.uv.x-0.5, v.uv.y-0.5, 0.0, 0.0));
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return fixed4(1,0,0,1);
}
ENDCG
}
}
}
单纯从这个shader上看,如果我使用unity自带的Quad物体的话,理论上是符合dynaminc bacthing的。呵呵,理论上这三个字已经暴露我接下来的话了。。mmp
上测试图
没有动批。。。是的,你没有看错,没有动屁。。。framedebug也没有告诉原因。
如果在shader中指做一点点事情。
struct v2f { float4 vertex : SV_POSITION ; float4 tmp : TEXCOORD0 ; };v2f vert (appdata v) { v2f o; float4 vertpos = float4 ( 0 , 0 , 0 , 1 ); o.vertex = mul ( UNITY_MATRIX_P , mul ( UNITY_MATRIX_MV , vertpos) + float4 (v.uv.x- 0.5 , v.uv.y- 0.5 , 0.0 , 0.0 )); o.tmp = v.vertex;// make OpenGL happy return o; }
是的,fragment不需要修改什么。这次修改的意思就是在vert的输出结构里使用POSITION语义的变量就可以了
我是在没有忍住,还是加个了注释// make OpenGL happy。But why? I don't know...
然后,测试结果
是的game视窗下的公告板看似少了一个,其实并没有,只是两个重合了而已。
这个问题就是广州-保安队长-自来水提出来的问题。
然后抛出这个问题。的确目前不知道如何解决。下图是保安队长的测试:
大家手里估计都有可以动态批处理的公告板shader,如何产生了动批之后,每一个公告板自身transform的rotation确生效了。。。这就违背了公告板本身的设计意图。
How?
最后还得感谢北京-程序-may和广州-保安队长-自来水 ,没有他们我就不会写这篇博客,所以他们两个是这篇博客的助产士!
本文标签: 语义阶段测试UnityShadervertex
版权声明:本文标题:关于unityshader vertex阶段POSITION语义使用上的测试结果 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728607133a1165597.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论