Add better color output

This commit is contained in:
schmelczerandras 2020-09-24 21:51:26 +02:00
parent 98d1fc9ca2
commit 7d2c74d6a8
6 changed files with 58 additions and 38 deletions

View file

@ -135,7 +135,22 @@ export class UniformArrayAutoScalingProgram implements IProgram {
return '';
}
return `${descriptors[i].sdf!.distanceFunctionName}(minDistance, color);`;
return `
#ifndef NOT_EMPTY
#define NOT_EMPTY
#endif
objectMinDistance = ${
descriptors[i].sdf!.distanceFunctionName
}(position, objectColor);
color = mix(objectColor / {paletteSize}, color, step(
distanceNdcPixelSize + SURFACE_OFFSET,
objectMinDistance
));
minDistance = min(minDistance, objectMinDistance);
`;
})
.join('\n');
}

View file

@ -13,10 +13,16 @@ varying vec2 position;
{declarations}
void main() {
float minDistance = maxMinDistance;
float minDistance = abs(maxMinDistance);
float color = 0.0;
float objectMinDistance, objectColor;
{functionCalls}
#ifndef NOT_EMPTY
minDistance = maxMinDistance;
#endif
// minDistance / 2.0: NDC to UV scale
gl_FragColor = vec4(minDistance / 2.0, color, 0.0, 0.0);

View file

@ -15,11 +15,17 @@ in vec2 position;
out vec2 fragmentColor;
void main() {
float minDistance = maxMinDistance;
float minDistance = abs(maxMinDistance);
float color = 0.0;
float objectMinDistance, objectColor;
{functionCalls}
#ifndef NOT_EMPTY
minDistance = maxMinDistance;
#endif
// minDistance / 2.0: NDC to UV scale
fragmentColor = vec2(minDistance / 2.0, color);
}