Blender V5.0
NOD_geometry_nodes_log.hh File Reference

Go to the source code of this file.

Classes

struct  blender::nodes::geo_eval_log::NodeWarning
class  blender::nodes::geo_eval_log::ValueLog
class  blender::nodes::geo_eval_log::GenericValueLog
class  blender::nodes::geo_eval_log::FieldInfoLog
struct  blender::nodes::geo_eval_log::StringLog
struct  blender::nodes::geo_eval_log::GeometryAttributeInfo
struct  blender::nodes::geo_eval_log::VolumeGridInfo
class  blender::nodes::geo_eval_log::GeometryInfoLog
struct  blender::nodes::geo_eval_log::GeometryInfoLog::MeshInfo
struct  blender::nodes::geo_eval_log::GeometryInfoLog::CurveInfo
struct  blender::nodes::geo_eval_log::GeometryInfoLog::PointCloudInfo
struct  blender::nodes::geo_eval_log::GeometryInfoLog::GreasePencilInfo
struct  blender::nodes::geo_eval_log::GeometryInfoLog::InstancesInfo
struct  blender::nodes::geo_eval_log::GeometryInfoLog::EditDataInfo
struct  blender::nodes::geo_eval_log::GeometryInfoLog::VolumeInfo
class  blender::nodes::geo_eval_log::GridInfoLog
class  blender::nodes::geo_eval_log::BundleValueLog
struct  blender::nodes::geo_eval_log::BundleValueLog::Item
class  blender::nodes::geo_eval_log::ClosureValueLog
struct  blender::nodes::geo_eval_log::ClosureValueLog::Item
struct  blender::nodes::geo_eval_log::ClosureValueLog::Source
class  blender::nodes::geo_eval_log::ListInfoLog
class  blender::nodes::geo_eval_log::ViewerNodeLog
struct  blender::nodes::geo_eval_log::ViewerNodeLog::Item
struct  blender::nodes::geo_eval_log::ViewerNodeLog::ItemIdentifierGetter
class  blender::nodes::geo_eval_log::GeoTreeLogger
struct  blender::nodes::geo_eval_log::GeoTreeLogger::WarningWithNode
struct  blender::nodes::geo_eval_log::GeoTreeLogger::SocketValueLog
struct  blender::nodes::geo_eval_log::GeoTreeLogger::NodeExecutionTime
struct  blender::nodes::geo_eval_log::GeoTreeLogger::ViewerNodeLogWithNode
struct  blender::nodes::geo_eval_log::GeoTreeLogger::AttributeUsageWithNode
struct  blender::nodes::geo_eval_log::GeoTreeLogger::DebugMessage
struct  blender::nodes::geo_eval_log::GeoTreeLogger::EvaluatedGizmoNode
class  blender::nodes::geo_eval_log::GeoNodeLog
class  blender::nodes::geo_eval_log::GeoTreeLog
class  blender::nodes::geo_eval_log::ContextualGeoTreeLogs
class  blender::nodes::geo_eval_log::GeoNodesLog
class  blender::nodes::geo_eval_log::GField

Namespaces

namespace  blender
namespace  blender::nodes
namespace  blender::nodes::geo_eval_log

Typedefs

using blender::nodes::geo_eval_log::Clock = std::chrono::steady_clock
using blender::nodes::geo_eval_log::TimePoint = Clock::time_point

Enumerations

enum class  blender::nodes::geo_eval_log::NamedAttributeUsage { blender::nodes::geo_eval_log::None = 0 , blender::nodes::geo_eval_log::Read = 1 << 0 , blender::nodes::geo_eval_log::Write = 1 << 1 , blender::nodes::geo_eval_log::Remove = 1 << 2 }

Functions

 blender::nodes::geo_eval_log::ENUM_OPERATORS (NamedAttributeUsage, NamedAttributeUsage::Remove)

Detailed Description

Many geometry nodes related UI features need access to data produced during evaluation. Not only is the final output required but also the intermediate results. Those features include attribute search, node warnings, socket inspection and the viewer node.

This file provides the system for logging data during evaluation and accessing the data after evaluation. At the root of the logging data is a #GeoNodesLog which is created by the code that invokes Geometry Nodes (e.g. the Geometry Nodes modifier).

The system makes a distinction between "loggers" and the "log":

  • Logger (#GeoTreeLogger): Is used during geometry nodes evaluation. Each thread logs data independently to avoid communication between threads. Logging should generally be fast. Generally, the logged data is just dumped into simple containers. Any processing of the data happens later if necessary. This is important for performance, because in practice, most of the logged data is never used again. So any processing of the data is likely to be a waste of resources.
  • Log (#GeoTreeLog, #GeoNodeLog): Those are used when accessing logged data in UI code. They contain and cache preprocessed data produced during logging. The log combines data from all thread-local loggers to provide simple access. Importantly, the (preprocessed) log is only created when it is actually used by UI code.

Definition in file NOD_geometry_nodes_log.hh.