Graphics: Fix MaterialPipeline::GetRenderPipeline
This commit is contained in:
parent
8027ae9abe
commit
ad88561245
|
|
@ -94,6 +94,7 @@ int main()
|
||||||
Nz::Material material(Nz::BasicMaterial::GetSettings());
|
Nz::Material material(Nz::BasicMaterial::GetSettings());
|
||||||
//material.SetShader(Nz::ShaderStageType::Fragment, fragmentShader);
|
//material.SetShader(Nz::ShaderStageType::Fragment, fragmentShader);
|
||||||
//material.SetShader(Nz::ShaderStageType::Vertex, vertexShader);
|
//material.SetShader(Nz::ShaderStageType::Vertex, vertexShader);
|
||||||
|
material.EnableDepthBuffer(true);
|
||||||
material.SetTexture(0, texture);
|
material.SetTexture(0, texture);
|
||||||
material.SetTextureSampler(0, textureSampler);
|
material.SetTextureSampler(0, textureSampler);
|
||||||
|
|
||||||
|
|
@ -109,33 +110,8 @@ int main()
|
||||||
Nz::AccessByOffset<Nz::Matrix4f&>(viewerDataBuffer.data(), viewerUboOffsets.viewMatrixOffset) = Nz::Matrix4f::Translate(Nz::Vector3f::Backward() * 1);
|
Nz::AccessByOffset<Nz::Matrix4f&>(viewerDataBuffer.data(), viewerUboOffsets.viewMatrixOffset) = Nz::Matrix4f::Translate(Nz::Vector3f::Backward() * 1);
|
||||||
Nz::AccessByOffset<Nz::Matrix4f&>(viewerDataBuffer.data(), viewerUboOffsets.projMatrixOffset) = Nz::Matrix4f::Perspective(70.f, float(windowSize.x) / windowSize.y, 0.1f, 1000.f);
|
Nz::AccessByOffset<Nz::Matrix4f&>(viewerDataBuffer.data(), viewerUboOffsets.projMatrixOffset) = Nz::Matrix4f::Perspective(70.f, float(windowSize.x) / windowSize.y, 0.1f, 1000.f);
|
||||||
|
|
||||||
Nz::RenderPipelineLayoutInfo pipelineLayoutInfo;
|
|
||||||
{
|
|
||||||
auto& uboBinding = pipelineLayoutInfo.bindings.emplace_back();
|
|
||||||
uboBinding.index = 0;
|
|
||||||
uboBinding.shaderStageFlags = Nz::ShaderStageType::Vertex;
|
|
||||||
uboBinding.type = Nz::ShaderBindingType::UniformBuffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
auto& uboBinding = pipelineLayoutInfo.bindings.emplace_back();
|
|
||||||
uboBinding.index = 1;
|
|
||||||
uboBinding.shaderStageFlags = Nz::ShaderStageType::Vertex;
|
|
||||||
uboBinding.type = Nz::ShaderBindingType::UniformBuffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
auto& textureBinding = pipelineLayoutInfo.bindings.emplace_back();
|
|
||||||
textureBinding.index = 2;
|
|
||||||
textureBinding.shaderStageFlags = Nz::ShaderStageType::Fragment;
|
|
||||||
textureBinding.type = Nz::ShaderBindingType::Texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
//std::shared_ptr<Nz::RenderPipelineLayout> renderPipelineLayout = device->InstantiateRenderPipelineLayout(std::move(pipelineLayoutInfo));
|
|
||||||
std::shared_ptr<Nz::RenderPipelineLayout> renderPipelineLayout = material.GetSettings()->GetRenderPipelineLayout();
|
std::shared_ptr<Nz::RenderPipelineLayout> renderPipelineLayout = material.GetSettings()->GetRenderPipelineLayout();
|
||||||
|
|
||||||
Nz::ShaderBindingPtr shaderBinding = renderPipelineLayout->AllocateShaderBinding();
|
|
||||||
|
|
||||||
std::shared_ptr<Nz::AbstractBuffer> instanceDataUbo = device->InstantiateBuffer(Nz::BufferType_Uniform);
|
std::shared_ptr<Nz::AbstractBuffer> instanceDataUbo = device->InstantiateBuffer(Nz::BufferType_Uniform);
|
||||||
if (!instanceDataUbo->Initialize(instanceDataBuffer.size(), Nz::BufferUsage_DeviceLocal | Nz::BufferUsage_Dynamic))
|
if (!instanceDataUbo->Initialize(instanceDataBuffer.size(), Nz::BufferUsage_DeviceLocal | Nz::BufferUsage_Dynamic))
|
||||||
{
|
{
|
||||||
|
|
@ -152,15 +128,16 @@ int main()
|
||||||
return __LINE__;
|
return __LINE__;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Nz::ShaderBindingPtr shaderBinding = renderPipelineLayout->AllocateShaderBinding();
|
||||||
shaderBinding->Update({
|
shaderBinding->Update({
|
||||||
{
|
{
|
||||||
5,
|
material.GetSettings()->GetPredefinedBindingIndex(Nz::PredefinedShaderBinding::UboViewerData),
|
||||||
Nz::ShaderBinding::UniformBufferBinding {
|
Nz::ShaderBinding::UniformBufferBinding {
|
||||||
viewerDataUbo.get(), 0, viewerDataBuffer.size()
|
viewerDataUbo.get(), 0, viewerDataBuffer.size()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
4,
|
material.GetSettings()->GetPredefinedBindingIndex(Nz::PredefinedShaderBinding::UboInstanceData),
|
||||||
Nz::ShaderBinding::UniformBufferBinding {
|
Nz::ShaderBinding::UniformBufferBinding {
|
||||||
instanceDataUbo.get(), 0, instanceDataBuffer.size()
|
instanceDataUbo.get(), 0, instanceDataBuffer.size()
|
||||||
}
|
}
|
||||||
|
|
@ -173,20 +150,14 @@ int main()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Nz::RenderPipelineInfo pipelineInfo;
|
std::vector<Nz::RenderPipelineInfo::VertexBufferData> vertexBuffers = {
|
||||||
pipelineInfo.pipelineLayout = renderPipelineLayout;
|
{
|
||||||
|
0,
|
||||||
|
drfreakVB->GetVertexDeclaration()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
pipelineInfo.depthBuffer = true;
|
std::shared_ptr<Nz::RenderPipeline> pipeline = material.GetPipeline()->GetRenderPipeline(vertexBuffers);
|
||||||
pipelineInfo.shaderStages.emplace_back(material.GetShader(Nz::ShaderStageType::Fragment));
|
|
||||||
pipelineInfo.shaderStages.emplace_back(material.GetShader(Nz::ShaderStageType::Vertex));
|
|
||||||
|
|
||||||
auto& vertexBuffer = pipelineInfo.vertexBuffers.emplace_back();
|
|
||||||
vertexBuffer.binding = 0;
|
|
||||||
vertexBuffer.declaration = drfreakVB->GetVertexDeclaration();
|
|
||||||
|
|
||||||
//std::shared_ptr<Nz::RenderPipeline> pipeline = material.GetPipeline()->GetRenderPipeline(pipelineInfo.vertexBuffers);
|
|
||||||
|
|
||||||
std::shared_ptr<Nz::RenderPipeline> pipeline = device->InstantiateRenderPipeline(pipelineInfo);
|
|
||||||
|
|
||||||
Nz::RenderDevice* renderDevice = window.GetRenderDevice().get();
|
Nz::RenderDevice* renderDevice = window.GetRenderDevice().get();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,8 @@ namespace Nz
|
||||||
renderPipelineInfo.shaderStages.push_back(shaderStage);
|
renderPipelineInfo.shaderStages.push_back(shaderStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderPipelineInfo.vertexBuffers = vertexBuffers;
|
||||||
|
|
||||||
return m_renderPipelines.emplace_back(Graphics::Instance()->GetRenderDevice().InstantiateRenderPipeline(std::move(renderPipelineInfo)));
|
return m_renderPipelines.emplace_back(Graphics::Instance()->GetRenderDevice().InstantiateRenderPipeline(std::move(renderPipelineInfo)));
|
||||||
}
|
}
|
||||||
/*!
|
/*!
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue