More vulkan fixes
This commit is contained in:
parent
97f67560df
commit
0c3c879497
6 changed files with 21 additions and 9 deletions
|
@ -32,7 +32,7 @@ DoFPass::DoFPass(GFX* gfx, Renderer* renderer) : renderer(renderer) {
|
|||
create_info.shaders.fragment_path = "dof.frag";
|
||||
|
||||
create_info.shader_input.bindings = {
|
||||
{0, GFXBindingType::SampledImage},
|
||||
{0, GFXBindingType::StorageImage},
|
||||
{1, GFXBindingType::Texture},
|
||||
{3, GFXBindingType::Texture},
|
||||
{2, GFXBindingType::PushConstant}
|
||||
|
|
|
@ -728,11 +728,11 @@ void Renderer::create_mesh_pipeline(Material& material) {
|
|||
pipelineInfo.shader_input.bindings = {
|
||||
{1, GFXBindingType::StorageBuffer},
|
||||
{0, GFXBindingType::PushConstant},
|
||||
{2, GFXBindingType::SampledImage},
|
||||
{2, GFXBindingType::StorageImage},
|
||||
{3, GFXBindingType::SampledImage},
|
||||
{4, GFXBindingType::Sampler},
|
||||
{5, GFXBindingType::Sampler},
|
||||
{6, GFXBindingType::SampledImage},
|
||||
{6, GFXBindingType::StorageImage},
|
||||
{7, GFXBindingType::Texture},
|
||||
{8, GFXBindingType::Texture},
|
||||
{9, GFXBindingType::Texture}
|
||||
|
|
|
@ -3,7 +3,7 @@ layout (location = 0) in vec2 inUV;
|
|||
layout (location = 0) out vec4 outColor;
|
||||
|
||||
layout(push_constant, binding = 1) uniform readonly PushConstant{
|
||||
mat4 view, mvp;
|
||||
mat4 mvp;
|
||||
vec4 color;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
layout (location = 0) out vec2 outUV;
|
||||
|
||||
layout(push_constant, binding = 1) uniform readonly PushConstant{
|
||||
mat4 view, mvp;
|
||||
mat4 mvp;
|
||||
vec4 color;
|
||||
};
|
||||
|
||||
layout(std430, binding = 3) buffer readonly SceneInformation {
|
||||
mat4 view;
|
||||
};
|
||||
|
||||
void main() {
|
||||
vec2 p = vec2((gl_VertexIndex << 1) & 2, gl_VertexIndex & 2);
|
||||
outUV = vec2(p.x, 1.0 - p.y);
|
||||
|
|
|
@ -89,4 +89,6 @@ private:
|
|||
GFXPipeline* sobelPipeline = nullptr;
|
||||
GFXFramebuffer* sobelFramebuffer = nullptr;
|
||||
GFXRenderPass* sobelRenderPass = nullptr;
|
||||
|
||||
GFXBuffer* scene_info_buffer = nullptr;
|
||||
};
|
||||
|
|
|
@ -12,11 +12,13 @@
|
|||
#include "renderer.hpp"
|
||||
|
||||
struct BillPushConstant {
|
||||
Matrix4x4 view, mvp;
|
||||
Matrix4x4 mvp;
|
||||
Vector4 color;
|
||||
};
|
||||
|
||||
void DebugPass::initialize() {
|
||||
scene_info_buffer = engine->get_gfx()->create_buffer(nullptr, sizeof(Matrix4x4), true, GFXBufferUsage::Storage);
|
||||
|
||||
{
|
||||
GFXGraphicsPipelineCreateInfo createInfo;
|
||||
createInfo.shaders.vertex_path = "debug.vert";
|
||||
|
@ -141,7 +143,9 @@ void DebugPass::initialize() {
|
|||
pipelineInfo.shaders.fragment_path = "billboard.frag";
|
||||
|
||||
pipelineInfo.shader_input.bindings = {
|
||||
{1, GFXBindingType::PushConstant}
|
||||
{1, GFXBindingType::PushConstant},
|
||||
{2, GFXBindingType::Texture},
|
||||
{3, GFXBindingType::StorageBuffer}
|
||||
};
|
||||
|
||||
pipelineInfo.shader_input.push_constants = {
|
||||
|
@ -340,16 +344,18 @@ void DebugPass::render_scene(Scene& scene, GFXCommandBuffer* commandBuffer) {
|
|||
|
||||
commandBuffer->set_graphics_pipeline(billboard_pipeline);
|
||||
|
||||
engine->get_gfx()->copy_buffer(scene_info_buffer, &camera.view, 0, sizeof(Matrix4x4));
|
||||
|
||||
// draw primitives
|
||||
for(auto& bill : billboards) {
|
||||
Matrix4x4 m = transform::translate(Matrix4x4(), bill.position);
|
||||
|
||||
BillPushConstant pc;
|
||||
pc.view = camera.view;
|
||||
pc.mvp = vp * m;
|
||||
pc.color = bill.color;
|
||||
|
||||
commandBuffer->bind_texture(bill.texture, 2);
|
||||
commandBuffer->bind_shader_buffer(scene_info_buffer, 0, 3, sizeof(Matrix4x4));
|
||||
|
||||
commandBuffer->set_push_constant(&pc, sizeof(BillPushConstant));
|
||||
commandBuffer->draw_indexed(4, 0, 0, 0);
|
||||
|
|
Reference in a new issue