//#version 450 // //layout(local_size_x = 16, local_size_y = 16) in; //layout(set = 4, binding = 0, rgba8) uniform image2D targetImage; // // //void main() //{ // ivec2 imageSize = imageSize (targetImage); // // if (gl_GlobalInvocationID.x >= imageSize.x && gl_GlobalInvocationID.y >= imageSize.y) // return; // // // load the image // vec4 color = imageLoad (targetImage, ivec2 (gl_GlobalInvocationID)); // // // get the average // float average = 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b; // // // store result into result image // imageStore(targetImage, ivec2(gl_GlobalInvocationID), vec4(average, average, average, 1.0f)); // //} // // // // /* Start Header *****************************************************************/ /*! \file (e.g. kirsch.comp) \author William Zheng, william.zheng, 60001906. Brandon Mak, brandon.hao 390003920. \par william.zheng\@digipen.edu. brandon.hao\@digipen.edu. \date Sept 20, 2022 \brief Copyright (C) 20xx DigiPen Institute of Technology. Reproduction or disclosure of this file or its contents without the prior written consent of DigiPen Institute of Technology is prohibited. */ /* End Header *******************************************************************/ #version 450 layout(local_size_x = 16, local_size_y = 16) in; layout(set = 4, binding = 0, rgba8) uniform image2D inputImage; layout(set = 4, binding = 1, rgba8) uniform image2D targetImage; void main() { // convenient variables ivec2 globalThread = ivec2(gl_GlobalInvocationID); vec3 color = imageLoad (inputImage, globalThread).rgb; // store result into result image imageStore(targetImage, ivec2(gl_GlobalInvocationID.xy), vec4(color, 1.0f)); }