mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-06-23 15:03:43 +00:00
Update glTFViewer for render passes and depth stencil state (#39)
This commit is contained in:
parent
468dafde9d
commit
39c1bce62d
@ -71,6 +71,8 @@ struct u_transform_block {
|
|||||||
|
|
||||||
nxt::Device device;
|
nxt::Device device;
|
||||||
nxt::Queue queue;
|
nxt::Queue queue;
|
||||||
|
nxt::RenderPass renderpass;
|
||||||
|
nxt::Framebuffer framebuffer;
|
||||||
|
|
||||||
nxt::Buffer defaultBuffer;
|
nxt::Buffer defaultBuffer;
|
||||||
std::map<std::string, nxt::Buffer> buffers;
|
std::map<std::string, nxt::Buffer> buffers;
|
||||||
@ -252,14 +254,21 @@ namespace {
|
|||||||
.SetBindingsType(nxt::ShaderStageBit::Fragment, nxt::BindingType::SampledTexture, 2, 1)
|
.SetBindingsType(nxt::ShaderStageBit::Fragment, nxt::BindingType::SampledTexture, 2, 1)
|
||||||
.GetResult();
|
.GetResult();
|
||||||
|
|
||||||
|
auto depthStencilState = device.CreateDepthStencilStateBuilder()
|
||||||
|
.SetDepthCompareFunction(nxt::CompareFunction::Less)
|
||||||
|
.SetDepthWriteEnabled(true)
|
||||||
|
.GetResult();
|
||||||
|
|
||||||
auto pipelineLayout = device.CreatePipelineLayoutBuilder()
|
auto pipelineLayout = device.CreatePipelineLayoutBuilder()
|
||||||
.SetBindGroupLayout(0, bindGroupLayout)
|
.SetBindGroupLayout(0, bindGroupLayout)
|
||||||
.GetResult();
|
.GetResult();
|
||||||
auto pipeline = device.CreatePipelineBuilder()
|
auto pipeline = device.CreatePipelineBuilder()
|
||||||
|
.SetSubpass(renderpass, 0)
|
||||||
.SetLayout(pipelineLayout)
|
.SetLayout(pipelineLayout)
|
||||||
.SetStage(nxt::ShaderStage::Vertex, oVSModule, "main")
|
.SetStage(nxt::ShaderStage::Vertex, oVSModule, "main")
|
||||||
.SetStage(nxt::ShaderStage::Fragment, oFSModule, "main")
|
.SetStage(nxt::ShaderStage::Fragment, oFSModule, "main")
|
||||||
.SetInputState(inputState)
|
.SetInputState(inputState)
|
||||||
|
.SetDepthStencilState(depthStencilState)
|
||||||
.GetResult();
|
.GetResult();
|
||||||
|
|
||||||
auto uniformBuffer = device.CreateBufferBuilder()
|
auto uniformBuffer = device.CreateBufferBuilder()
|
||||||
@ -458,6 +467,18 @@ namespace {
|
|||||||
device = CreateCppNXTDevice();
|
device = CreateCppNXTDevice();
|
||||||
|
|
||||||
queue = device.CreateQueueBuilder().GetResult();
|
queue = device.CreateQueueBuilder().GetResult();
|
||||||
|
renderpass = device.CreateRenderPassBuilder()
|
||||||
|
.SetAttachmentCount(1)
|
||||||
|
.AttachmentSetFormat(0, nxt::TextureFormat::R8G8B8A8Unorm)
|
||||||
|
.SetSubpassCount(1)
|
||||||
|
.SubpassSetColorAttachment(0, 0, 0)
|
||||||
|
.GetResult();
|
||||||
|
framebuffer = device.CreateFramebufferBuilder()
|
||||||
|
.SetRenderPass(renderpass)
|
||||||
|
// attachment 0 -> back buffer
|
||||||
|
// (implicit) // TODO(kainino@chromium.org): use the texture provided by WSI
|
||||||
|
.SetDimensions(640, 480)
|
||||||
|
.GetResult();
|
||||||
|
|
||||||
initBuffers();
|
initBuffers();
|
||||||
initSamplers();
|
initSamplers();
|
||||||
@ -496,6 +517,7 @@ namespace {
|
|||||||
material.uniformBuffer.SetSubData(0,
|
material.uniformBuffer.SetSubData(0,
|
||||||
sizeof(u_transform_block) / sizeof(uint32_t),
|
sizeof(u_transform_block) / sizeof(uint32_t),
|
||||||
reinterpret_cast<const uint32_t*>(&transforms));
|
reinterpret_cast<const uint32_t*>(&transforms));
|
||||||
|
cmd.BeginRenderPass(renderpass, framebuffer);
|
||||||
cmd.SetPipeline(material.pipeline);
|
cmd.SetPipeline(material.pipeline);
|
||||||
cmd.TransitionBufferUsage(material.uniformBuffer, nxt::BufferUsageBit::Uniform);
|
cmd.TransitionBufferUsage(material.uniformBuffer, nxt::BufferUsageBit::Uniform);
|
||||||
cmd.SetBindGroup(0, material.bindGroup0);
|
cmd.SetBindGroup(0, material.bindGroup0);
|
||||||
@ -539,6 +561,7 @@ namespace {
|
|||||||
// DrawArrays
|
// DrawArrays
|
||||||
cmd.DrawArrays(vertexCount, 1, 0, 0);
|
cmd.DrawArrays(vertexCount, 1, 0, 0);
|
||||||
}
|
}
|
||||||
|
cmd.EndRenderPass();
|
||||||
}
|
}
|
||||||
auto commands = cmd.GetResult();
|
auto commands = cmd.GetResult();
|
||||||
queue.Submit(1, &commands);
|
queue.Submit(1, &commands);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user