Update WR - includes a number of optimizations, bsd build fixes, tidy ups.

This commit is contained in:
Glenn Watson 2016-10-24 15:37:21 +10:00
parent d5e412b3f1
commit 00789210b0
9 changed files with 233 additions and 196 deletions

View file

@ -120,8 +120,8 @@ Layer fetch_layer(int index) {
}
struct Tile {
vec4 actual_rect;
vec4 target_rect;
vec4 screen_origin_task_origin;
vec4 size;
};
Tile fetch_tile(int index) {
@ -129,8 +129,8 @@ Tile fetch_tile(int index) {
ivec2 uv = get_fetch_uv(index, VECS_PER_TILE);
tile.actual_rect = texelFetchOffset(sRenderTasks, uv, 0, ivec2(0, 0));
tile.target_rect = texelFetchOffset(sRenderTasks, uv, 0, ivec2(1, 0));
tile.screen_origin_task_origin = texelFetchOffset(sRenderTasks, uv, 0, ivec2(0, 0));
tile.size = texelFetchOffset(sRenderTasks, uv, 0, ivec2(1, 0));
return tile;
}
@ -406,13 +406,13 @@ VertexInfo write_vertex(vec4 instance_rect,
vec2 device_pos = world_pos.xy * uDevicePixelRatio;
vec2 clamped_pos = clamp(device_pos,
vec2(tile.actual_rect.xy),
vec2(tile.actual_rect.xy + tile.actual_rect.zw));
vec2(tile.screen_origin_task_origin.xy),
vec2(tile.screen_origin_task_origin.xy + tile.size.xy));
vec4 local_clamped_pos = layer.inv_transform * vec4(clamped_pos / uDevicePixelRatio, world_pos.z, 1);
local_clamped_pos.xyz /= local_clamped_pos.w;
vec2 final_pos = clamped_pos + vec2(tile.target_rect.xy) - vec2(tile.actual_rect.xy);
vec2 final_pos = clamped_pos + vec2(tile.screen_origin_task_origin.zw) - vec2(tile.screen_origin_task_origin.xy);
gl_Position = uTransform * vec4(final_pos, 0, 1);
@ -460,12 +460,12 @@ TransformVertexInfo write_transform_vertex(vec4 instance_rect,
vec2 max_pos = max(tp0.xy, max(tp1.xy, max(tp2.xy, tp3.xy)));
vec2 min_pos_clamped = clamp(min_pos * uDevicePixelRatio,
vec2(tile.actual_rect.xy),
vec2(tile.actual_rect.xy + tile.actual_rect.zw));
vec2(tile.screen_origin_task_origin.xy),
vec2(tile.screen_origin_task_origin.xy + tile.size.xy));
vec2 max_pos_clamped = clamp(max_pos * uDevicePixelRatio,
vec2(tile.actual_rect.xy),
vec2(tile.actual_rect.xy + tile.actual_rect.zw));
vec2(tile.screen_origin_task_origin.xy),
vec2(tile.screen_origin_task_origin.xy + tile.size.xy));
vec2 clamped_pos = mix(min_pos_clamped,
max_pos_clamped,
@ -473,7 +473,7 @@ TransformVertexInfo write_transform_vertex(vec4 instance_rect,
vec3 layer_pos = get_layer_pos(clamped_pos / uDevicePixelRatio, layer);
vec2 final_pos = clamped_pos + vec2(tile.target_rect.xy) - vec2(tile.actual_rect.xy);
vec2 final_pos = clamped_pos + vec2(tile.screen_origin_task_origin.zw) - vec2(tile.screen_origin_task_origin.xy);
gl_Position = uTransform * vec4(final_pos, 0, 1);
@ -550,30 +550,28 @@ BoxShadow fetch_boxshadow(int index) {
}
struct Blend {
ivec4 src_id_target_id_opacity;
ivec4 src_id_target_id_op_amount;
};
Blend fetch_blend(int index) {
Blend blend;
int offset = index * 1;
blend.src_id_target_id_opacity = int_data[offset + 0];
blend.src_id_target_id_op_amount = int_data[offset + 0];
return blend;
}
struct Composite {
ivec4 src0_src1_target_id;
ivec4 info_amount;
ivec4 src0_src1_target_id_op;
};
Composite fetch_composite(int index) {
Composite composite;
int offset = index * 2;
int offset = index * 1;
composite.src0_src1_target_id = int_data[offset + 0];
composite.info_amount = int_data[offset + 1];
composite.src0_src1_target_id_op = int_data[offset + 0];
return composite;
}