- Home /
Rendering Mesh Points on Mobile
I'm working on an n body simulator with a custom shader to render points being called with Graphics.DrawProcedural(MeshTopology.Points, numBodies).
Everything works on desktop as expected, but on Android increasing the number of points causes strange graphical issues.
With 1000 points being rendered, everything looks normal.
But with 1500 points the screen looks like this.
Increasing the particles to 2000 results in the screen going completely white. This issue only occurs when the mesh topology is points - changing it to lines gets rid of the issue. Is there something I can do to get points rendering on mobile with higher number of points?
Below is the custom shader code.
Shader "NBodySim/ParticleShader"
{
Properties
{
_Color("Color", Color) = (0.38,0.26,0.98,1.0)
}
SubShader
{
//uses DrawProcedural so tag doesnt really matter
Tags { "Queue" = "Geometry" }
Pass
{
//ZWrite Off
ZTest Always
Cull Off
Fog { Mode Off }
Blend one one
Lighting Off
CGPROGRAM
//#pragma exclude_renderers gles flash
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
//#pragma target 5.0
#pragma target 4.5
struct v2f
{
int id : TEXCOORD0;
float4 pos : SV_POSITION;
float4 wpos : TEXCOORD1;
};
struct Particle {
float4 position;
float4 velocity;
//float life;
};
StructuredBuffer<Particle> particles;
//#include "SimVariables.cginc"
fixed4 _Color;
v2f vert(uint id : SV_VertexID)
{
v2f OUT;
float4 worldPos = particles[id].position;
float3 pos = worldPos.xyz ;
//pos = any(isnan(pos)) ? float3(10,5,10)/id : pos;
float4 outpos = UnityWorldToClipPos(pos);
OUT.id = id;
OUT.pos = outpos;
OUT.wpos = worldPos;
return OUT;
}
float4 frag (v2f IN) : COLOR
{
return _Color;
}
ENDCG
}
}
//Fallback "Diffuse"
Fallback Off
}
Your answer
Follow this Question
Related Questions
Mesh Collider not working so good 1 Answer
Find center of multiple meshes 0 Answers
Read binary PointCloud data (LAS or LAZ) 2 Answers
Boat physics 2 Answers
how to quickly disable vertices from rendering in a Mesh? 1 Answer