13#include "../generic/py_capi_utils.hh"
20#include "RNA_prototypes.hh"
29 return (
ptr) ?
static_cast<T *
>(
ptr->
data) :
nullptr;
35 char *engine_type, *render_delegate_id;
36 if (!PyArg_ParseTuple(args,
"Oss", &pyengine, &engine_type, &render_delegate_id)) {
45 if (
STREQ(engine_type,
"VIEWPORT")) {
48 else if (
STREQ(engine_type,
"PREVIEW")) {
52 engine =
new FinalEngine(bl_engine, render_delegate_id);
55 catch (std::runtime_error &
e) {
60 return PyLong_FromVoidPtr(engine);
66 if (!PyArg_ParseTuple(args,
"O", &pyengine)) {
70 Engine *engine =
static_cast<Engine *
>(PyLong_AsVoidPtr(pyengine));
79 PyObject *pyengine, *pydepsgraph, *pycontext;
80 if (!PyArg_ParseTuple(args,
"OOO", &pyengine, &pydepsgraph, &pycontext)) {
84 Engine *engine =
static_cast<Engine *
>(PyLong_AsVoidPtr(pyengine));
97 if (!PyArg_ParseTuple(args,
"O", &pyengine)) {
101 Engine *engine =
static_cast<Engine *
>(PyLong_AsVoidPtr(pyengine));
106 Py_BEGIN_ALLOW_THREADS;
108 Py_END_ALLOW_THREADS;
115 PyObject *pyengine, *pycontext;
116 if (!PyArg_ParseTuple(args,
"OO", &pyengine, &pycontext)) {
126 Py_BEGIN_ALLOW_THREADS;
128 Py_END_ALLOW_THREADS;
136 if (PyBool_Check(pyval)) {
137 val = Py_IsTrue(pyval);
139 else if (PyLong_Check(pyval)) {
140 val = PyLong_AsLong(pyval);
142 else if (PyFloat_Check(pyval)) {
143 val = PyFloat_AsDouble(pyval);
145 else if (PyUnicode_Check(pyval)) {
146 val = std::string(PyUnicode_AsUTF8(pyval));
153 PyObject *pyengine, *pyval;
155 if (!PyArg_ParseTuple(args,
"OsO", &pyengine, &key, &pyval)) {
159 Engine *engine =
static_cast<Engine *
>(PyLong_AsVoidPtr(pyengine));
169 PyObject *pycontext, *pyimage;
170 if (!PyArg_ParseTuple(args,
"OO", &pycontext, &pyimage)) {
175 Image *image =
static_cast<Image *
>(PyLong_AsVoidPtr(pyimage));
192 {
nullptr,
nullptr, 0,
nullptr},
195static PyModuleDef
module = {
196 PyModuleDef_HEAD_INIT,
213 PyObject *
mod = PyModule_Create(&blender::render::hydra::module);
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
#define CLOG_ERROR(clg_ref,...)
#define CLOG_INFO(clg_ref, level,...)
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
const PointerRNA * pyrna_struct_as_ptr_or_null(PyObject *py_obj, const StructRNA *srna)
void sync(Depsgraph *depsgraph, bContext *context)
virtual void set_render_setting(const std::string &key, const pxr::VtValue &val)
const Depsgraph * depsgraph
std::string cache_or_get_image_file(Main *bmain, Scene *scene, Image *image, ImageUser *iuser)
static pxr::VtValue get_setting_val(PyObject *pyval)
static PyObject * engine_view_draw_func(PyObject *, PyObject *args)
static PyObject * engine_set_render_setting_func(PyObject *, PyObject *args)
static PyObject * engine_free_func(PyObject *, PyObject *args)
static PyObject * engine_render_func(PyObject *, PyObject *args)
static PyObject * engine_update_func(PyObject *, PyObject *args)
static PyObject * cache_or_get_image_file_func(PyObject *, PyObject *args)
static PyObject * engine_create_func(PyObject *, PyObject *args)
struct CLG_LogRef * LOG_HYDRA_RENDER
T * pyrna_to_pointer(PyObject *pyobject, const StructRNA *rnatype)
static PyMethodDef methods[]
PyObject * PyC_UnicodeFromStdStr(const std::string &str)
PyObject * BPyInit_hydra()
static struct PyModuleDef module
ccl_device_inline int mod(int x, int m)