Blender V4.3
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::GeometryAttributeInfo
 
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
 
struct  blender::nodes::geo_eval_log::GeometryInfoLog::GridInfo
 
class  blender::nodes::geo_eval_log::ViewerNodeLog
 
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::GeoModifierLog
 

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::NodeWarningType { blender::nodes::geo_eval_log::Error = 0 , blender::nodes::geo_eval_log::Warning = 1 , blender::nodes::geo_eval_log::Info = 2 }
 
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

int blender::nodes::geo_eval_log::node_warning_type_icon (const NodeWarningType type)
 
int blender::nodes::geo_eval_log::node_warning_type_severity (const NodeWarningType type)
 
 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. Geometry nodes is executed by a modifier, therefore the "root" of logging is #GeoModifierLog which will contain all data generated in a 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.