|
@@ -193,6 +193,7 @@ const PostprocessingSchema = {
|
|
|
uFogNear: UniformSpec('f'),
|
|
|
uFogFar: UniformSpec('f'),
|
|
|
uFogColor: UniformSpec('v3'),
|
|
|
+ uOutlineColor: UniformSpec('v3'),
|
|
|
uTransparentBackground: UniformSpec('b'),
|
|
|
|
|
|
uMaxPossibleViewZDiff: UniformSpec('f'),
|
|
@@ -220,6 +221,7 @@ function getPostprocessingRenderable(ctx: WebGLContext, colorTexture: Texture, d
|
|
|
uFogNear: ValueCell.create(10000),
|
|
|
uFogFar: ValueCell.create(10000),
|
|
|
uFogColor: ValueCell.create(Vec3.create(1, 1, 1)),
|
|
|
+ uOutlineColor: ValueCell.create(Vec3.create(0, 0, 0)),
|
|
|
uTransparentBackground: ValueCell.create(false),
|
|
|
|
|
|
uMaxPossibleViewZDiff: ValueCell.create(0.5),
|
|
@@ -252,6 +254,7 @@ export const PostprocessingParams = {
|
|
|
on: PD.Group({
|
|
|
scale: PD.Numeric(1, { min: 1, max: 5, step: 1 }),
|
|
|
threshold: PD.Numeric(0.33, { min: 0.01, max: 1, step: 0.01 }),
|
|
|
+ color: PD.Color(Color(0x000000)),
|
|
|
}),
|
|
|
off: PD.Group({})
|
|
|
}, { cycle: true, description: 'Draw outline around 3D objects' }),
|
|
@@ -446,6 +449,8 @@ export class PostprocessingPass {
|
|
|
ValueCell.updateIfChanged(this.outlinesRenderable.values.uFar, camera.far);
|
|
|
ValueCell.updateIfChanged(this.outlinesRenderable.values.uMaxPossibleViewZDiff, maxPossibleViewZDiff);
|
|
|
|
|
|
+ ValueCell.update(this.renderable.values.uOutlineColor, Color.toVec3Normalized(this.renderable.values.uOutlineColor.ref.value, props.outline.params.color));
|
|
|
+
|
|
|
ValueCell.updateIfChanged(this.renderable.values.uMaxPossibleViewZDiff, maxPossibleViewZDiff);
|
|
|
if (this.renderable.values.dOutlineScale.ref.value !== outlineScale) { needsUpdateMain = true; }
|
|
|
ValueCell.updateIfChanged(this.renderable.values.dOutlineScale, outlineScale);
|