mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-23 19:54:16 +01:00
[hud] Visualize inactive chunks
This commit is contained in:
parent
a12d97ebbf
commit
18a06fd15b
@ -1122,8 +1122,11 @@ namespace dxvk::hud {
|
|||||||
draw.w = size.x;
|
draw.w = size.x;
|
||||||
draw.h = size.y;
|
draw.h = size.y;
|
||||||
draw.pageMask = chunk.pageMaskOffset;
|
draw.pageMask = chunk.pageMaskOffset;
|
||||||
draw.pageCount = chunk.pageCount;
|
draw.pageCountAndActiveBit = chunk.pageCount;
|
||||||
draw.color = color;
|
draw.color = color;
|
||||||
|
|
||||||
|
if (chunk.active)
|
||||||
|
draw.pageCountAndActiveBit |= 1u << 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -540,7 +540,7 @@ namespace dxvk::hud {
|
|||||||
int16_t w;
|
int16_t w;
|
||||||
int16_t h;
|
int16_t h;
|
||||||
uint16_t pageMask;
|
uint16_t pageMask;
|
||||||
uint16_t pageCount;
|
uint16_t pageCountAndActiveBit;
|
||||||
uint32_t color;
|
uint32_t color;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -11,10 +11,20 @@ uniform push_data_t {
|
|||||||
float scale;
|
float scale;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
layout(location = 0) flat in uint v_active;
|
||||||
|
|
||||||
layout(location = 0) out vec4 o_color;
|
layout(location = 0) out vec4 o_color;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
o_color = vec4(0.0f, 0.0f, 0.0f, 0.75f);
|
o_color = vec4(0.0f, 0.0f, 0.0f, 0.75f);
|
||||||
|
|
||||||
|
if (v_active == 0u) {
|
||||||
|
uvec2 pos = uvec2(gl_FragCoord.xy);
|
||||||
|
|
||||||
|
if (((pos.x + pos.y) & 7u) < 2u)
|
||||||
|
o_color.xyz = vec3(0.25f);
|
||||||
|
}
|
||||||
|
|
||||||
o_color.a *= opacity;
|
o_color.a *= opacity;
|
||||||
o_color = linear_to_output(o_color);
|
o_color = linear_to_output(o_color);
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,8 @@ vec2 unpack_u16(uint v) {
|
|||||||
return vec2(float(lo >> 16), float(hi >> 16));
|
return vec2(float(lo >> 16), float(hi >> 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
layout(location = 0) out uint o_active;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
draw_info_t draw = draw_infos[gl_InstanceIndex];
|
draw_info_t draw = draw_infos[gl_InstanceIndex];
|
||||||
|
|
||||||
@ -43,5 +45,6 @@ void main() {
|
|||||||
vec2 pixel_pos = pos + size * coord + (2.0f * coord - 1.0f);
|
vec2 pixel_pos = pos + size * coord + (2.0f * coord - 1.0f);
|
||||||
vec2 scaled_pos = 2.0f * (pixel_pos / surface_size_f) - 1.0f;
|
vec2 scaled_pos = 2.0f * (pixel_pos / surface_size_f) - 1.0f;
|
||||||
|
|
||||||
|
o_active = bitfieldExtract(draw.packed_range, 31, 1);
|
||||||
gl_Position = vec4(scaled_pos, 0.0f, 1.0f);
|
gl_Position = vec4(scaled_pos, 0.0f, 1.0f);
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ void main() {
|
|||||||
o_coord = coord;
|
o_coord = coord;
|
||||||
o_color = draw.color;
|
o_color = draw.color;
|
||||||
o_mask_index = bitfieldExtract(draw.packed_range, 0, 16);
|
o_mask_index = bitfieldExtract(draw.packed_range, 0, 16);
|
||||||
o_page_count = bitfieldExtract(draw.packed_range, 16, 16);
|
o_page_count = bitfieldExtract(draw.packed_range, 16, 15);
|
||||||
|
|
||||||
vec2 surface_size_f = vec2(surface_size) / scale;
|
vec2 surface_size_f = vec2(surface_size) / scale;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user