1.问题
在播放点云的时候编写对应的shader代码:
Shader "Mvx2/PointCloud" {
SubShader{
Pass{
LOD 200
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
struct VertexInput {
float4 v : POSITION;
float4 color: COLOR;
};
struct VertexOutput {
float4 pos : SV_POSITION;
float4 col : COLOR;
};
VertexOutput vert(VertexInput v) {
VertexOutput o;
o.pos = UnityObjectToClipPos(v.v);
o.col = v.color;
return o;
}
float4 frag(VertexOutput o) : COLOR{
return o.col;
}
ENDCG
}
}
}
当我在播放点云的时候,发布到IOS端会出现像素大小异常的情况,顶点大小变得很大,而其他平台是正常的。
2.解决办法
1.添加UnityCG.cginc
#include "UnityCG.cginc"
2.为顶点输出结构添加大小属性:PSIZE
struct VertexOutput {
float4 pos : SV_POSITION;
float4 col : COLOR;
float size : PSIZE; //点大小
};
3.在顶点着色器函数中设置新值
VertexOutput vert(VertexInput v) {
VertexOutput o;
o.pos = UnityObjectToClipPos(v.v);
o.col = v.color;
o.size = 10.0;
return o;
}
3.完整代码
Shader "Mvx2/PointCloud" {
SubShader{
Pass{
LOD 200
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
uniform float _Brightness; //亮度
struct VertexInput {
float4 v : POSITION;
float4 color: COLOR;
};
struct VertexOutput {
float4 pos : SV_POSITION;
float4 col : COLOR;
float size : PSIZE; //点大小
};
VertexOutput vert(VertexInput v) {
VertexOutput o;
o.pos = UnityObjectToClipPos(v.v);
o.col = v.color;
o.size = 10.0;
return o;
}
float4 frag(VertexOutput o) : COLOR{
return o.col*_Brightness;
}
ENDCG
}
}
}