[D3D12] Switch to DXBC shader translator (currently unusable)

This commit is contained in:
Triang3l
2018-08-30 20:42:22 +03:00
parent 8376918bb7
commit 8268825f3b
9 changed files with 59 additions and 133 deletions

View File

@@ -5,24 +5,24 @@ void main(point XeVertex xe_in[1], inout TriangleStream<XeVertex> xe_stream) {
XeVertex xe_out;
xe_out.interpolators = xe_in[0].interpolators;
xe_out.position.zw = xe_in[0].position.zw;
xe_out.point_size = xe_in[0].point_size;
xe_out.point_params.z = xe_in[0].point_params.z;
// Shader header writes -1.0f to point_size by default, so any positive value
// means that it was overwritten by the translated vertex shader.
float2 point_size =
(xe_in[0].point_size > 0.0f ? xe_in[0].point_size.xx : xe_point_size) *
xe_ndc_scale.xy;
(xe_in[0].point_params.z > 0.0f ? xe_in[0].point_params.zz
: xe_point_size) * xe_ndc_scale.xy;
xe_out.point_coord = float2(0.0, 1.0);
xe_out.point_params.xy = float2(0.0, 1.0);
xe_out.position.xy = xe_in[0].position.xy + float2(-1.0, 1.0) * point_size;
xe_stream.Append(xe_out);
xe_out.point_coord = float2(1.0, 1.0);
xe_out.point_params.xy = float2(1.0, 1.0);
xe_out.position.xy = xe_in[0].position.xy + point_size;
xe_stream.Append(xe_out);
xe_out.point_coord = float2(0.0, 0.0);
xe_out.point_params.xy = float2(0.0, 0.0);
xe_out.position.xy = xe_in[0].position.xy - point_size;
xe_stream.Append(xe_out);
xe_out.point_coord = float2(1.0, 0.0);
xe_out.point_params.xy = float2(1.0, 0.0);
xe_out.position.xy = xe_in[0].position.xy + float2(1.0, -1.0) * point_size;
xe_stream.Append(xe_out);
xe_stream.RestartStrip();

View File

@@ -33,9 +33,9 @@ void main(triangle XeVertex xe_in[3],
xe_in[0].interpolators[i] +
xe_in[2].interpolators[i];
}
xe_out.point_coord = xe_in[1].point_coord +
xe_in[0].point_coord -
xe_in[2].point_coord;
xe_out.point_params.xy = xe_in[1].point_params.xy +
xe_in[0].point_params.xy -
xe_in[2].point_params.xy;
xe_out.position = float4(xe_in[1].position.xy -
xe_in[0].position.xy +
xe_in[2].position.xy,
@@ -53,15 +53,15 @@ void main(triangle XeVertex xe_in[3],
xe_in[1].interpolators[i] +
xe_in[2].interpolators[i];
}
xe_out.point_coord = xe_in[0].point_coord +
xe_in[1].point_coord -
xe_in[2].point_coord;
xe_out.point_params.xy = xe_in[0].point_params.xy +
xe_in[1].point_params.xy -
xe_in[2].point_params.xy;
xe_out.position = float4(xe_in[0].position.xy -
xe_in[1].position.xy +
xe_in[2].position.xy,
xe_in[2].position.zw);
}
xe_out.point_size = xe_in[2].point_size;
xe_out.point_params.z = xe_in[2].point_params.z;
xe_stream.Append(xe_out);
xe_stream.RestartStrip();
}

View File

@@ -26,9 +26,8 @@ cbuffer xe_system_cbuffer : register(b0) {
struct XeVertex {
float4 interpolators[16] : TEXCOORD0;
float2 point_coord : TEXCOORD16;
float3 point_params : TEXCOORD16;
float4 position : SV_Position;
float point_size : PSIZE;
};
#endif // XENIA_GPU_D3D12_SHADERS_XENOS_DRAW_HLSLI_