Initial Grease Pencil 3.0 stage #106848

Merged
Falk David merged 224 commits from filedescriptor/blender:grease-pencil-v3 into main 2023-05-30 11:14:22 +02:00
5 changed files with 11 additions and 11 deletions
Showing only changes of commit 70afcb8afb - Show all commits

View File

@ -273,8 +273,6 @@ void legacy_gpencil_to_grease_pencil(Main &main, GreasePencil &grease_pencil, bG
} // namespace convert } // namespace convert
} // namespace greasepencil
/** /**

Not sure why the greasepencil namespace ends up here? Also means that e.g. the fairly generically-named StrokePoint struct is in the fairly generic blender::bke namespace, which does not sounds great to me? not to mention 'C-style' namespace in names like GreasePencilDrawingRuntime.

Not sure why the `greasepencil` namespace ends up here? Also means that e.g. the fairly generically-named `StrokePoint` struct is in the fairly generic `blender::bke` namespace, which does not sounds great to me? not to mention 'C-style' namespace in names like `GreasePencilDrawingRuntime`.
* A single point for a stroke that is currently being drawn. * A single point for a stroke that is currently being drawn.
*/ */
@ -301,6 +299,8 @@ struct StrokeCache {
} }
}; };
} // namespace greasepencil

Looks like this should be private maybe? It has a _ suffix.

Looks like this should be private maybe? It has a `_` suffix.
class GreasePencilDrawingRuntime { class GreasePencilDrawingRuntime {
public: public:
/** /**
@ -308,7 +308,7 @@ class GreasePencilDrawingRuntime {
*/ */
mutable SharedCache<Vector<uint3>> triangles_cache; mutable SharedCache<Vector<uint3>> triangles_cache;

Put out of line.

Put out of line.
StrokeCache stroke_cache; greasepencil::StrokeCache stroke_cache;
}; };
class GreasePencilRuntime { class GreasePencilRuntime {

View File

@ -829,7 +829,7 @@ bool GreasePencilDrawing::has_stroke_buffer() const
return this->runtime->stroke_cache.points.size() > 0; return this->runtime->stroke_cache.points.size() > 0;
} }
blender::Span<blender::bke::StrokePoint> GreasePencilDrawing::stroke_buffer() const blender::Span<blender::bke::greasepencil::StrokePoint> GreasePencilDrawing::stroke_buffer() const
{ {
return this->runtime->stroke_cache.points.as_span(); return this->runtime->stroke_cache.points.as_span();
} }

View File

@ -388,7 +388,7 @@ static void grease_pencil_batches_ensure(GreasePencil &grease_pencil, int cfra)
}); });
if (drawing.has_stroke_buffer()) { if (drawing.has_stroke_buffer()) {
Span<bke::StrokePoint> points = drawing.stroke_buffer(); Span<bke::greasepencil::StrokePoint> points = drawing.stroke_buffer();
const int verts_start_offset = verts_start_offsets.last(); const int verts_start_offset = verts_start_offsets.last();
const int num_verts = 1 + points.size() + 1; const int num_verts = 1 + points.size() + 1;
IndexRange verts_range = IndexRange(verts_start_offset, num_verts); IndexRange verts_range = IndexRange(verts_start_offset, num_verts);
@ -401,7 +401,7 @@ static void grease_pencil_batches_ensure(GreasePencil &grease_pencil, int cfra)
const int idx = i + 1; const int idx = i + 1;
GreasePencilStrokeVert &s_vert = verts_slice[idx]; GreasePencilStrokeVert &s_vert = verts_slice[idx];
GreasePencilColorVert &c_vert = cols_slice[idx]; GreasePencilColorVert &c_vert = cols_slice[idx];
const bke::StrokePoint &point = points[i]; const bke::greasepencil::StrokePoint &point = points[i];
copy_v3_v3(s_vert.pos, point.position); copy_v3_v3(s_vert.pos, point.position);
s_vert.radius = point.radius; s_vert.radius = point.radius;

View File

@ -67,7 +67,7 @@ struct PaintOperationExecutor {
float3 proj_pos; float3 proj_pos;
ED_view3d_win_to_3d_on_plane(region, plane, stroke_extension.mouse_position, false, proj_pos); ED_view3d_win_to_3d_on_plane(region, plane, stroke_extension.mouse_position, false, proj_pos);
StrokePoint new_point{proj_pos, stroke_extension.pressure * 100.0f, 1.0f, float4(1.0f)}; bke::greasepencil::StrokePoint new_point{proj_pos, stroke_extension.pressure * 100.0f, 1.0f, float4(1.0f)};
drawing.runtime->stroke_cache.points.append(std::move(new_point)); drawing.runtime->stroke_cache.points.append(std::move(new_point));
@ -104,7 +104,7 @@ void PaintOperation::on_stroke_done(const bContext &C)
GreasePencilDrawing &drawing_eval = *reinterpret_cast<GreasePencilDrawing *>( GreasePencilDrawing &drawing_eval = *reinterpret_cast<GreasePencilDrawing *>(
grease_pencil_eval.drawings()[index_eval]); grease_pencil_eval.drawings()[index_eval]);
const Span<StrokePoint> stroke_points = drawing_eval.stroke_buffer(); const Span<bke::greasepencil::StrokePoint> stroke_points = drawing_eval.stroke_buffer();
CurvesGeometry &curves = drawing_orig.geometry.wrap(); CurvesGeometry &curves = drawing_orig.geometry.wrap();
int num_old_curves = curves.curves_num(); int num_old_curves = curves.curves_num();
@ -124,7 +124,7 @@ void PaintOperation::on_stroke_done(const bContext &C)
SpanAttributeWriter<float> radii = attributes.lookup_for_write_span<float>("radius"); SpanAttributeWriter<float> radii = attributes.lookup_for_write_span<float>("radius");
SpanAttributeWriter<float> opacities = attributes.lookup_for_write_span<float>("opacity"); SpanAttributeWriter<float> opacities = attributes.lookup_for_write_span<float>("opacity");
for (const int i : IndexRange(stroke_points.size())) { for (const int i : IndexRange(stroke_points.size())) {
const StrokePoint &point = stroke_points[i]; const bke::greasepencil::StrokePoint &point = stroke_points[i];
const int point_i = new_points_range[i]; const int point_i = new_points_range[i];
positions[point_i] = point.position; positions[point_i] = point.position;
radii.span[point_i] = point.radius; radii.span[point_i] = point.radius;

View File

@ -18,10 +18,10 @@
namespace blender::bke { namespace blender::bke {
class GreasePencilRuntime; class GreasePencilRuntime;
class GreasePencilDrawingRuntime; class GreasePencilDrawingRuntime;
struct StrokePoint;
namespace greasepencil { namespace greasepencil {
class Layer; class Layer;
class LayerGroup; class LayerGroup;
struct StrokePoint;
} // namespace greasepencil } // namespace greasepencil
} // namespace blender::bke } // namespace blender::bke
using GreasePencilRuntimeHandle = blender::bke::GreasePencilRuntime; using GreasePencilRuntimeHandle = blender::bke::GreasePencilRuntime;
@ -104,7 +104,7 @@ typedef struct GreasePencilDrawing {
/** /**
* A buffer for a single stroke while drawing. * A buffer for a single stroke while drawing.
*/ */
blender::Span<blender::bke::StrokePoint> stroke_buffer() const; blender::Span<blender::bke::greasepencil::StrokePoint> stroke_buffer() const;
bool has_stroke_buffer() const; bool has_stroke_buffer() const;
#endif #endif
} GreasePencilDrawing; } GreasePencilDrawing;