Add spray brush, paint interval, and per-channel paint opacity

Spray brush mode: bakes a procedural scattered-dot mask per stamp (random
position, size, alpha within the brush disc) and paints it through the
existing single-stamp pipeline; dot centers clamped to (0.5 - dotR) so the
spray footprint matches the solid brush radius.

Paint interval: float on MeshPainter; 0 keeps the continuous interpolated
stroke, >0 emits a single timed dab every x.xx seconds.

Color picker alpha: horizontal alpha bar on both HSV pickers, runtime-built
in Rebind (no prefab re-bake), passed through to brushColor.a / emissionColor.a.

Metallic/smoothness + occlusion paint opacity: new opacity fields applied in
both CPU and GPU backends (GPU MSO draw split into MS and occlusion sub-stamps
for independent opacity), with cloned alpha sliders wired into the HUD.

Also includes the prefab layout tweaks and scene adjustments.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 4.8 committed 2026-06-24 19:07:28 +02:00
1 parent af3aa34d66
commit b07d9a22d2
9 files changed
+1227 -86

No files matched your search

+24 -3
View File
@@ -446,6 +446,12 @@ MonoBehaviour:
brushShader: {fileID: 0}
dilateShader: {fileID: 0}
packMsShader: {fileID: 0}
spray: 0
sprayDots: 24
sprayDotSizeMin: 0.05
sprayDotSizeMax: 0.18
sprayDotAlphaMin: 0.25
sprayDotAlphaMax: 1
useGpu: 1
paintAlbedo: 1
paintMetallicSmoothness: 0
@@ -465,6 +471,7 @@ MonoBehaviour:
brushAlignment: 0
brushRotation: 0
paintOnMoveOnly: 1
paintInterval: 0
previewMode: 2
previewOpacity: 1
textureSize: 1024
@@ -1412,6 +1419,12 @@ MonoBehaviour:
brushShader: {fileID: 0}
dilateShader: {fileID: 0}
packMsShader: {fileID: 0}
spray: 0
sprayDots: 24
sprayDotSizeMin: 0.05
sprayDotSizeMax: 0.18
sprayDotAlphaMin: 0.25
sprayDotAlphaMax: 1
useGpu: 1
paintAlbedo: 1
paintMetallicSmoothness: 0
@@ -1431,6 +1444,7 @@ MonoBehaviour:
brushAlignment: 0
brushRotation: 0
paintOnMoveOnly: 1
paintInterval: 0
previewMode: 2
previewOpacity: 1
textureSize: 1024
@@ -1605,9 +1619,9 @@ Transform:
m_GameObject: {fileID: 721670969}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 10, y: 10, z: 10}
m_ConstrainProportionsScale: 0
m_LocalPosition: {x: 0, y: 0, z: 11.5}
m_LocalScale: {x: 5, y: 5, z: 5}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 686187287}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -2756,6 +2770,12 @@ MonoBehaviour:
brushShader: {fileID: 0}
dilateShader: {fileID: 0}
packMsShader: {fileID: 0}
spray: 0
sprayDots: 24
sprayDotSizeMin: 0.05
sprayDotSizeMax: 0.18
sprayDotAlphaMin: 0.25
sprayDotAlphaMax: 1
useGpu: 1
paintAlbedo: 1
paintMetallicSmoothness: 0
@@ -2775,6 +2795,7 @@ MonoBehaviour:
brushAlignment: 0
brushRotation: 0
paintOnMoveOnly: 1
paintInterval: 0
previewMode: 2
previewOpacity: 1
textureSize: 1024