|
119 | 119 | const isInside = dyno.and(dyno.lessThan(distance, brushRadius), |
120 | 120 | dyno.and(dyno.greaterThan(projectionAmplitude, dyno.dynoFloat(0.0)), |
121 | 121 | dyno.lessThan(projectionAmplitude, brushDepth))); |
| 122 | + |
| 123 | + // Paint/erase mode: change RGB or alpha values for splats inside brush |
122 | 124 | const luminanceOld = dyno.div(dyno.dot(rgb, flatColor), dyno.dynoFloat(3.0)); |
123 | 125 | const luminanceNew = dyno.div(dyno.dot(brushColor, flatColor), dyno.dynoFloat(3.0)); |
124 | 126 | const weightedRgb = dyno.mul(brushColor, dyno.div(luminanceOld, luminanceNew)); |
|
128 | 130 |
|
129 | 131 | // Undo mode: restore original RGBA for splats inside brush |
130 | 132 | const originalRgbaValue = readRgbaArray(originalRgba, index); |
131 | | - const originalRgbVec = dyno.vec3( |
132 | | - dyno.swizzle(originalRgbaValue, "x"), |
133 | | - dyno.swizzle(originalRgbaValue, "y"), |
134 | | - dyno.swizzle(originalRgbaValue, "z") |
135 | | - ); |
| 133 | + const originalRgbVec = dyno.vec3(originalRgbaValue); |
136 | 134 | const originalOpacityVal = dyno.swizzle(originalRgbaValue, "w"); |
137 | 135 | newRgb = dyno.select(dyno.and(undoEnabled, isInside), originalRgbVec, newRgb); |
138 | 136 | newOpacity = dyno.select(dyno.and(undoEnabled, isInside), originalOpacityVal, newOpacity); |
|
0 commit comments