5
5
use core:: arch:: asm;
6
6
use spirv_std:: spirv;
7
7
8
- fn sample_proj_lod (
9
- coord : glam:: Vec4 ,
10
- ddx : glam:: Vec2 ,
11
- ddy : glam:: Vec2 ,
12
- offset_x : i32 ,
13
- offset_y : i32 ,
14
- ) -> glam:: Vec4 {
8
+ fn sample_proj_lod ( coord : glam:: Vec4 , ddx : glam:: Vec2 , ddy : glam:: Vec2 ) -> glam:: Vec4 {
15
9
unsafe {
16
10
let mut result = glam:: Vec4 :: default ( ) ;
17
11
let index = 0u32 ;
18
12
asm ! (
19
13
"OpDecorate %image_2d_var DescriptorSet 0" ,
20
14
"OpDecorate %image_2d_var Binding 0" ,
21
15
"%uint = OpTypeInt 32 0" ,
22
- "%int = OpTypeInt 32 1" ,
23
16
"%float = OpTypeFloat 32" ,
24
- "%v2int = OpTypeVector %int 2" ,
25
17
"%uint_0 = OpConstant %uint 0" ,
26
- "%int_0 = OpConstant %int 0" ,
27
18
"%image_2d = OpTypeImage %float Dim2D 0 0 0 1 Unknown" ,
28
19
"%sampled_image_2d = OpTypeSampledImage %image_2d" ,
29
20
"%image_array = OpTypeRuntimeArray %sampled_image_2d" ,
@@ -40,23 +31,18 @@ fn sample_proj_lod(
40
31
"%coord = OpLoad _ {0}" ,
41
32
"%ddx = OpLoad _ {3}" ,
42
33
"%ddy = OpLoad _ {4}" ,
43
- "%offset_x = OpLoad _ {5}" ,
44
- "%offset_y = OpLoad _ {6}" ,
45
- "%const_offset = OpConstantComposite %v2int %int_0 %int_0" ,
46
- "%result = OpImageSampleProjExplicitLod _ %25 %coord Grad|ConstOffset %ddx %ddy %const_offset" ,
34
+ "%result = OpImageSampleProjExplicitLod typeof*{2} %25 %coord Grad %ddx %ddy" ,
47
35
"OpStore {2} %result" ,
48
36
in( reg) & coord,
49
37
in( reg) & index,
50
38
in( reg) & mut result,
51
39
in( reg) & ddx,
52
40
in( reg) & ddy,
53
- in( reg) & offset_x,
54
- in( reg) & offset_y,
55
41
) ;
56
42
result
57
43
}
58
44
}
59
45
#[ spirv( fragment) ]
60
46
pub fn main ( ) {
61
- sample_proj_lod ( glam:: Vec4 :: ZERO , glam:: Vec2 :: ZERO , glam:: Vec2 :: ZERO , 0 , 0 ) ;
47
+ sample_proj_lod ( glam:: Vec4 :: ZERO , glam:: Vec2 :: ZERO , glam:: Vec2 :: ZERO ) ;
62
48
}
0 commit comments