@@ -617,230 +617,34 @@ public vector<float, N> uintBitsToFloat(highp vector<uint, N> x)
617
617
618
618
[__readNone]
619
619
[ForceInline]
620
- uint packUnorm1x16(float c)
621
- {
622
- return uint (round(clamp(c, 0 . 0 , 1 . 0 ) * 65535 . 0 ));
623
- }
624
-
625
- [__readNone]
626
- [ForceInline]
627
- uint packSnorm1x16(float v)
628
- {
629
- return uint (round(clamp(v ,- 1 . 0 , 1 . 0 ) * 32767 . 0 ));
630
- }
631
-
632
- [__readNone]
633
- [ForceInline]
634
- uint packUnorm1x8(float c)
635
- {
636
- return uint (round(clamp(c, 0 . 0 , 1 . 0 ) * 255 . 0 ));
637
- }
638
-
639
- [__readNone]
640
- [ForceInline]
641
- uint packSnorm1x8(float c)
642
- {
643
- return uint (round(clamp(c, - 1 . 0 , 1 . 0 ) * 127 . 0 ));
644
- }
645
-
646
- [__readNone]
647
- [ForceInline]
648
- float unpackUnorm1x16(uint p)
649
- {
650
- const uint wordMask = 0x ffff ;
651
- return float (p & wordMask) / 65535 . 0 ;
652
- }
653
-
654
- [__readNone]
655
- [ForceInline]
656
- float unpackSnorm1x16(uint p)
657
- {
658
- const uint wordMask = 0x ffff ;
659
- return clamp(float (p & wordMask) / 32767 . 0 , - 1 . 0 , 1 . 0 );
660
- }
661
-
662
- [__readNone]
663
- [ForceInline]
664
- float unpackUnorm1x8(uint p)
665
- {
666
- const uint byteMask = 0x ff ;
667
- return float (p & byteMask) / 255 . 0 ;
668
- }
669
-
670
- [__readNone]
671
- [ForceInline]
672
- float unpackSnorm1x8(uint p)
673
- {
674
- const uint byteMask = 0x ff ;
675
- return clamp(float (p & byteMask) / 127 . 0 , - 1 . 0 , 1 . 0 );
676
- }
677
-
678
- [__readNone]
679
- [ForceInline]
680
- [require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
681
- uint float2half(float f)
682
- {
683
- uint u = floatBitsToUint(f);
684
- uint s = ((u >> uint (16 )) & uint (0x 8000 ));
685
- uint e = 0 ;
686
- uint m = ((u >> uint (13 )) & uint (0x 03ff ));
687
- if (m != 0 )
688
- {
689
- e = ((((u & uint (0x 7f800000 )) - uint (0x 38000000 )) >> uint (13 )) & uint (0x 7c00 ));
690
- }
691
- return (s | e | m);
692
- }
693
-
694
- [__readNone]
695
- [ForceInline]
696
- [require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
697
- public uint packUnorm2x16(vec2 v)
698
- {
699
- __target_switch
700
- {
701
- case glsl: __intrinsic_asm " packUnorm2x16" ;
702
- case spirv: return spirv_asm {
703
- result:$$uint = OpExtInst glsl450 PackUnorm2x16 $v
704
- };
705
- default :
706
- return packUnorm1x16(v .x ) | (packUnorm1x16(v.y) << uint (16 ));
707
- }
708
- }
709
-
710
- [__readNone]
711
- [ForceInline]
712
- [require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
713
- public uint packSnorm2x16(vec2 v)
714
- {
715
- __target_switch
716
- {
717
- case glsl: __intrinsic_asm " packSnorm2x16" ;
718
- case spirv: return spirv_asm {
719
- result:$$uint = OpExtInst glsl450 PackSnorm2x16 $v
720
- };
721
- default :
722
- return packSnorm1x16(v .x ) | (packSnorm1x16(v.y) << uint (16 ));
723
- }
724
- }
725
-
726
- [__readNone]
727
- [ForceInline]
728
- [require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
729
- public uint packUnorm4x8(vec4 v)
730
- {
731
- __target_switch
732
- {
733
- case glsl: __intrinsic_asm " packUnorm4x8" ;
734
- case spirv: return spirv_asm {
735
- result:$$uint = OpExtInst glsl450 PackUnorm4x8 $v
736
- };
737
- default :
738
- return packUnorm1x8(v .x ) | (packUnorm1x8(v.y) << uint (8 )) | (packUnorm1x8(v.z) << uint (16 )) | (packUnorm1x8(v.w) << uint (24 ));
739
- }
740
- }
741
-
742
- [__readNone]
743
- [ForceInline]
744
- [require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
745
- public uint packSnorm4x8(vec4 v)
746
- {
747
- __target_switch
748
- {
749
- case glsl: __intrinsic_asm " packSnorm4x8" ;
750
- case spirv: return spirv_asm {
751
- result:$$uint = OpExtInst glsl450 PackSnorm4x8 $v
752
- };
753
- default :
754
- return packSnorm1x8(v .x ) | (packSnorm1x8(v.y) << uint (8 )) | (packSnorm1x8(v.z) << uint (16 )) | (packSnorm1x8(v.w) << uint (24 ));
755
- }
756
- }
757
-
758
- [__readNone]
759
- [ForceInline]
760
- [require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
620
+ [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, pack_vector)]
761
621
public vec2 unpackUnorm2x16(uint p)
762
622
{
763
- __target_switch
764
- {
765
- case glsl: __intrinsic_asm " unpackUnorm2x16" ;
766
- case spirv: return spirv_asm {
767
- result:$$vec2 = OpExtInst glsl450 UnpackUnorm2x16 $p
768
- };
769
- default :
770
- return vec2(unpackUnorm1x16(p & uint (0x ffff )), unpackUnorm1x16(p >> uint (16 )));
771
- }
623
+ return unpackUnorm2x16ToFloat(p);
772
624
}
773
625
774
626
[__readNone]
775
627
[ForceInline]
776
- [require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0 )]
628
+ [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, pack_vector )]
777
629
public vec2 unpackSnorm2x16(uint p)
778
630
{
779
- __target_switch
780
- {
781
- case glsl: __intrinsic_asm " unpackSnorm2x16" ;
782
- case spirv: return spirv_asm {
783
- result:$$vec2 = OpExtInst glsl450 UnpackSnorm2x16 $p
784
- };
785
- default :
786
- return vec2(unpackSnorm1x16(p & uint (0x ffff )), unpackSnorm1x16(p >> uint (16 )));
787
- }
631
+ return unpackSnorm2x16ToFloat(p);
788
632
}
789
633
790
634
[__readNone]
791
635
[ForceInline]
792
- [require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0 )]
636
+ [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, pack_vector )]
793
637
public vec4 unpackUnorm4x8(highp uint p)
794
638
{
795
- __target_switch
796
- {
797
- case glsl: __intrinsic_asm " unpackUnorm4x8" ;
798
- case spirv: return spirv_asm {
799
- result:$$vec4 = OpExtInst glsl450 UnpackUnorm4x8 $p
800
- };
801
- default :
802
- return vec4(
803
- unpackUnorm1x8(p),
804
- unpackUnorm1x8(p >> 8 ),
805
- unpackUnorm1x8(p >> 16 ),
806
- unpackUnorm1x8(p >> 24 ));
807
- }
639
+ return unpackUnorm4x8ToFloat(p);
808
640
}
809
641
810
642
[__readNone]
811
643
[ForceInline]
812
- [require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0 )]
644
+ [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, pack_vector )]
813
645
public vec4 unpackSnorm4x8(highp uint p)
814
646
{
815
- __target_switch
816
- {
817
- case glsl: __intrinsic_asm " unpackSnorm4x8" ;
818
- case spirv: return spirv_asm {
819
- result:$$vec4 = OpExtInst glsl450 UnpackSnorm4x8 $p
820
- };
821
- default :
822
- return vec4(
823
- unpackSnorm1x8(p),
824
- unpackSnorm1x8(p >> 8 ),
825
- unpackSnorm1x8(p >> 16 ),
826
- unpackSnorm1x8(p >> 24 ));
827
- }
828
- }
829
-
830
- [__readNone]
831
- [ForceInline]
832
- [require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
833
- public uint packHalf2x16(vec2 v)
834
- {
835
- __target_switch
836
- {
837
- case glsl: __intrinsic_asm " packHalf2x16" ;
838
- case spirv: return spirv_asm {
839
- result:$$uint = OpExtInst glsl450 PackHalf2x16 $v
840
- };
841
- default :
842
- return float2half(v .x ) | (float2half(v.y) << uint (16 ));
843
- }
647
+ return unpackSnorm4x8ToFloat(p);
844
648
}
845
649
846
650
[__readNone]
@@ -865,18 +669,10 @@ public float half2float(uint h)
865
669
866
670
[__readNone]
867
671
[ForceInline]
868
- [require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0 )]
672
+ [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, pack_vector )]
869
673
public vec2 unpackHalf2x16(uint p)
870
674
{
871
- __target_switch
872
- {
873
- case glsl: __intrinsic_asm " unpackHalf2x16" ;
874
- case spirv: return spirv_asm {
875
- result:$$vec2 = OpExtInst glsl450 UnpackHalf2x16 $p
876
- };
877
- default :
878
- return vec2(half2float(p & uint (0x ffff )), half2float(p >> uint (16 )));
879
- }
675
+ return unpackHalf2x16ToFloat(p);
880
676
}
881
677
882
678
[__readNone]
0 commit comments