Fix inverted bug

This commit is contained in:
schmelczerandras 2020-10-04 09:36:10 +02:00
parent d1dd360d83
commit 5723b91b32
3 changed files with 11 additions and 18 deletions

View file

@ -24,8 +24,8 @@ export class UniformArrayAutoScalingProgram implements IProgram {
public async initialize(
shaderSources: [string, string],
descriptors: Array<DrawableDescriptor>,
substitutions: { [name: string]: any },
compiler: ParallelCompiler
compiler: ParallelCompiler,
substitutions: { [name: string]: any } = {}
): Promise<void> {
this.descriptors = descriptors;
@ -118,7 +118,7 @@ export class UniformArrayAutoScalingProgram implements IProgram {
};
const program = new FragmentShaderOnlyProgram(this.gl);
await program.initialize(shaderSources, processedSubstitutions, compiler);
await program.initialize(shaderSources, compiler, processedSubstitutions);
this.programs.push({
program,
@ -161,10 +161,6 @@ export class UniformArrayAutoScalingProgram implements IProgram {
}
return `
#ifndef NOT_EMPTY
#define NOT_EMPTY
#endif
objectMinDistance = ${
descriptors[i].sdf!.distanceFunctionName
}(position, objectColor);
@ -179,7 +175,12 @@ export class UniformArrayAutoScalingProgram implements IProgram {
}
);
minDistance = min(minDistance, objectMinDistance);
${
descriptors[i].sdf?.isInverted
? 'minDistance = max(minDistance, objectMinDistance);'
: 'minDistance = min(minDistance, objectMinDistance);'
}
`;
})
.join('\n');

View file

@ -11,16 +11,12 @@ varying vec2 position;
{declarations}
void main() {
float minDistance = abs(maxMinDistance);
float minDistance = maxMinDistance;
float color = 0.0;
float objectMinDistance, objectColor;
{functionCalls}
#ifndef NOT_EMPTY
minDistance = maxMinDistance;
#endif
gl_FragColor = vec4(minDistance * 8.0, color, 0.0, 1.0);
}

View file

@ -13,16 +13,12 @@ in vec2 position;
out vec2 fragmentColor;
void main() {
float minDistance = abs(maxMinDistance);
float minDistance = maxMinDistance;
float color = 0.0;
float objectMinDistance, objectColor;
{functionCalls}
#ifndef NOT_EMPTY
minDistance = maxMinDistance;
#endif
fragmentColor = vec2(minDistance, color);
}