33#include "RNA_prototypes.hh"
51 Brush *brush =
nullptr;
61 *r_from = (
ID *)brush;
72 *r_from = (
ID *)linestyle;
102 bNode *node, *node_next;
105 for (node =
static_cast<bNode *
>(localtree->
nodes.
first); node; node = node_next) {
106 node_next = node->
next;
108 if (node->is_muted() || node->is_reroute()) {
138 tt->
idname =
"TextureNodeTree";
141 tt->
ui_icon = ICON_NODE_TEXTURE;
194 for (n = 0, nodeexec =
exec->nodeexec; n < exec->totnodes; n++, nodeexec++) {
195 node = nodeexec->
node;
196 if (node->
runtime->need_exec) {
202 if (node->
typeinfo->exec_fn && !node->is_muted()) {
225 node->runtime->need_exec = 1;
239 if (ntree->
runtime->execdata) {
240 return ntree->
runtime->execdata;
261 for (ns = nts->stack, a = 0; a < exec->stacksize; a++, ns++) {
274 if (
exec->threadstack) {
287 exec->threadstack =
nullptr;
302 ntree->
runtime->execdata =
nullptr;
322 data.target = target;
323 data.do_preview = preview;
324 data.do_manage =
true;
326 data.which_output = which_output;
333 if (!ntree->
runtime->execdata) {
SpaceNode * CTX_wm_space_node(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
Blender kernel freestyle line style functionality.
FreestyleLineStyle * BKE_linestyle_active_from_view_layer(struct ViewLayer *view_layer)
#define NODE_CLASS_OUTPUT
#define NODE_CLASS_INTERFACE
#define NODE_CLASS_CONVERTER
#define NODE_CLASS_PATTERN
#define NODE_CLASS_DISTORT
#define NODE_CLASS_LAYOUT
#define NODE_CLASS_OP_COLOR
#define NODE_CLASS_TEXTURE
Brush * BKE_paint_brush(Paint *paint)
struct Tex * give_current_linestyle_texture(struct FreestyleLineStyle *linestyle)
struct Tex * give_current_brush_texture(struct Brush *br)
#define LISTBASE_FOREACH(type, var, list)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_thread_unlock(int type)
void BLI_thread_lock(int type)
#define BLENDER_MAX_THREADS
struct blender::bke::bNodeTreeType * ntreeType_Texture
BMesh const char void * data
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void * MEM_callocN(size_t len, const char *str)
void * MEM_dupallocN(const void *vmemh)
void MEM_freeN(void *vmemh)
void node_tree_free_local_node(bNodeTree &ntree, bNode &node)
void node_tree_type_add(bNodeTreeType &nt)
void node_internal_relink(bNodeTree &ntree, bNode &node)
const bNodeInstanceKey NODE_INSTANCE_KEY_BASE
void(*)(void *calldata, int nclass, StringRefNull name) bNodeClassCallback
bool node_is_static_socket_type(const bNodeSocketType &stype)
void ntree_update_reroute_nodes(bNodeTree *ntree)
static void localize(bNodeTree *localtree, bNodeTree *ntree)
static void update(bNodeTree *ntree)
static void foreach_nodeclass(void *calldata, blender::bke::bNodeClassCallback func)
bNodeTreeExec * ntree_exec_begin(bNodeExecContext *context, bNodeTree *ntree, bNodeInstanceKey parent_key)
void node_get_stack(bNode *node, bNodeStack *stack, bNodeStack **in, bNodeStack **out)
void ntree_exec_end(bNodeTreeExec *exec)
static void exec(void *data, int, bNode *node, bNodeExecData *execdata, bNodeStack **in, bNodeStack **out)
void register_node_tree_type_tex()
bNodeThreadStack * ntreeGetThreadStack(bNodeTreeExec *exec, int thread)
bool ntreeExecThreadNodes(bNodeTreeExec *exec, bNodeThreadStack *nts, void *callerdata, int thread)
bNodeTreeExec * ntreeTexBeginExecTree(bNodeTree *ntree)
bNodeTreeExec * ntreeTexBeginExecTree_internal(bNodeExecContext *context, bNodeTree *ntree, bNodeInstanceKey parent_key)
void ntreeTexEndExecTree_internal(bNodeTreeExec *exec)
static void tex_free_delegates(bNodeTreeExec *exec)
static void update(bNodeTree *ntree)
static bool texture_node_tree_socket_type_valid(blender::bke::bNodeTreeType *, blender::bke::bNodeSocketType *socket_type)
void ntreeTexEndExecTree(bNodeTreeExec *exec)
static void texture_get_from_context(const bContext *C, blender::bke::bNodeTreeType *, bNodeTree **r_ntree, ID **r_id, ID **r_from)
int ntreeTexExecTree(bNodeTree *ntree, TexResult *target, const float co[3], const short thread, const Tex *, short which_output, int cfra, int preview, MTex *mtex)
void ntreeReleaseThreadStack(bNodeThreadStack *nts)
static void localize(bNodeTree *localtree, bNodeTree *)
static void foreach_nodeclass(void *calldata, blender::bke::bNodeClassCallback func)
struct ToolSettings * toolsettings
struct bNodeTree * nodetree
bNodeTreeRuntimeHandle * runtime
bNodeTypeHandle * typeinfo
bNodeRuntimeHandle * runtime
void(* update)(bNodeTree *ntree)
void(* foreach_nodeclass)(void *calldata, bNodeClassCallback func)
std::string ui_description
void(* get_from_context)(const bContext *C, bNodeTreeType *ntreetype, bNodeTree **r_ntree, ID **r_id, ID **r_from)
void(* localize)(bNodeTree *localtree, bNodeTree *ntree)
bool(* valid_socket_type)(bNodeTreeType *ntreetype, bNodeSocketType *socket_type)