MRT Index

This commit is contained in:
2026-09-17 16:38:36 -07:00
parent 70961b0336
commit f6d5f142e9
3 changed files with 34 additions and 9 deletions

View File

@ -33,10 +33,28 @@ def make(context_id):
frag = con_refract.frag
tese = con_refract.tese
frag.add_include('std/gbuffer.glsl')
frag.add_out('vec4 fragColor[3]')
rpdat = lnx.utils.get_rp()
is_deferred = rpdat.rp_renderer == 'Deferred'
wrd = bpy.data.worlds['Lnx']
idx_2 = idx_emission = idx_coat = -1
idx = 2
if '_gbuffer2' in wrd.world_defs:
idx_2 = idx
idx += 1
if '_EmissionShaded' in wrd.world_defs:
idx_emission = idx
idx += 1
idx_refraction = idx
idx += 1
if '_ClearCoat' in wrd.world_defs:
idx_coat = idx
idx += 1
frag.add_out(f'vec4 fragColor[{idx}]' if is_deferred else 'vec4 fragColor[3]')
# Remove fragColor = ...;
frag.main = frag.main[:frag.main.rfind('fragColor')]
frag.write('\n')
@ -53,16 +71,22 @@ def make(context_id):
else:
frag.write('const uint matid = 0;')
if rpdat.rp_renderer == 'Deferred':
if is_deferred:
frag.write('fragColor[0] = vec4(n.xy, roughness, 1.0);')
frag.write('vec3 finalColor = direct + indirect;')
frag.write('fragColor[1] = vec4(finalColor * opacity, 1.0);')
frag.write(f'fragColor[{idx_refraction}] = vec4(packIOR(ior), 1.0 - opacity, gl_FragCoord.z, 1.0);')
if idx_2 >= 0:
frag.write(f'fragColor[{idx_2}] = vec4(0.0);')
if idx_emission >= 0:
frag.write(f'fragColor[{idx_emission}] = vec4(0.0);')
if idx_coat >= 0:
frag.write(f'fragColor[{idx_coat}] = vec4(0.0);')
else:
frag.write('vec3 finalColor = direct + indirect;')
frag.write('fragColor[0] = vec4(finalColor * opacity, 1.0);')
frag.write('fragColor[1] = vec4(n.xy, roughness, 1.0);')
frag.write('fragColor[2] = vec4(packIOR(ior), 1.0 - opacity, gl_FragCoord.z, 1.0);')
frag.write('fragColor[2] = vec4(packIOR(ior), 1.0 - opacity, gl_FragCoord.z, 1.0);')
# frag.write('fragColor[2] = vec4(ior, 1.0 - opacity, packFloat2(basecol.r, basecol.g), basecol.b);')
make_finalize.make(con_refract)