Skip to content

Commit

Permalink
use assimp plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
engineer1109 committed Jun 27, 2021
1 parent 9fe183f commit c97a2d3
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 1 deletion.
14 changes: 14 additions & 0 deletions examples/02_AdvancedExamples/11_AssimpModel/AssimpModelSample.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

#include "VulkanFrameBuffer.h"
#include "ShadowCamera.h"
#include "ReflectParaBuffer.h"

BEGIN_NAMESPACE(VulkanEngine)

Expand All @@ -34,6 +35,7 @@ void AssimpModelSample::prepareMyObjects() {
createPlane();
createShadowFrameBuffer();
createDebugQuad();
createReflectParaBuffer();

setDescriptorSet();
createPipelines();
Expand Down Expand Up @@ -82,6 +84,10 @@ void AssimpModelSample::setDescriptorSet() {
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
0);
m_vulkanDescriptorSet->addBinding(7, &(m_reflectParaBuffer->m_uniformBuffer.descriptor),
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
0);
m_vulkanDescriptorSet->GenPipelineLayout(&m_pipelineLayout);
}

Expand Down Expand Up @@ -189,6 +195,11 @@ void AssimpModelSample::createDebugQuad() {
m_debugShader->prepare();
}

void AssimpModelSample::createReflectParaBuffer() {
REGISTER_OBJECT<ReflectParaBuffer>(m_reflectParaBuffer);
m_reflectParaBuffer->prepare();
}

void AssimpModelSample::buildCommandBuffersBeforeMainRenderPass(VkCommandBuffer &cmd) {
VkClearValue clearValues[2];
clearValues[0].depthStencil = { 1.0f, 0 };
Expand Down Expand Up @@ -244,6 +255,9 @@ void AssimpModelSample::OnUpdateUIOverlay(vks::UIOverlay *overlay) {
if(m_UIOverlay.button("seeDebugQuad")){
seeDebugQuad();
}
if(m_UIOverlay.sliderFloat("reflect", &m_reflectParaBuffer->m_para.para[0], 0.f, 1.f)){
m_reflectParaBuffer->update();
}
#endif
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ class ShadowCamera;

class AssimpObject;

class ReflectParaBuffer;

class AssimpModelSample : public ThirdPersonEngine {
public:
AssimpModelSample() = default;
Expand Down Expand Up @@ -55,6 +57,8 @@ class AssimpModelSample : public ThirdPersonEngine {

void createDebugQuad();

void createReflectParaBuffer();

void buildCommandBuffersBeforeMainRenderPass(VkCommandBuffer &cmd) override;

void seeDebugQuad();
Expand Down Expand Up @@ -85,6 +89,8 @@ class AssimpModelSample : public ThirdPersonEngine {
VulkanPlane *m_dubugPlane = nullptr;
VulkanVertFragShader* m_debugShader = nullptr;

ReflectParaBuffer* m_reflectParaBuffer = nullptr;

bool m_seeDebug = false;
};

Expand Down
2 changes: 1 addition & 1 deletion examples/02_AdvancedExamples/11_AssimpModel/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ SET(LEARN_VULKAN_PROJECT 11_AssimpModel)
FILE(GLOB_RECURSE SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/* ${CMAKE_CURRENT_SOURCE_DIR}/myobjects/*)

add_executable(${LEARN_VULKAN_PROJECT} ${SRC_FILES})
TARGET_LINK_LIBRARIES(${LEARN_VULKAN_PROJECT} VulkanEngine ${Vulkan_LIBRARIES} assimp)
TARGET_LINK_LIBRARIES(${LEARN_VULKAN_PROJECT} VulkanEngine_assimp_plugin VulkanEngine ${Vulkan_LIBRARIES})

INSTALL(TARGETS ${LEARN_VULKAN_PROJECT} DESTINATION "${PROJECT_SOURCE_DIR}/bin")
31 changes: 31 additions & 0 deletions examples/02_AdvancedExamples/11_AssimpModel/ReflectParaBuffer.cxx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
//
// Created by wjl on 21-4-10.
//

#include "ReflectParaBuffer.h"

BEGIN_NAMESPACE(VulkanEngine)

void ReflectParaBuffer::reflect() {
if(getReflect() <= 0.f){
setReflect(1.f);
}
else{
setReflect(0.f);
}
}

void ReflectParaBuffer::prepareUniformBuffers() {
VK_CHECK_RESULT(m_context->vulkanDevice->createBuffer(
VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
&m_uniformBuffer, sizeof(m_para), &m_para));
VK_CHECK_RESULT(m_uniformBuffer.map());
updateUniformBuffers();
}

void ReflectParaBuffer::updateUniformBuffers() {
memcpy(m_uniformBuffer.mapped, &m_para, sizeof(m_para));
}

END_NAMESPACE(VulkanEngine)
34 changes: 34 additions & 0 deletions examples/02_AdvancedExamples/11_AssimpModel/ReflectParaBuffer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//
// Created by wjl on 21-4-10.
//

#ifndef LEARNVULKAN_REFLECTPARABUFFER_H
#define LEARNVULKAN_REFLECTPARABUFFER_H

#include "VulkanBuffer.h"

BEGIN_NAMESPACE(VulkanEngine)

class ReflectParaBuffer : public VulkanBuffer {
public:
struct ReflectPara{
glm::vec4 para;
} m_para;

public:
ReflectParaBuffer() = default;
~ReflectParaBuffer() = default;

void setReflect(float value) { m_para.para[0] = value; }

float getReflect() { return m_para.para[0];}

void reflect();

virtual void prepareUniformBuffers() override;
virtual void updateUniformBuffers() override ;
};

END_NAMESPACE(VulkanEngine)

#endif //LEARNVULKAN_REFLECTPARABUFFER_H

0 comments on commit c97a2d3

Please sign in to comment.