[D3D12] ps_param_gen in HLSL
This commit is contained in:
parent
bb518407a2
commit
14523145a2
|
@ -277,7 +277,6 @@ std::vector<uint8_t> HlslShaderTranslator::CompleteTranslation() {
|
||||||
for (uint32_t i = 0; i < kMaxInterpolators; ++i) {
|
for (uint32_t i = 0; i < kMaxInterpolators; ++i) {
|
||||||
source.AppendFormat(" xe_output.interpolators[%u] = (0.0).xxxx;\n", i);
|
source.AppendFormat(" xe_output.interpolators[%u] = (0.0).xxxx;\n", i);
|
||||||
}
|
}
|
||||||
// TODO(Triang3l): Reset interpolators to zero if really needed.
|
|
||||||
} else if (is_pixel_shader()) {
|
} else if (is_pixel_shader()) {
|
||||||
// Pixel shader inputs, outputs and prologue.
|
// Pixel shader inputs, outputs and prologue.
|
||||||
// If the shader writes to depth, it needs to define
|
// If the shader writes to depth, it needs to define
|
||||||
|
@ -313,7 +312,15 @@ std::vector<uint8_t> HlslShaderTranslator::CompleteTranslation() {
|
||||||
for (uint32_t i = 0; i < interpolator_register_count; ++i) {
|
for (uint32_t i = 0; i < interpolator_register_count; ++i) {
|
||||||
source.AppendFormat(" xe_r[%u] = xe_input.interpolators[%u];\n", i, i);
|
source.AppendFormat(" xe_r[%u] = xe_input.interpolators[%u];\n", i, i);
|
||||||
}
|
}
|
||||||
// TODO(Triang3l): ps_param_gen.
|
// Write pixel position to the register specified by ps_param_gen.
|
||||||
|
source.AppendFormat(
|
||||||
|
" [branch] if (xe_pixel_pos_reg < %uu) {\n"
|
||||||
|
" float4 xe_pixel_pos = xe_input.position;\n"
|
||||||
|
" xe_pixel_pos.xy = xe_pixel_pos.xy * xe_ssaa_inv_scale +\n"
|
||||||
|
" xe_pixel_half_pixel_offset;\n"
|
||||||
|
" xe_r[xe_pixel_pos_reg] = xe_pixel_pos;\n"
|
||||||
|
" }\n",
|
||||||
|
register_count());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Common main function variables and prologue.
|
// Common main function variables and prologue.
|
||||||
|
@ -407,7 +414,7 @@ std::vector<uint8_t> HlslShaderTranslator::CompleteTranslation() {
|
||||||
" xe_output.colors[2] = xe_color_output[xe_color_output_map.b];\n"
|
" xe_output.colors[2] = xe_color_output[xe_color_output_map.b];\n"
|
||||||
" xe_output.colors[3] = xe_color_output[xe_color_output_map.a];\n");
|
" xe_output.colors[3] = xe_color_output[xe_color_output_map.a];\n");
|
||||||
}
|
}
|
||||||
// TODO(Triang3l): Half pixel offset, alpha test, gamma.
|
// TODO(Triang3l): Gamma if needed.
|
||||||
source.Append(
|
source.Append(
|
||||||
" return xe_output;\n"
|
" return xe_output;\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
|
|
Loading…
Reference in New Issue