Remove some unused WR1 shaders, copy new shaders, update WR hash.

This commit is contained in:
Glenn Watson 2016-08-09 07:26:38 +10:00
parent 8cd4b772e9
commit ce01120fb1
22 changed files with 81 additions and 332 deletions

View file

@ -146,6 +146,53 @@ VertexInfo write_vertex(PrimitiveInfo info) {
VertexInfo vi = VertexInfo(Rect(p0, p1), local_clamped_pos.xy, clamped_pos.xy);
return vi;
}
struct TransformVertexInfo {
vec3 local_pos;
};
TransformVertexInfo write_transform_vertex(PrimitiveInfo info) {
Layer layer = layers[info.layer_tile_part.x];
Tile tile = tiles[info.layer_tile_part.y];
vec2 p0 = info.local_rect.xy;
vec2 p1 = info.local_rect.xy + vec2(info.local_rect.z, 0.0);
vec2 p2 = info.local_rect.xy + vec2(0.0, info.local_rect.w);
vec2 p3 = info.local_rect.xy + info.local_rect.zw;
vec4 t0 = layer.transform * vec4(p0, 0, 1);
vec4 t1 = layer.transform * vec4(p1, 0, 1);
vec4 t2 = layer.transform * vec4(p2, 0, 1);
vec4 t3 = layer.transform * vec4(p3, 0, 1);
vec2 tp0 = t0.xy / t0.w;
vec2 tp1 = t1.xy / t1.w;
vec2 tp2 = t2.xy / t2.w;
vec2 tp3 = t3.xy / t3.w;
vec2 min_pos = min(tp0.xy, min(tp1.xy, min(tp2.xy, tp3.xy)));
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 max_pos_clamped = clamp(max_pos * uDevicePixelRatio,
vec2(tile.actual_rect.xy),
vec2(tile.actual_rect.xy + tile.actual_rect.zw));
vec2 clamped_pos = mix(min_pos_clamped,
max_pos_clamped,
aPosition.xy);
vec3 layer_pos = get_layer_pos(clamped_pos / uDevicePixelRatio, info.layer_tile_part.x);
vec2 final_pos = clamped_pos + vec2(tile.target_rect.xy) - vec2(tile.actual_rect.xy);
gl_Position = uTransform * vec4(final_pos, 0, 1);
return TransformVertexInfo(layer_pos);
}
#endif
#ifdef WR_FRAGMENT_SHADER
@ -177,4 +224,14 @@ bool point_in_rect(vec2 p, vec2 p0, vec2 p1) {
p.x <= p1.x &&
p.y <= p1.y;
}
vec2 init_transform_fs(vec3 local_pos, vec4 local_rect) {
vec2 pos = local_pos.xy / local_pos.z;
if (!point_in_rect(pos, local_rect.xy, local_rect.xy + local_rect.zw)) {
discard;
}
return pos;
}
#endif