fixed multithreaded rendering bug + lua bindings updated
This commit is contained in:
@@ -246,57 +246,34 @@ void DeferredRenderableComponent::setPreferredThreadingCount(unsigned short valu
|
||||
|
||||
if (!wiRenderer::getMultithreadingSupport())
|
||||
{
|
||||
if (value > 1)
|
||||
wiHelper::messageBox("Multithreaded rendering not supported by your hardware! Falling back to single threading!", "Caution");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (value){
|
||||
case 0: break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SHADOWS));
|
||||
RenderReflections(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SHADOWS));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SHADOWS);
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderScene(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
RenderSecondaryScene(rtGBuffer, GetFinalRT(), wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
RenderLightShafts(rtGBuffer, wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
RenderComposition1(GetFinalRT(), wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
RenderBloom(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
RenderComposition2(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_REFLECTIONS);
|
||||
}));
|
||||
break;
|
||||
case 3:
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SHADOWS));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SHADOWS);
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderReflections(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_REFLECTIONS);
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_REFLECTIONS);
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderScene(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderSecondaryScene(rtGBuffer, GetFinalRT(), wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderLightShafts(rtGBuffer, wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderComposition1(GetFinalRT(), wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderBloom(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderComposition2(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SCENE);
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SCENE);
|
||||
}));
|
||||
break;
|
||||
case 4:
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SHADOWS));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SHADOWS);
|
||||
}));
|
||||
case 3:
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderReflections(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
@@ -304,8 +281,9 @@ void DeferredRenderableComponent::setPreferredThreadingCount(unsigned short valu
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderScene(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SCENE);
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SCENE);
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
@@ -314,11 +292,35 @@ void DeferredRenderableComponent::setPreferredThreadingCount(unsigned short valu
|
||||
RenderComposition1(GetFinalRT(), wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC1));
|
||||
RenderBloom(wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC1));
|
||||
RenderComposition2(wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC1));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_MISC1);
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_MISC1);
|
||||
}));
|
||||
break;
|
||||
case 4:
|
||||
default:
|
||||
wiHelper::messageBox("You can assign a maximum of 4 rendering threads for graphics!\nFalling back to single threading!", "Caution");
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderReflections(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_REFLECTIONS);
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderScene(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SCENE);
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderSecondaryScene(rtGBuffer, GetFinalRT(), wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC1));
|
||||
RenderLightShafts(rtGBuffer, wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC1));
|
||||
RenderComposition1(GetFinalRT(), wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC1));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_MISC1);
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderBloom(wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC2));
|
||||
RenderComposition2(wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC2));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_MISC2);
|
||||
}));
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -38,6 +38,8 @@ Luna<DeferredRenderableComponent_BindLua>::FunctionType DeferredRenderableCompon
|
||||
|
||||
lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldFocus),
|
||||
lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldStrength),
|
||||
|
||||
lunamethod(Renderable3DComponent_BindLua, SetPreferredThreadingCount),
|
||||
{ NULL, NULL }
|
||||
};
|
||||
Luna<DeferredRenderableComponent_BindLua>::PropertyType DeferredRenderableComponent_BindLua::properties[] = {
|
||||
|
||||
@@ -101,35 +101,16 @@ void ForwardRenderableComponent::setPreferredThreadingCount(unsigned short value
|
||||
|
||||
if (!wiRenderer::getMultithreadingSupport())
|
||||
{
|
||||
if (value > 1)
|
||||
wiHelper::messageBox("Multithreaded rendering not supported by your hardware! Falling back to single threading!", "Caution");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (value){
|
||||
case 0: break;
|
||||
case 2:
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SHADOWS));
|
||||
RenderReflections(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SHADOWS));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SHADOWS);
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderScene(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
RenderSecondaryScene(rtMain, rtMain, wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
RenderLightShafts(rtMain, wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
RenderComposition1(rtMain, wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
RenderBloom(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
RenderComposition2(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_REFLECTIONS);
|
||||
}));
|
||||
switch (value) {
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 3:
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SHADOWS));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SHADOWS);
|
||||
}));
|
||||
case 2:
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderReflections(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
@@ -137,6 +118,7 @@ void ForwardRenderableComponent::setPreferredThreadingCount(unsigned short value
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderScene(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderSecondaryScene(rtMain, rtMain, wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderLightShafts(rtMain, wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
@@ -146,12 +128,7 @@ void ForwardRenderableComponent::setPreferredThreadingCount(unsigned short value
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SCENE);
|
||||
}));
|
||||
break;
|
||||
case 4:
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SHADOWS));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SHADOWS);
|
||||
}));
|
||||
case 3:
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderReflections(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
@@ -159,6 +136,7 @@ void ForwardRenderableComponent::setPreferredThreadingCount(unsigned short value
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderScene(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SCENE);
|
||||
}));
|
||||
@@ -172,8 +150,32 @@ void ForwardRenderableComponent::setPreferredThreadingCount(unsigned short value
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_MISC1);
|
||||
}));
|
||||
break;
|
||||
case 4:
|
||||
default:
|
||||
wiHelper::messageBox("You can assign a maximum of 4 rendering threads for graphics!\nFalling back to single threading!", "Caution");
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderReflections(wiRenderer::getDeferredContext(GRAPHICSTHREAD_REFLECTIONS));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_REFLECTIONS);
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderShadows(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
RenderScene(wiRenderer::getDeferredContext(GRAPHICSTHREAD_SCENE));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_SCENE);
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderSecondaryScene(rtMain, rtMain, wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC1));
|
||||
RenderLightShafts(rtMain, wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC1));
|
||||
RenderComposition1(rtMain, wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC1));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_MISC1);
|
||||
}));
|
||||
workerThreads.push_back(new wiTaskThread([&]
|
||||
{
|
||||
RenderBloom(wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC2));
|
||||
RenderComposition2(wiRenderer::getDeferredContext(GRAPHICSTHREAD_MISC2));
|
||||
wiRenderer::FinishCommandList(GRAPHICSTHREAD_MISC2);
|
||||
}));
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -38,6 +38,8 @@ Luna<ForwardRenderableComponent_BindLua>::FunctionType ForwardRenderableComponen
|
||||
|
||||
lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldFocus),
|
||||
lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldStrength),
|
||||
|
||||
lunamethod(Renderable3DComponent_BindLua, SetPreferredThreadingCount),
|
||||
{ NULL, NULL }
|
||||
};
|
||||
Luna<ForwardRenderableComponent_BindLua>::PropertyType ForwardRenderableComponent_BindLua::properties[] = {
|
||||
|
||||
@@ -137,7 +137,7 @@ void MainComponent::Compose()
|
||||
{
|
||||
wiImage::BatchBegin();
|
||||
wiImage::Draw(wiTextureHelper::getInstance()->getColorGradeDefault(), wiImageEffects(0, 0, 256, 16));
|
||||
wiImage::Draw(wiRenderer::GetColorGrading(), wiImageEffects(screenW-256, 0, 256, 16));
|
||||
wiImage::Draw(wiRenderer::GetColorGrading(), wiImageEffects(screenW-256.f, 0, 256, 16));
|
||||
}
|
||||
|
||||
wiBackLog::Draw();
|
||||
|
||||
@@ -39,6 +39,8 @@ Luna<Renderable3DComponent_BindLua>::FunctionType Renderable3DComponent_BindLua:
|
||||
|
||||
lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldFocus),
|
||||
lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldStrength),
|
||||
|
||||
lunamethod(Renderable3DComponent_BindLua, SetPreferredThreadingCount),
|
||||
{ NULL, NULL }
|
||||
};
|
||||
Luna<Renderable3DComponent_BindLua>::PropertyType Renderable3DComponent_BindLua::properties[] = {
|
||||
@@ -290,6 +292,21 @@ int Renderable3DComponent_BindLua::SetDepthOfFieldStrength(lua_State* L)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Renderable3DComponent_BindLua::SetPreferredThreadingCount(lua_State* L)
|
||||
{
|
||||
if (component == nullptr)
|
||||
{
|
||||
wiLua::SError(L, "SetPreferredThreadingCount(int value) component is null!");
|
||||
return 0;
|
||||
}
|
||||
if (wiLua::SGetArgCount(L) > 0)
|
||||
{
|
||||
((Renderable3DComponent*)component)->setPreferredThreadingCount((unsigned short)wiLua::SGetInt(L, 1));
|
||||
}
|
||||
else
|
||||
wiLua::SError(L, "SetPreferredThreadingCount(int value) not enough arguments!");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Renderable3DComponent_BindLua::Bind()
|
||||
{
|
||||
|
||||
@@ -34,6 +34,8 @@ public:
|
||||
int SetDepthOfFieldFocus(lua_State* L);
|
||||
int SetDepthOfFieldStrength(lua_State* L);
|
||||
|
||||
int SetPreferredThreadingCount(lua_State* L);
|
||||
|
||||
static void Bind();
|
||||
};
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
enum GRAPHICSTHREAD
|
||||
{
|
||||
GRAPHICSTHREAD_REFLECTIONS,
|
||||
GRAPHICSTHREAD_SHADOWS,
|
||||
GRAPHICSTHREAD_SCENE,
|
||||
GRAPHICSTHREAD_MISC1,
|
||||
GRAPHICSTHREAD_MISC2,
|
||||
|
||||
@@ -2879,16 +2879,16 @@ void wiRenderer::DrawForShadowMap(ID3D11DeviceContext* context)
|
||||
for (CulledObjectList::iterator viter = visibleInstances.begin(); viter != visibleInstances.end(); ++viter) {
|
||||
if ((*viter)->particleEmitter != Object::wiParticleEmitter::EMITTER_INVISIBLE) {
|
||||
if (mesh->softBody || (*viter)->armatureDeform)
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixIdentity(), (*viter)->transparency), k, GRAPHICSTHREAD_SHADOWS);
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixIdentity(), (*viter)->transparency), k, GRAPHICSTHREAD_SCENE);
|
||||
else
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixTranspose(XMLoadFloat4x4(&(*viter)->world)), (*viter)->transparency), k, GRAPHICSTHREAD_SHADOWS);
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixTranspose(XMLoadFloat4x4(&(*viter)->world)), (*viter)->transparency), k, GRAPHICSTHREAD_SCENE);
|
||||
++k;
|
||||
}
|
||||
}
|
||||
if (k < 1)
|
||||
continue;
|
||||
|
||||
mesh->UpdateRenderableInstances(visibleInstances.size(), GRAPHICSTHREAD_SHADOWS, context);
|
||||
mesh->UpdateRenderableInstances(visibleInstances.size(), GRAPHICSTHREAD_SCENE, context);
|
||||
|
||||
|
||||
BindVertexBuffer((mesh->sOutBuffer ? mesh->sOutBuffer : mesh->meshVertBuff), 0, sizeof(Vertex), context);
|
||||
@@ -2983,16 +2983,16 @@ void wiRenderer::DrawForShadowMap(ID3D11DeviceContext* context)
|
||||
for (CulledObjectList::iterator viter = visibleInstances.begin(); viter != visibleInstances.end(); ++viter) {
|
||||
if ((*viter)->particleEmitter != Object::wiParticleEmitter::EMITTER_INVISIBLE) {
|
||||
if (mesh->softBody || (*viter)->armatureDeform)
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixIdentity(), (*viter)->transparency), k, GRAPHICSTHREAD_SHADOWS);
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixIdentity(), (*viter)->transparency), k, GRAPHICSTHREAD_SCENE);
|
||||
else
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixTranspose(XMLoadFloat4x4(&(*viter)->world)), (*viter)->transparency), k, GRAPHICSTHREAD_SHADOWS);
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixTranspose(XMLoadFloat4x4(&(*viter)->world)), (*viter)->transparency), k, GRAPHICSTHREAD_SCENE);
|
||||
++k;
|
||||
}
|
||||
}
|
||||
if (k < 1)
|
||||
continue;
|
||||
|
||||
mesh->UpdateRenderableInstances(visibleInstances.size(), GRAPHICSTHREAD_SHADOWS, context);
|
||||
mesh->UpdateRenderableInstances(visibleInstances.size(), GRAPHICSTHREAD_SCENE, context);
|
||||
|
||||
|
||||
BindVertexBuffer((mesh->sOutBuffer ? mesh->sOutBuffer : mesh->meshVertBuff), 0, sizeof(Vertex), context);
|
||||
@@ -3088,16 +3088,16 @@ void wiRenderer::DrawForShadowMap(ID3D11DeviceContext* context)
|
||||
for (CulledObjectList::iterator viter = visibleInstances.begin(); viter != visibleInstances.end(); ++viter) {
|
||||
if ((*viter)->particleEmitter != Object::wiParticleEmitter::EMITTER_INVISIBLE) {
|
||||
if (mesh->softBody || (*viter)->armatureDeform)
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixIdentity(), (*viter)->transparency), k, GRAPHICSTHREAD_SHADOWS);
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixIdentity(), (*viter)->transparency), k, GRAPHICSTHREAD_SCENE);
|
||||
else
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixTranspose(XMLoadFloat4x4(&(*viter)->world)), (*viter)->transparency), k, GRAPHICSTHREAD_SHADOWS);
|
||||
mesh->AddRenderableInstance(Instance(XMMatrixTranspose(XMLoadFloat4x4(&(*viter)->world)), (*viter)->transparency), k, GRAPHICSTHREAD_SCENE);
|
||||
++k;
|
||||
}
|
||||
}
|
||||
if (k < 1)
|
||||
continue;
|
||||
|
||||
mesh->UpdateRenderableInstances(visibleInstances.size(), GRAPHICSTHREAD_SHADOWS, context);
|
||||
mesh->UpdateRenderableInstances(visibleInstances.size(), GRAPHICSTHREAD_SCENE, context);
|
||||
|
||||
|
||||
BindVertexBuffer((mesh->sOutBuffer ? mesh->sOutBuffer : mesh->meshVertBuff), 0, sizeof(Vertex), context);
|
||||
|
||||
@@ -76,8 +76,6 @@ _________________________________________________________
|
||||
- Decouple API from wiRenderer
|
||||
The renderer has become too large, unmanageable, hardly readable. Aside from that it
|
||||
is a good idea to decouple them for possible support of multiple apis in the future...
|
||||
- Multithreaded rendering bug after refactor (flashing geometry)(turned off for the time being)
|
||||
Probably some instancing info being written in multiple theads at once
|
||||
Other:
|
||||
- Cleanup
|
||||
No comment
|
||||
|
||||
Reference in New Issue
Block a user