Skip to content
Snippets Groups Projects
Commit adebb749 authored by Lars Hoerttrich's avatar Lars Hoerttrich
Browse files

[#92] Switched from Rendering to Ambient Occlusion. Included Teapot as Model in main.cpp.

parent a6799090
No related branches found
No related tags found
1 merge request!75Resolve "RTX-Module"
Pipeline #27332 passed
......@@ -140,18 +140,6 @@ namespace vkcv::rtx {
if (!rayMissShaderModule) {
vkcv_log(LogLevel::ERROR, "The Ray Miss Shader Module could not be created!");
}
/*
std::vector<char> rayMissShadowShaderCode = rtxShader.getShader(ShaderStage::RAY_MISS).shaderCode;
vk::ShaderModuleCreateInfo rayMissShadowShaderModuleInfo(
vk::ShaderModuleCreateFlags(), // vk::ShaderModuleCreateFlags flags_,
rayMissShadowShaderCode.size(), //size_t codeSize
(const uint32_t*)rayMissShadowShaderCode.data() // const uint32_t* pCode
);
vk::ShaderModule rayMissShadowShaderModule = m_core->getContext().getDevice().createShaderModule(rayMissShadowShaderModuleInfo);
if (!rayMissShadowShaderModule) {
vkcv_log(LogLevel::ERROR, "The Ray Miss Shadow Shader Module could not be created!");
}*/
std::vector<char> rayClosestHitShaderCode = rtxShader.getShader(ShaderStage::RAY_CLOSEST_HIT).shaderCode;
vk::ShaderModuleCreateInfo rayClosestHitShaderModuleInfo(
......@@ -181,15 +169,7 @@ namespace vkcv::rtx {
rayMissShaderModule, // vk::ShaderModule module_ = {},
"main" // const char* pName_ = {},
);
/*
// ray shadow miss
vk::PipelineShaderStageCreateInfo rayMissShadowShaderStageInfo(
vk::PipelineShaderStageCreateFlags(), // vk::PipelineShaderStageCreateFlags flags_ = {}
vk::ShaderStageFlagBits::eMissKHR, // vk::ShaderStageFlagBits stage_ = vk::ShaderStageFlagBits::eVertex,
rayMissShadowShaderModule, // vk::ShaderModule module_ = {},
"main" // const char* pName_ = {},
);*/
// ray clostest hit
vk::PipelineShaderStageCreateInfo rayClosestHitShaderStageInfo(
vk::PipelineShaderStageCreateFlags(), // vk::PipelineShaderStageCreateFlags flags_ = {}
......@@ -222,16 +202,7 @@ namespace vkcv::rtx {
VK_SHADER_UNUSED_KHR, // uint32_t anyHitShader_ = {}
VK_SHADER_UNUSED_KHR, // uint32_t intersectionShader_ = {}
nullptr // const void* pShaderGroupCaptureReplayHandle_ = {}
);/*
// Ray Miss
shaderGroups[2] = vk::RayTracingShaderGroupCreateInfoKHR(
vk::RayTracingShaderGroupTypeKHR::eGeneral, // vk::RayTracingShaderGroupTypeKHR type_ = vk::RayTracingShaderGroupTypeKHR::eGeneral
2, // uint32_t generalShader_ = {}
VK_SHADER_UNUSED_KHR, // uint32_t closestHitShader_ = {}
VK_SHADER_UNUSED_KHR, // uint32_t anyHitShader_ = {}
VK_SHADER_UNUSED_KHR, // uint32_t intersectionShader_ = {}
nullptr // const void* pShaderGroupCaptureReplayHandle_ = {}
);*/
);
// Ray Closest Hit
shaderGroups[2] = vk::RayTracingShaderGroupCreateInfoKHR(
vk::RayTracingShaderGroupTypeKHR::eTrianglesHitGroup, // vk::RayTracingShaderGroupTypeKHR type_ = vk::RayTracingShaderGroupTypeKHR::eGeneral
......@@ -302,7 +273,6 @@ namespace vkcv::rtx {
m_core->getContext().getDevice().destroy(rayGenShaderModule);
m_core->getContext().getDevice().destroy(rayMissShaderModule);
//m_core->getContext().getDevice().destroy(rayMissShadowShaderModule);
m_core->getContext().getDevice().destroy(rayClosestHitShaderModule);
// TODO: add possibility of more than one shader per stage
......
......@@ -81,6 +81,7 @@ vec3 alignHemisphereWithCoordinateSystem(vec3 hemisphere, vec3 up) {
}
void main() {
if (payload.rayActive == 0) {
return;
}
......@@ -123,6 +124,7 @@ void main() {
vec3 lightVertexB = vec3(rtxVertexBuffer.vertices[3 * lightIndices.y + 0], rtxVertexBuffer.vertices[3 * lightIndices.y + 1], rtxVertexBuffer.vertices[3 * lightIndices.y + 2]);
vec3 lightVertexC = vec3(rtxVertexBuffer.vertices[3 * lightIndices.z + 0], rtxVertexBuffer.vertices[3 * lightIndices.z + 1], rtxVertexBuffer.vertices[3 * lightIndices.z + 2]);
*/
vec2 uv = vec2(random(gl_LaunchIDEXT.xy, camera.frameCount), random(gl_LaunchIDEXT.xy, camera.frameCount + 1));
if (uv.x + uv.y > 1.0f) {
uv.x = 1.0f - uv.x;
......@@ -178,6 +180,6 @@ void main() {
payload.previousNormal = geometricNormal;
payload.rayDepth += 1;
//payload.directColor=vec3(1,0,0);
}
......@@ -58,6 +58,7 @@ void main(){
color += previousColor;
color /= (camera.frameCount + 1);
}
color=vec4(0.0001*camera.frameCount,0,0,1);//DEBUG
//color=vec4(0.0001*camera.frameCount,0,0,1);//DEBUG
//color=vec4(1,0,0,1);//DEBUG
imageStore(outImg, ivec2(gl_LaunchIDEXT.xy), color);
}
#version 460
#extension GL_EXT_ray_tracing : require
layout(location = 0) rayPayloadInEXT Payload {
vec3 rayOrigin;
vec3 rayDirection;
vec3 previousNormal;
vec3 directColor;
vec3 indirectColor;
int rayDepth;
int rayActive;
} payload;
layout(location = 1) rayPayloadInEXT bool isShadow;
void main() {
//payload.directColor = vec3(0,0,1); //debug
isShadow = false;
}
\ No newline at end of file
Source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment