28using namespace nodes::derived_node_tree_types;
33 if (!is_socket_available(output)) {
47 declare_input_descriptor(
input->identifier, input_descriptor);
60 context().profiler()->set_node_evaluation_time(node_.instance_key(), after_time - before_time);
77Result *NodeOperation::get_preview_result()
85 Result &output_result = get_result(
output->identifier);
86 if (output_result.should_compute()) {
87 return &output_result;
92 if (node()->input_sockets().is_empty()) {
103 if (input_result.is_allocated()) {
104 return &input_result;
124 get_result(doutput->identifier).set_reference_count(reference_count);
140 return get_result(identifier).should_compute();
#define BLI_assert_unreachable()
struct bNodeSocket bNodeSocket
void GPU_debug_group_end()
void GPU_debug_group_begin(const char *name)
bool contains(const Key &key) const
void compute_results_reference_counts(const Schedule &schedule)
const DNode & node() const
const bNode & bnode() const
void compute_preview() override
bool should_compute_output(StringRef identifier)
NodeOperation(Context &context, DNode node)
Result & get_result(StringRef identifier)
void populate_result(StringRef identifier, Result result)
Operation(Context &context)
Context & context() const
int number_of_inputs_linked_to_output_conditioned(DOutputSocket output, FunctionRef< bool(DInputSocket)> condition)
VectorSet< DNode > Schedule
void compute_preview(Context &context, const nodes::DNode &node, const Result &input_result)
ResultType get_node_socket_result_type(const bNodeSocket *socket)
InputDescriptor input_descriptor_from_input_socket(const bNodeSocket *socket)
bool is_socket_available(const bNodeSocket *socket)
bool is_node_preview_needed(const DNode &node)
Clock::time_point TimePoint
static pxr::UsdShadeInput get_input(const pxr::UsdShadeShader &usd_shader, const pxr::TfToken &input_name)