[D3D12] Interpolation at centroid

This commit is contained in:
Triang3l
2020-07-08 23:20:36 +03:00
parent 829c6ee2b0
commit 1547b9df41
31 changed files with 2681 additions and 2487 deletions

View File

@@ -8,36 +8,37 @@
// {
//
// uint xe_flags; // Offset: 0 Size: 4 [unused]
// uint xe_line_loop_closing_index; // Offset: 4 Size: 4 [unused]
// uint xe_vertex_index_endian; // Offset: 8 Size: 4 [unused]
// int xe_vertex_base_index; // Offset: 12 Size: 4 [unused]
// float4 xe_user_clip_planes[6]; // Offset: 16 Size: 96 [unused]
// float3 xe_ndc_scale; // Offset: 112 Size: 12 [unused]
// uint xe_ps_param_gen; // Offset: 124 Size: 4 [unused]
// float3 xe_ndc_offset; // Offset: 128 Size: 12 [unused]
// float xe_alpha_test_reference; // Offset: 140 Size: 4 [unused]
// float2 xe_point_size; // Offset: 144 Size: 8 [unused]
// float2 xe_point_size_min_max; // Offset: 152 Size: 8 [unused]
// float2 xe_point_screen_to_ndc; // Offset: 160 Size: 8 [unused]
// uint2 xe_sample_count_log2; // Offset: 168 Size: 8 [unused]
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
// uint xe_vertex_index_endian; // Offset: 16 Size: 4 [unused]
// int xe_vertex_base_index; // Offset: 20 Size: 4 [unused]
// float2 xe_point_size; // Offset: 24 Size: 8 [unused]
// float2 xe_point_size_min_max; // Offset: 32 Size: 8 [unused]
// float2 xe_point_screen_to_ndc; // Offset: 40 Size: 8 [unused]
// float4 xe_user_clip_planes[6]; // Offset: 48 Size: 96 [unused]
// float3 xe_ndc_scale; // Offset: 144 Size: 12 [unused]
// uint xe_interpolator_sampling_pattern;// Offset: 156 Size: 4 [unused]
// float3 xe_ndc_offset; // Offset: 160 Size: 12 [unused]
// uint xe_ps_param_gen; // Offset: 172 Size: 4 [unused]
// uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused]
// uint xe_alpha_to_mask; // Offset: 208 Size: 4 [unused]
// uint xe_edram_resolution_square_scale;// Offset: 212 Size: 4 [unused]
// uint xe_edram_pitch_tiles; // Offset: 216 Size: 4 [unused]
// uint xe_edram_depth_base_dwords; // Offset: 220 Size: 4 [unused]
// uint2 xe_sample_count_log2; // Offset: 208 Size: 8 [unused]
// float xe_alpha_test_reference; // Offset: 216 Size: 4 [unused]
// uint xe_alpha_to_mask; // Offset: 220 Size: 4 [unused]
// float4 xe_color_exp_bias; // Offset: 224 Size: 16 [unused]
// uint4 xe_color_output_map; // Offset: 240 Size: 16 [unused]
// float2 xe_tessellation_factor_range;// Offset: 256 Size: 8
// uint xe_edram_resolution_square_scale;// Offset: 256 Size: 4 [unused]
// uint xe_edram_pitch_tiles; // Offset: 260 Size: 4 [unused]
// float2 xe_edram_depth_range; // Offset: 264 Size: 8 [unused]
// float2 xe_edram_poly_offset_front; // Offset: 272 Size: 8 [unused]
// float2 xe_edram_poly_offset_back; // Offset: 280 Size: 8 [unused]
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
// float4 xe_edram_rt_clamp[4]; // Offset: 352 Size: 64 [unused]
// uint4 xe_edram_rt_keep_mask[2]; // Offset: 416 Size: 32 [unused]
// uint4 xe_edram_rt_blend_factors_ops;// Offset: 448 Size: 16 [unused]
// float4 xe_edram_blend_constant; // Offset: 464 Size: 16 [unused]
// uint xe_edram_depth_base_dwords; // Offset: 288 Size: 4 [unused]
// uint4 xe_edram_stencil[2]; // Offset: 304 Size: 32 [unused]
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 336 Size: 16 [unused]
// uint4 xe_edram_rt_format_flags; // Offset: 352 Size: 16 [unused]
// float4 xe_edram_rt_clamp[4]; // Offset: 368 Size: 64 [unused]
// uint4 xe_edram_rt_keep_mask[2]; // Offset: 432 Size: 32 [unused]
// uint4 xe_edram_rt_blend_factors_ops;// Offset: 464 Size: 16 [unused]
// float4 xe_edram_blend_constant; // Offset: 480 Size: 16 [unused]
//
// }
//
@@ -89,7 +90,7 @@ dcl_tessellator_domain domain_tri
dcl_tessellator_partitioning partitioning_integer
dcl_tessellator_output_primitive output_triangle_cw
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[0:0][17], immediateIndexed, space=0
dcl_constantbuffer CB0[0:0][1], immediateIndexed, space=0
hs_control_point_phase
dcl_input vOutputControlPointID
dcl_input v[3][0].x
@@ -107,10 +108,10 @@ dcl_output_siv o2.x, finalTriWeq0EdgeTessFactor
dcl_temps 1
dcl_indexrange o0.x 3
mov r0.x, vForkInstanceID.x
mov o[r0.x + 0].x, CB0[0][16].y
mov o[r0.x + 0].x, CB0[0][0].z
ret
hs_fork_phase
dcl_output_siv o3.x, finalTriInsideTessFactor
mov o3.x, CB0[0][16].y
mov o3.x, CB0[0][0].z
ret
// Approximately 8 instruction slots used