Akarys
Akarys
TIPThe Iris Project
Created by Akarys on 9/22/2024 in #iris-issues
colortex buffers not accessible between composite passes
I got it, the directive was a little misleading
5 replies
TIPThe Iris Project
Created by Akarys on 9/22/2024 in #iris-issues
colortex buffers not accessible between composite passes
composite1.fsh:
#version 330 compatibility

uniform sampler2D colortex2; // edge

uniform float viewWidth;
uniform float viewHeight;

in vec2 texcoord;

/* DRAWBUFFERS:03 */
layout(location = 3) out vec4 bloom;
layout(location = 0) out vec4 color;

void main() {
int blurSize = 2;

vec4 bloomColor = vec4(0.0);

for (int x = -blurSize; x <= blurSize; x++) {
for (int y = -blurSize; y <= blurSize; y++) {
bloomColor += texture2D(colortex2, texcoord + vec2(x, y) / vec2(viewWidth, viewHeight));
}
}

bloomColor /= (2 * blurSize + 1) * (2 * blurSize + 1);
bloomColor.a = 1.0;

bloom = bloomColor;
// color = bloom;
color = texture2D(colortex2, texcoord);
}
#version 330 compatibility

uniform sampler2D colortex2; // edge

uniform float viewWidth;
uniform float viewHeight;

in vec2 texcoord;

/* DRAWBUFFERS:03 */
layout(location = 3) out vec4 bloom;
layout(location = 0) out vec4 color;

void main() {
int blurSize = 2;

vec4 bloomColor = vec4(0.0);

for (int x = -blurSize; x <= blurSize; x++) {
for (int y = -blurSize; y <= blurSize; y++) {
bloomColor += texture2D(colortex2, texcoord + vec2(x, y) / vec2(viewWidth, viewHeight));
}
}

bloomColor /= (2 * blurSize + 1) * (2 * blurSize + 1);
bloomColor.a = 1.0;

bloom = bloomColor;
// color = bloom;
color = texture2D(colortex2, texcoord);
}
5 replies
TIPThe Iris Project
Created by Akarys on 9/22/2024 in #iris-issues
colortex buffers not accessible between composite passes
composite.fsh:
#version 330 compatibility

uniform sampler2D colortex1; // normals

uniform float viewWidth;
uniform float viewHeight;

in vec2 texcoord;

/* DRAWBUFFERS:2 */
layout(location = 2) out vec4 edge;

void make_kernel(inout vec4 n[9], sampler2D tex, vec2 coord)
{
float w = 1.0 / viewWidth;
float h = 1.0 / viewHeight;

n[0] = texture2D(tex, coord + vec2( -w, -h));
n[1] = texture2D(tex, coord + vec2(0.0, -h));
n[2] = texture2D(tex, coord + vec2( w, -h));
n[3] = texture2D(tex, coord + vec2( -w, 0.0));
n[4] = texture2D(tex, coord);
n[5] = texture2D(tex, coord + vec2( w, 0.0));
n[6] = texture2D(tex, coord + vec2( -w, h));
n[7] = texture2D(tex, coord + vec2(0.0, h));
n[8] = texture2D(tex, coord + vec2( w, h));
}

void main() {
vec4 n[9];
make_kernel(n, colortex1, texcoord);

vec3 sobel_x = n[2].rgb + 2.0 * n[5].rgb + n[8].rgb - n[0].rgb - 2.0 * n[3].rgb - n[6].rgb;
vec3 sobel_y = n[0].rgb + 2.0 * n[1].rgb + n[2].rgb - n[6].rgb - 2.0 * n[7].rgb - n[8].rgb;
vec3 sobel = sqrt(sobel_x * sobel_x + sobel_y * sobel_y);

float max = max(max(abs(sobel.x), abs(sobel.y)), abs(sobel.z));

edge = vec4(max, max, max, 1.0);
}
#version 330 compatibility

uniform sampler2D colortex1; // normals

uniform float viewWidth;
uniform float viewHeight;

in vec2 texcoord;

/* DRAWBUFFERS:2 */
layout(location = 2) out vec4 edge;

void make_kernel(inout vec4 n[9], sampler2D tex, vec2 coord)
{
float w = 1.0 / viewWidth;
float h = 1.0 / viewHeight;

n[0] = texture2D(tex, coord + vec2( -w, -h));
n[1] = texture2D(tex, coord + vec2(0.0, -h));
n[2] = texture2D(tex, coord + vec2( w, -h));
n[3] = texture2D(tex, coord + vec2( -w, 0.0));
n[4] = texture2D(tex, coord);
n[5] = texture2D(tex, coord + vec2( w, 0.0));
n[6] = texture2D(tex, coord + vec2( -w, h));
n[7] = texture2D(tex, coord + vec2(0.0, h));
n[8] = texture2D(tex, coord + vec2( w, h));
}

void main() {
vec4 n[9];
make_kernel(n, colortex1, texcoord);

vec3 sobel_x = n[2].rgb + 2.0 * n[5].rgb + n[8].rgb - n[0].rgb - 2.0 * n[3].rgb - n[6].rgb;
vec3 sobel_y = n[0].rgb + 2.0 * n[1].rgb + n[2].rgb - n[6].rgb - 2.0 * n[7].rgb - n[8].rgb;
vec3 sobel = sqrt(sobel_x * sobel_x + sobel_y * sobel_y);

float max = max(max(abs(sobel.x), abs(sobel.y)), abs(sobel.z));

edge = vec4(max, max, max, 1.0);
}
5 replies