34#include "RNA_prototypes.hh"
52 Brush *brush =
nullptr;
62 *r_from = (
ID *)brush;
107 node_next = node->
next;
136 "texture node tree type");
142 tt->
ui_icon = ICON_NODE_TEXTURE;
171 nts = MEM_cnew<bNodeThreadStack>(
"bNodeThreadStack");
195 for (n = 0, nodeexec =
exec->nodeexec; n <
exec->totnodes; n++, nodeexec++) {
196 node = nodeexec->
node;
197 if (node->runtime->need_exec) {
203 if (node->typeinfo->exec_fn && !(node->flag &
NODE_MUTED)) {
204 node->typeinfo->exec_fn(callerdata,
thread, node, &nodeexec->
data, nsin, nsout);
226 node->runtime->need_exec = 1;
240 if (ntree->
runtime->execdata) {
241 return ntree->
runtime->execdata;
264 for (ns = nts->stack, a = 0; a <
exec->stacksize; a++, ns++) {
277 if (
exec->threadstack) {
290 exec->threadstack =
nullptr;
305 ntree->
runtime->execdata =
nullptr;
330 data.osatex = osatex;
331 data.target = target;
332 data.do_preview = preview;
333 data.do_manage =
true;
335 data.which_output = which_output;
342 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(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define STRNCPY(dst, src)
void BLI_thread_unlock(int type)
void BLI_thread_lock(int type)
#define BLENDER_MAX_THREADS
FreestyleLineStyle linestyle
void MEM_freeN(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void node_internal_relink(bNodeTree *ntree, bNode *node)
bool node_is_static_socket_type(const bNodeSocketType *stype)
void(*)(void *calldata, int nclass, const char *name) bNodeClassCallback
void node_tree_type_add(bNodeTreeType *nt)
const bNodeInstanceKey NODE_INSTANCE_KEY_BASE
void node_tree_free_local_node(bNodeTree *ntree, bNode *node)
void ntree_update_reroute_nodes(bNodeTree *ntree)
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)
int ntreeTexExecTree(bNodeTree *ntree, TexResult *target, const float co[3], float dxt[3], float dyt[3], int osatex, const short thread, const Tex *, short which_output, int cfra, int preview, MTex *mtex)
static bool texture_node_tree_socket_type_valid(blender::bke::bNodeTreeType *, blender::bke::bNodeSocketType *socket_type)
blender::bke::bNodeTreeType * ntreeType_Texture
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)
void ntreeReleaseThreadStack(bNodeThreadStack *nts)
static void localize(bNodeTree *localtree, bNodeTree *)
static void foreach_nodeclass(void *calldata, blender::bke::bNodeClassCallback func)
struct bNodeTree * nodetree
bNodeTreeRuntimeHandle * runtime
NodeInstanceHashHandle * previews
void(* update)(bNodeTree *ntree)
void(* foreach_nodeclass)(void *calldata, bNodeClassCallback func)
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)