У меня проблема с шейдерами Cg.
Я использую шейдер для отображения тепловой карты, поэтому он изменяет цвет области экрана в зависимости от того, насколько она удалена от центра.Проблема в том, что если мне нужно раскрасить много областей, скажем, проходя 300 точек, фрагмент должен слишком многократно проходить через весь видимый экран, в этом случае 1920x1080x300, что, очевидно, является узким местом, есть способ сказать толькомой шейдер область, чтобы покрасить, не делая это петля?
half4 frag(vertOutput output) : COLOR
{
half h = 0;
for (int i = 0; i < _Points_Length; i ++)
{
half dist = distance(output.worldPos, _Points[i].xyz);//_Points[i].xyz is the point I'm passing to my shader
half radi = _Properties[i].x; //this is the radius of the area around the actual point
half hi = 1 - saturate(dist / radi);
h += hi * _Properties[i].y; //Properties[i].y is just an intensity modifier
}
h = saturate(h);
half4 color = tex2D(_HeatTex, fixed2(h, 0.5));
return color;
}