Skip to content
Snippets Groups Projects
Commit 8027e6a4 authored by Alexander Gauggel's avatar Alexander Gauggel
Browse files

[#82] Load normal and specular textures

parent 848c1d2a
No related branches found
No related tags found
1 merge request!70Resolve "Voxel cone tracing"
layout(set=1, binding=0) uniform texture2D albedoTexture;
layout(set=1, binding=1) uniform sampler textureSampler;
\ No newline at end of file
layout(set=1, binding=1) uniform sampler textureSampler;
layout(set=1, binding=2) uniform texture2D normalTexture;
layout(set=1, binding=3) uniform texture2D specularTexture;
\ No newline at end of file
......@@ -186,24 +186,55 @@ int main(int argc, const char** argv) {
std::vector<vkcv::Image> sceneImages;
for (const auto& material : scene.materials) {
int baseColorIndex = material.baseColor;
if (baseColorIndex < 0) {
vkcv_log(vkcv::LogLevel::WARNING, "Material lacks base color");
baseColorIndex = 0;
int albedoIndex = material.baseColor;
int normalIndex = material.normal;
int specularIndex = material.metalRough;
if (albedoIndex < 0) {
vkcv_log(vkcv::LogLevel::WARNING, "Material lacks albedo");
albedoIndex = 0;
}
if (normalIndex < 0) {
vkcv_log(vkcv::LogLevel::WARNING, "Material lacks normal");
normalIndex = 0;
}
if (specularIndex < 0) {
vkcv_log(vkcv::LogLevel::WARNING, "Material lacks specular");
specularIndex = 0;
}
materialDescriptorSets.push_back(core.createDescriptorSet(forwardProgram.getReflectedDescriptors()[1]));
vkcv::asset::Texture& sceneTexture = scene.textures[baseColorIndex];
vkcv::asset::Texture& albedoTexture = scene.textures[albedoIndex];
vkcv::asset::Texture& normalTexture = scene.textures[normalIndex];
vkcv::asset::Texture& specularTexture = scene.textures[specularIndex];
// albedo texture
sceneImages.push_back(core.createImage(vk::Format::eR8G8B8A8Srgb, albedoTexture.w, albedoTexture.h, 1, true));
sceneImages.back().fill(albedoTexture.data.data());
sceneImages.back().generateMipChainImmediate();
sceneImages.back().switchLayout(vk::ImageLayout::eShaderReadOnlyOptimal);
const vkcv::ImageHandle albedoHandle = sceneImages.back().getHandle();
// normal texture
sceneImages.push_back(core.createImage(vk::Format::eR8G8B8A8Srgb, normalTexture.w, normalTexture.h, 1, true));
sceneImages.back().fill(normalTexture.data.data());
sceneImages.back().generateMipChainImmediate();
sceneImages.back().switchLayout(vk::ImageLayout::eShaderReadOnlyOptimal);
const vkcv::ImageHandle normalHandle = sceneImages.back().getHandle();
sceneImages.push_back(core.createImage(vk::Format::eR8G8B8A8Srgb, sceneTexture.w, sceneTexture.h, 1, true));
sceneImages.back().fill(sceneTexture.data.data());
// specular texture
sceneImages.push_back(core.createImage(vk::Format::eR8G8B8A8Srgb, specularTexture.w, specularTexture.h, 1, true));
sceneImages.back().fill(specularTexture.data.data());
sceneImages.back().generateMipChainImmediate();
sceneImages.back().switchLayout(vk::ImageLayout::eShaderReadOnlyOptimal);
const vkcv::ImageHandle specularHandle = sceneImages.back().getHandle();
vkcv::DescriptorWrites setWrites;
setWrites.sampledImageWrites = {
vkcv::SampledImageDescriptorWrite(0, sceneImages.back().getHandle())
vkcv::SampledImageDescriptorWrite(0, albedoHandle),
vkcv::SampledImageDescriptorWrite(2, normalHandle),
vkcv::SampledImageDescriptorWrite(3, specularHandle)
};
setWrites.samplerWrites = {
vkcv::SamplerDescriptorWrite(1, colorSampler),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment