[Vulkan] Fixup window offset calculation

This commit is contained in:
DrChat
2018-04-16 15:44:52 -05:00
parent 18d9efc93b
commit 27c840fa91
2 changed files with 14 additions and 19 deletions

View File

@@ -528,20 +528,20 @@ std::vector<uint8_t> SpirvShaderTranslator::CompleteTranslation() {
// Reinsert w
p = b.createCompositeInsert(p_w, p, vec4_float_type_, 3);
// Apply window scaling
// pos.xy *= window_scale.xy
auto p_scaled =
b.createBinOp(spv::Op::OpFMul, vec4_float_type_, p, window_scale);
// Apply window offset
// pos.xy += window_scale.zw
auto window_offset = b.createOp(spv::Op::OpVectorShuffle, vec4_float_type_,
{window_scale, window_scale, 2, 3, 0, 1});
auto p_offset = b.createBinOp(spv::Op::OpFAdd, vec4_float_type_, p_scaled,
window_offset);
auto p_offset =
b.createBinOp(spv::Op::OpFAdd, vec4_float_type_, p, window_offset);
// Apply window scaling
// pos.xy *= window_scale.xy
auto p_scaled = b.createBinOp(spv::Op::OpFMul, vec4_float_type_, p_offset,
window_scale);
p = b.createOp(spv::Op::OpVectorShuffle, vec4_float_type_,
{p, p_offset, 4, 5, 2, 3});
{p, p_scaled, 4, 5, 2, 3});
b.createStore(p, pos_);
} else {