rgba textures and binding the decriptor sets
This commit is contained in:
@@ -4,11 +4,11 @@
|
||||
|
||||
VkShaderStageFlagBits vkGryphnShaderModuleStage(gnShaderModuleStage stage) {
|
||||
VkShaderStageFlagBits outStage = 0;
|
||||
switch(stage) {
|
||||
case GN_VERTEX_SHADER_MODULE: outStage |= VK_SHADER_STAGE_VERTEX_BIT; break;
|
||||
case GN_FRAGMENT_SHADER_MODULE: outStage |= VK_SHADER_STAGE_FRAGMENT_BIT; break;
|
||||
case GN_ALL_SHADER_MODULE: return VK_SHADER_STAGE_ALL_GRAPHICS;
|
||||
}
|
||||
|
||||
if ((stage & GN_VERTEX_SHADER_MODULE) == GN_VERTEX_SHADER_MODULE) outStage |= VK_SHADER_STAGE_VERTEX_BIT;
|
||||
if ((stage & GN_FRAGMENT_SHADER_MODULE) == GN_FRAGMENT_SHADER_MODULE) outStage |= VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||
if ((stage & GN_ALL_SHADER_MODULE) == GN_ALL_SHADER_MODULE) return VK_SHADER_STAGE_ALL_GRAPHICS;
|
||||
|
||||
return outStage;
|
||||
}
|
||||
|
||||
|
@@ -6,7 +6,7 @@
|
||||
|
||||
VkImageType vkGryphnTextureType(gnTextureType type) {
|
||||
switch(type) {
|
||||
case GN_TEXTURE_2D: return VK_IMAGE_TYPE_2D;
|
||||
case GN_TEXTURE_2D: return VK_IMAGE_TYPE_2D;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,6 +114,7 @@ gnReturnCode gnCreateTextureFn(gnTexture texture, gnDevice device, const gnTextu
|
||||
|
||||
size_t imageSize = info.width * info.height;
|
||||
if (info.format == GN_FORMAT_BGRA8_SRGB) { imageSize *= 4; }
|
||||
if (info.format == GN_FORMAT_RGBA8_SRGB) { imageSize *= 4; }
|
||||
|
||||
gnReturnCode staginBufferCreateCode = VkCreateBuffer(
|
||||
&texture->texture->buffer, imageSize, device,
|
||||
|
@@ -2,6 +2,7 @@
|
||||
#include "buffers/vulkan_buffer.h"
|
||||
#include "output_device/vulkan_output_devices.h"
|
||||
#include "core/uniforms/gryphn_uniform_pool.h"
|
||||
#include "textures/vulkan_texture.h"
|
||||
|
||||
void gnUpdateBufferUniformFn(gnUniform uniform, gnBufferUniformInfo* info) {
|
||||
VkDescriptorBufferInfo bufferInfo = {
|
||||
@@ -22,3 +23,23 @@ void gnUpdateBufferUniformFn(gnUniform uniform, gnBufferUniformInfo* info) {
|
||||
|
||||
vkUpdateDescriptorSets(uniform->pool->device->outputDevice->device, 1, &write, 0, NULL);
|
||||
}
|
||||
|
||||
void gnUpdateImageUniformFn(gnUniform uniform, gnImageUniformInfo* info) {
|
||||
VkDescriptorImageInfo imageInfo = {
|
||||
.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
||||
.imageView = info->texture->texture->image.imageView,
|
||||
.sampler = info->texture->texture->sampler
|
||||
};
|
||||
|
||||
VkWriteDescriptorSet write = {
|
||||
.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
|
||||
.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||
.descriptorCount = 1,
|
||||
.pImageInfo = &imageInfo,
|
||||
.dstSet = uniform->uniform->set,
|
||||
.dstBinding = info->binding,
|
||||
.dstArrayElement = 0
|
||||
};
|
||||
|
||||
vkUpdateDescriptorSets(uniform->pool->device->outputDevice->device, 1, &write, 0, NULL);
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@
|
||||
VkDescriptorType vkGryphnUniformType(gnUniformType type) {
|
||||
switch(type) {
|
||||
case GN_UNIFORM_BUFFER_DESCRIPTOR: return VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
|
||||
case GN_IMAGE_DESCRIPTOR: return VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||
case GN_UNIFORM_TYPE_MAX: return VK_DESCRIPTOR_TYPE_MAX_ENUM;
|
||||
}
|
||||
}
|
||||
|
@@ -110,7 +110,8 @@ gnSurfaceDetails gnGetSurfaceDetailsFn(
|
||||
|
||||
VkFormat vkGryphnFormatToVulkanFormat(gnImageFormat format) {
|
||||
switch (format) {
|
||||
case GN_FORMAT_BGRA8_SRGB: { return VK_FORMAT_B8G8R8A8_SRGB; }
|
||||
case GN_FORMAT_BGRA8_SRGB: return VK_FORMAT_B8G8R8A8_SRGB;
|
||||
case GN_FORMAT_RGBA8_SRGB: return VK_FORMAT_R8G8B8A8_SRGB;
|
||||
default: return VK_FORMAT_UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user