mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
tests/hlsl: Add a simpler clip/cull distance test.
This commit is contained in:
committed by
Henri Verbeet
parent
cb7dac4d65
commit
ca5bc63e5e
Notes:
Henri Verbeet
2025-10-29 13:43:34 +01:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1801
@@ -1,3 +1,144 @@
|
|||||||
|
[require]
|
||||||
|
shader model >= 4.0
|
||||||
|
cull-distance
|
||||||
|
|
||||||
|
[input layout]
|
||||||
|
0 r32g32-float POSITION
|
||||||
|
|
||||||
|
% 9 triangles, on a 3x3 arrangement.
|
||||||
|
[vb 0]
|
||||||
|
-0.52 -0.52
|
||||||
|
-0.46 -0.50
|
||||||
|
-0.50 -0.46
|
||||||
|
|
||||||
|
-0.52 -0.02
|
||||||
|
-0.46 0.00
|
||||||
|
-0.50 0.04
|
||||||
|
|
||||||
|
-0.52 0.48
|
||||||
|
-0.46 0.50
|
||||||
|
-0.50 0.54
|
||||||
|
|
||||||
|
-0.02 -0.52
|
||||||
|
0.04 -0.50
|
||||||
|
0.00 -0.46
|
||||||
|
|
||||||
|
-0.02 -0.02
|
||||||
|
0.04 0.00
|
||||||
|
0.00 0.04
|
||||||
|
|
||||||
|
-0.02 0.48
|
||||||
|
0.04 0.50
|
||||||
|
0.00 0.54
|
||||||
|
|
||||||
|
0.48 -0.52
|
||||||
|
0.54 -0.50
|
||||||
|
0.50 -0.46
|
||||||
|
|
||||||
|
0.48 -0.02
|
||||||
|
0.54 0.00
|
||||||
|
0.50 0.04
|
||||||
|
|
||||||
|
0.48 0.48
|
||||||
|
0.54 0.50
|
||||||
|
0.50 0.54
|
||||||
|
|
||||||
|
[rtv 0]
|
||||||
|
format r32g32b32a32-float
|
||||||
|
size (2d, 640, 480)
|
||||||
|
|
||||||
|
[vertex shader todo]
|
||||||
|
struct input
|
||||||
|
{
|
||||||
|
float4 position : POSITION;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct vertex
|
||||||
|
{
|
||||||
|
float4 position : SV_POSITION;
|
||||||
|
float cull : SV_CULLDISTANCE;
|
||||||
|
float clip : SV_CLIPDISTANCE;
|
||||||
|
};
|
||||||
|
|
||||||
|
void main(float4 position : POSITION, out vertex vertex)
|
||||||
|
{
|
||||||
|
vertex.position = position;
|
||||||
|
// All 3 triangles on the left column are removed by culling.
|
||||||
|
// All 3 triangles on the bottom row are removed by clipping.
|
||||||
|
// The triangles on the middle row will be partially removed by clipping.
|
||||||
|
vertex.cull = position.x;
|
||||||
|
vertex.clip = position.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
[pixel shader]
|
||||||
|
float4 main(const in float4 position : SV_Position) : SV_Target
|
||||||
|
{
|
||||||
|
return float4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
[test]
|
||||||
|
clear rtv 0 0.0 0.0 0.0 1.0
|
||||||
|
todo(sm<6) draw triangle list 27
|
||||||
|
probe rtv 0 (160, 120) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (160, 240) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (160, 360) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (320, 120) f32(1.0, 1.0, 1.0, 1.0)
|
||||||
|
probe rtv 0 (320, 240) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (320, 360) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (480, 120) f32(1.0, 1.0, 1.0, 1.0)
|
||||||
|
probe rtv 0 (480, 240) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (480, 360) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (320, 239) f32(1.0, 1.0, 1.0, 1.0)
|
||||||
|
|
||||||
|
[require]
|
||||||
|
shader model >= 4.0
|
||||||
|
shader model < 4.1
|
||||||
|
cull-distance
|
||||||
|
|
||||||
|
% Same as previous vertex shader, but already compiled with FXC.
|
||||||
|
[vertex shader dxbc-tpf-hex]
|
||||||
|
43425844 0ec8a95b 7857d61f 02c08472 6edf4bf9 00000001 00000170 % DXBC header
|
||||||
|
00000003 0000002c 00000060 000000e4 %
|
||||||
|
4e475349 0000002c 00000001 00000008 % .input
|
||||||
|
00000020 00000000 00000000 00000003 00000000 00000f0f % .param POSITION.xyzw, v0.xyzw, float
|
||||||
|
49534f50 4e4f4954 ababab00 % "POSITION"
|
||||||
|
4e47534f 0000007c 00000003 00000008 % .output
|
||||||
|
00000050 00000000 00000001 00000003 00000000 0000000f % .param SV_POSITION.xyzw, o0.xyzw, float, POS
|
||||||
|
0000005c 00000000 00000003 00000003 00000001 00000e01 % .param SV_CULLDISTANCE.x, o1.x, float, CULLDST
|
||||||
|
0000006c 00000000 00000002 00000003 00000001 00000d02 % .param SV_CLIPDISTANCE.y, o1.y, float, CLIPDST
|
||||||
|
505f5653 5449534f 004e4f49 % "SV_POSITION"
|
||||||
|
435f5653 444c4c55 41545349 0045434e % "SV_CULLDISTANCE"
|
||||||
|
435f5653 4450494c 41545349 0045434e % "SV_CLIPDISTANCE"
|
||||||
|
52444853 00000084 00010040 00000021 % .text vs_4_0
|
||||||
|
0300005f 001010f2 00000000 % dcl_input v0.xyzw
|
||||||
|
04000067 001020f2 00000000 00000001 % dcl_output_siv o0.xyzw, position
|
||||||
|
04000067 00102012 00000001 00000003 % dcl_output_siv o1.x, cull_distance
|
||||||
|
04000067 00102022 00000001 00000002 % dcl_output_siv o1.y, clip_distance
|
||||||
|
05000036 001020f2 00000000 00101e46 00000000 % mov o0.xyzw, v0.xyzw
|
||||||
|
05000036 00102012 00000001 0010100a 00000000 % mov o1.x, v0.x
|
||||||
|
05000036 00102022 00000001 0010101a 00000000 % mov o1.y, v0.y
|
||||||
|
0100003e % ret
|
||||||
|
|
||||||
|
[pixel shader]
|
||||||
|
float4 main(const in float4 position : SV_Position) : SV_Target
|
||||||
|
{
|
||||||
|
return float4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
[test]
|
||||||
|
clear rtv 0 0.0 0.0 0.0 1.0
|
||||||
|
todo(glsl) draw triangle list 27
|
||||||
|
probe rtv 0 (160, 120) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (160, 240) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (160, 360) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (320, 120) f32(1.0, 1.0, 1.0, 1.0)
|
||||||
|
todo(sm<6) probe rtv 0 (320, 240) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
todo(sm<6) probe rtv 0 (320, 360) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (480, 120) f32(1.0, 1.0, 1.0, 1.0)
|
||||||
|
todo(sm<6) probe rtv 0 (480, 240) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
todo(sm<6) probe rtv 0 (480, 360) f32(0.0, 0.0, 0.0, 1.0)
|
||||||
|
probe rtv 0 (320, 239) f32(1.0, 1.0, 1.0, 1.0)
|
||||||
|
|
||||||
[require]
|
[require]
|
||||||
shader model >= 4.0
|
shader model >= 4.0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user