mirror of
https://github.com/ilyakooo0/metal-metaballs.git
synced 2024-10-26 10:22:52 +03:00
Simplified indexing in the loops.
This commit is contained in:
parent
8de54d9d65
commit
e7d1cf4e8c
@ -5,18 +5,18 @@ using namespace metal;
|
||||
|
||||
kernel void drawMetaballs(texture2d<float, access::write> outTexture[[texture(0)]], constant float *edgesBuffer[[buffer(1)]], constant float *metaballBuffer[[buffer(0)]], uint2 gid[[thread_position_in_grid]]) {
|
||||
|
||||
uint numberOfMetaballs = metaballBuffer[0];
|
||||
uint metaballArraySize = numberOfMetaballs * 2 + 1;
|
||||
char numberOfMetaballs = metaballBuffer[0];
|
||||
char metaballArraySize = numberOfMetaballs * 2 + 1;
|
||||
|
||||
float sum = 0;
|
||||
|
||||
uint i, j, x, y;
|
||||
char x, y;
|
||||
|
||||
float metaballDistances[10];
|
||||
float2 metaballDirections[10];
|
||||
|
||||
for (i = 1, x = 0; i < metaballArraySize; i += 2, x += 1) {
|
||||
float2 metaball = float2(metaballBuffer[i], metaballBuffer[i + 1]);
|
||||
for (y = 1, x = 0; y < metaballArraySize; y += 2, x += 1) {
|
||||
float2 metaball = float2(metaballBuffer[y], metaballBuffer[y + 1]);
|
||||
float2 vector = float2(metaball.x - gid.x, metaball.y - gid.y);
|
||||
float squaredDistance = dot(vector, vector);
|
||||
float realDistance = sqrt(squaredDistance);
|
||||
@ -24,11 +24,11 @@ kernel void drawMetaballs(texture2d<float, access::write> outTexture[[texture(0)
|
||||
metaballDirections[x] = vector/realDistance;
|
||||
}
|
||||
|
||||
for (i = 1, x = 0; i < metaballArraySize; i += 2, x += 1) {
|
||||
for (x = 0; x < numberOfMetaballs; x += 1) {
|
||||
float value1 = 2048 / (metaballDistances[x] + 1);
|
||||
float2 direction1 = metaballDirections[x];
|
||||
|
||||
for (j = i + 2, y = x + 1; j < metaballArraySize; j += 2, y += 1) {
|
||||
for (y = x + 1; y < numberOfMetaballs; y += 1) {
|
||||
|
||||
float value2 = 2048 / (metaballDistances[y] + 1);
|
||||
float2 direction2 = metaballDirections[y];
|
||||
|
Loading…
Reference in New Issue
Block a user