[D3D12] Switch to DXBC shader translator (currently unusable)
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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_
|
||||
|
||||
Reference in New Issue
Block a user