#include #include #include #include #include #include #include #include #include #include Discard::Discard(ShaderGraph& graph) : ShaderNode(graph) { DisablePreview(); DisableCustomVariableName(); } nzsl::Ast::NodePtr Discard::BuildNode(nzsl::Ast::ExpressionPtr* expressions, std::size_t count, std::size_t outputIndex) const { assert(count == 1); assert(outputIndex == 0); using namespace nzsl; auto condition = ShaderBuilder::Binary(nzsl::Ast::BinaryType::CompEq, std::move(expressions[0]), ShaderBuilder::Constant(true)); return ShaderBuilder::Branch(std::move(condition), ShaderBuilder::Discard()); } int Discard::GetOutputOrder() const { return std::numeric_limits::lowest(); } QtNodes::NodeDataType Discard::dataType(QtNodes::PortType portType, QtNodes::PortIndex portIndex) const { assert(portType == QtNodes::PortType::In); assert(portIndex == 0); return BoolData::Type(); } unsigned int Discard::nPorts(QtNodes::PortType portType) const { switch (portType) { case QtNodes::PortType::In: return 1; case QtNodes::PortType::Out: return 0; } return 0; } std::shared_ptr Discard::outData(QtNodes::PortIndex port) { return {}; }