#include "operatingsystem.h" #include "c4d_memory.h" #include "c4d_general.h" #include "c4d_shaderplugin.h" #include "c4d_resource.h" #ifndef __API_INTERN__ #include "c4d_tools.h" #else #include "shdlist.h" #endif SHADERINFO ShaderData::GetRenderInfo(BaseShader* chn) { return SHADERINFO_0; } INITRENDERRESULT ShaderData::InitRender(BaseShader* chn, const InitRenderStruct& irs) { return INITRENDERRESULT_OK; } void ShaderData::FreeRender(BaseShader* chn) { } Vector ShaderData::Output(BaseShader* chn, ChannelData* cd) { return Vector(0.0); } Bool ShaderData::Draw(BaseShader* chn, BaseObject* op, BaseTag* tag, BaseDraw* bd, BaseDrawHelp* bh) { return true; } GL_MESSAGE ShaderData::GlMessage(BaseShader* sh, Int32 type, void* msgdata) { return GL_MESSAGE_ERROR; } Int32 ShaderData::InitGLImage(BaseShader* sh, BaseDocument* doc, BaseThread* th, BaseBitmap* bmp, Bool alpha, Int32 doccolorspace, Bool linearworkflow) { return 0; } void ShaderData::DestroyGLImage(BaseShader* sh, BaseDocument* doc) { } void ShaderData::InvalidateGLImage(BaseShader* sh, BaseDocument* doc) { } Bool ShaderData::GetGLImageSize(BaseShader* sh, BaseDocument* doc, Int32 s, Bool noScale, Int32& w, Int32& h) { return false; } BaseShader* ShaderData::GetSubsurfaceShader(BaseShader* sh, Float& bestmpl) { return nullptr; } void FillShaderPlugin(SHADERPLUGIN* np, DataAllocator* npalloc, Int32 info, Int32 disklevel, void* emulation) { FillNodePlugin(np, info, npalloc, nullptr, disklevel, emulation); np->Draw = &ShaderData::Draw; np->GetRenderInfo = &ShaderData::GetRenderInfo; np->InitRender = &ShaderData::InitRender; np->FreeRender = &ShaderData::FreeRender; np->Output = &ShaderData::Output; np->GlMessage = &ShaderData::GlMessage; np->InitGLImage = &ShaderData::InitGLImage; np->GetGLImageSize = &ShaderData::GetGLImageSize; np->DestroyGLImage = &ShaderData::DestroyGLImage; np->InvalidateGLImage = &ShaderData::InvalidateGLImage; np->GetSubsurfaceShader = &ShaderData::GetSubsurfaceShader; } Bool RegisterShaderPlugin(Int32 id, const String& str, Int32 info, DataAllocator* npalloc, const String& description, Int32 disklevel, void* emulation) { if (description.Content() && !RegisterDescription(id, description)) return false; SHADERPLUGIN np; ClearMem(&np, sizeof(np)); FillShaderPlugin(&np, npalloc, info, disklevel, emulation); return GeRegisterPlugin(PLUGINTYPE_SHADER, id, str, &np, sizeof(np)); }