1
- /************************************************************************************************************************************\
2
- |* *|
3
- |* Copyright © 2012 NVIDIA Corporation. All rights reserved. *|
4
- |* *|
5
- |* NOTICE TO USER: *|
6
- |* *|
7
- |* This software is subject to NVIDIA ownership rights under U.S. and international Copyright laws. *|
8
- |* *|
9
- |* This software and the information contained herein are PROPRIETARY and CONFIDENTIAL to NVIDIA *|
10
- |* and are being provided solely under the terms and conditions of an NVIDIA software license agreement. *|
11
- |* Otherwise, you have no rights to use or access this software in any manner. *|
12
- |* *|
13
- |* If not covered by the applicable NVIDIA software license agreement: *|
14
- |* NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. *|
15
- |* IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. *|
16
- |* NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, *|
17
- |* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE. *|
18
- |* IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, *|
19
- |* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, *|
20
- |* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOURCE CODE. *|
21
- |* *|
22
- |* U.S. Government End Users. *|
23
- |* This software is a "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT 1995), *|
24
- |* consisting of "commercial computer software" and "commercial computer software documentation" *|
25
- |* as such terms are used in 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government only as a commercial end item. *|
26
- |* Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), *|
27
- |* all U.S. Government End Users acquire the software with only those rights set forth herein. *|
28
- |* *|
29
- |* Any use of this software in individual and commercial software must include, *|
30
- |* in the user documentation and internal comments to the code, *|
31
- |* the above Disclaimer (as applicable) and U.S. Government End Users Notice. *|
32
- |* *|
33
- \************************************************************************************************************************************/
34
-
1
+ /*********************************************************************************************************\
2
+ |* *|
3
+ |* SPDX-FileCopyrightText: Copyright (c) 2019-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. *|
4
+ |* SPDX-License-Identifier: MIT *|
5
+ |* *|
6
+ |* Permission is hereby granted, free of charge, to any person obtaining a *|
7
+ |* copy of this software and associated documentation files (the "Software"), *|
8
+ |* to deal in the Software without restriction, including without limitation *|
9
+ |* the rights to use, copy, modify, merge, publish, distribute, sublicense, *|
10
+ |* and/or sell copies of the Software, and to permit persons to whom the *|
11
+ |* Software is furnished to do so, subject to the following conditions: *|
12
+ |* *|
13
+ |* The above copyright notice and this permission notice shall be included in *|
14
+ |* all copies or substantial portions of the Software. *|
15
+ |* *|
16
+ |* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *|
17
+ |* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *|
18
+ |* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *|
19
+ |* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *|
20
+ |* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *|
21
+ |* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *|
22
+ |* DEALINGS IN THE SOFTWARE. *|
23
+ |* *|
24
+ |* *|
25
+ \*********************************************************************************************************/
35
26
////////////////////////// NVIDIA SHADER EXTENSIONS /////////////////
36
27
// internal functions
37
28
// Functions in this file are not expected to be called by apps directly
@@ -764,4 +755,201 @@ int __NvShflGeneric(int val, uint srcLane, uint maskClampVal, out uint laneValid
764
755
765
756
laneValid = asuint (g_NvidiaExt .IncrementCounter ());
766
757
return g_NvidiaExt .IncrementCounter ();
767
- }
758
+ }
759
+
760
+ //----------------------------------------------------------------------------//
761
+
762
+ // DXR RayQuery functions
763
+
764
+ #if __SHADER_TARGET_MAJOR > 6 || (__SHADER_TARGET_MAJOR == 6 && __SHADER_TARGET_MINOR >= 5 )
765
+
766
+ uint __NvRtGetCandidateClusterID (uint rqFlags )
767
+ {
768
+ uint index = g_NvidiaExt .IncrementCounter ();
769
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_GET_CANDIDATE_CLUSTER_ID ;
770
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
771
+ return g_NvidiaExt .IncrementCounter ();
772
+ }
773
+
774
+ uint __NvRtGetCommittedClusterID (uint rqFlags )
775
+ {
776
+ uint index = g_NvidiaExt .IncrementCounter ();
777
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_GET_COMMITTED_CLUSTER_ID ;
778
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
779
+ return g_NvidiaExt .IncrementCounter ();
780
+ }
781
+
782
+ float3x3 __NvRtCandidateTriangleObjectPositions (uint rqFlags )
783
+ {
784
+ uint index = g_NvidiaExt .IncrementCounter ();
785
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_CANDIDATE_TRIANGLE_OBJECT_POSITIONS ;
786
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
787
+
788
+ float3x3 ret ;
789
+ ret [0 ][0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
790
+ ret [0 ][1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
791
+ ret [0 ][2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
792
+ ret [1 ][0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
793
+ ret [1 ][1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
794
+ ret [1 ][2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
795
+ ret [2 ][0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
796
+ ret [2 ][1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
797
+ ret [2 ][2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
798
+ return ret ;
799
+ }
800
+
801
+ float3x3 __NvRtCommittedTriangleObjectPositions (uint rqFlags )
802
+ {
803
+ uint index = g_NvidiaExt .IncrementCounter ();
804
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_COMMITTED_TRIANGLE_OBJECT_POSITIONS ;
805
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
806
+
807
+ float3x3 ret ;
808
+ ret [0 ][0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
809
+ ret [0 ][1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
810
+ ret [0 ][2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
811
+ ret [1 ][0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
812
+ ret [1 ][1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
813
+ ret [1 ][2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
814
+ ret [2 ][0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
815
+ ret [2 ][1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
816
+ ret [2 ][2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
817
+ return ret ;
818
+ }
819
+
820
+ bool __NvRtCandidateIsNonOpaqueSphere (uint rqFlags )
821
+ {
822
+ uint index = g_NvidiaExt .IncrementCounter ();
823
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_CANDIDATE_IS_NONOPAQUE_SPHERE ;
824
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
825
+ uint ret = g_NvidiaExt .IncrementCounter ();
826
+ return ret != 0 ;
827
+ }
828
+
829
+ bool __NvRtCandidateIsNonOpaqueLss (uint rqFlags )
830
+ {
831
+ uint index = g_NvidiaExt .IncrementCounter ();
832
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_CANDIDATE_IS_NONOPAQUE_LSS ;
833
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
834
+ uint ret = g_NvidiaExt .IncrementCounter ();
835
+ return ret != 0 ;
836
+ }
837
+
838
+ float __NvRtCandidateLssHitParameter (uint rqFlags )
839
+ {
840
+ uint index = g_NvidiaExt .IncrementCounter ();
841
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_CANDIDATE_LSS_HIT_PARAMETER ;
842
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
843
+ float ret = asfloat (g_NvidiaExt .IncrementCounter ());
844
+ return ret ;
845
+ }
846
+
847
+ float4 __NvRtCandidateSphereObjectPositionAndRadius (uint rqFlags )
848
+ {
849
+ uint index = g_NvidiaExt .IncrementCounter ();
850
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_CANDIDATE_SPHERE_OBJECT_POSITION_AND_RADIUS ;
851
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
852
+
853
+ float4 ret ;
854
+ ret [0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
855
+ ret [1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
856
+ ret [2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
857
+ ret [3 ] = asfloat (g_NvidiaExt .IncrementCounter ());
858
+ return ret ;
859
+ }
860
+
861
+ float2x4 __NvRtCandidateLssObjectPositionsAndRadii (uint rqFlags )
862
+ {
863
+ uint index = g_NvidiaExt .IncrementCounter ();
864
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_CANDIDATE_LSS_OBJECT_POSITIONS_AND_RADII ;
865
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
866
+
867
+ float2x4 ret ;
868
+ ret [0 ][0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
869
+ ret [0 ][1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
870
+ ret [0 ][2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
871
+ ret [0 ][3 ] = asfloat (g_NvidiaExt .IncrementCounter ());
872
+ ret [1 ][0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
873
+ ret [1 ][1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
874
+ ret [1 ][2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
875
+ ret [1 ][3 ] = asfloat (g_NvidiaExt .IncrementCounter ());
876
+ return ret ;
877
+ }
878
+
879
+ float __NvRtCandidateBuiltinPrimitiveRayT (uint rqFlags )
880
+ {
881
+ uint index = g_NvidiaExt .IncrementCounter ();
882
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_CANDIDATE_BUILTIN_PRIMITIVE_RAY_T ;
883
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
884
+ float ret = asfloat (g_NvidiaExt .IncrementCounter ());
885
+ return ret ;
886
+ }
887
+
888
+ bool __NvRtCommittedIsSphere (uint rqFlags )
889
+ {
890
+ uint index = g_NvidiaExt .IncrementCounter ();
891
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_COMMITTED_IS_SPHERE ;
892
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
893
+ uint ret = g_NvidiaExt .IncrementCounter ();
894
+ return ret != 0 ;
895
+ }
896
+
897
+ bool __NvRtCommittedIsLss (uint rqFlags )
898
+ {
899
+ uint index = g_NvidiaExt .IncrementCounter ();
900
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_COMMITTED_IS_LSS ;
901
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
902
+ uint ret = g_NvidiaExt .IncrementCounter ();
903
+ return ret != 0 ;
904
+ }
905
+
906
+ float __NvRtCommittedLssHitParameter (uint rqFlags )
907
+ {
908
+ uint index = g_NvidiaExt .IncrementCounter ();
909
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_COMMITTED_LSS_HIT_PARAMETER ;
910
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
911
+ float ret = asfloat (g_NvidiaExt .IncrementCounter ());
912
+ return ret ;
913
+ }
914
+
915
+ float4 __NvRtCommittedSphereObjectPositionAndRadius (uint rqFlags )
916
+ {
917
+ uint index = g_NvidiaExt .IncrementCounter ();
918
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_COMMITTED_SPHERE_OBJECT_POSITION_AND_RADIUS ;
919
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
920
+
921
+ float4 ret ;
922
+ ret [0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
923
+ ret [1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
924
+ ret [2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
925
+ ret [3 ] = asfloat (g_NvidiaExt .IncrementCounter ());
926
+ return ret ;
927
+ }
928
+
929
+ float2x4 __NvRtCommittedLssObjectPositionsAndRadii (uint rqFlags )
930
+ {
931
+ uint index = g_NvidiaExt .IncrementCounter ();
932
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_COMMITTED_LSS_OBJECT_POSITIONS_AND_RADII ;
933
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
934
+
935
+ float2x4 ret ;
936
+ ret [0 ][0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
937
+ ret [0 ][1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
938
+ ret [0 ][2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
939
+ ret [0 ][3 ] = asfloat (g_NvidiaExt .IncrementCounter ());
940
+ ret [1 ][0 ] = asfloat (g_NvidiaExt .IncrementCounter ());
941
+ ret [1 ][1 ] = asfloat (g_NvidiaExt .IncrementCounter ());
942
+ ret [1 ][2 ] = asfloat (g_NvidiaExt .IncrementCounter ());
943
+ ret [1 ][3 ] = asfloat (g_NvidiaExt .IncrementCounter ());
944
+ return ret ;
945
+ }
946
+
947
+ void __NvRtCommitNonOpaqueBuiltinPrimitiveHit (uint rqFlags )
948
+ {
949
+ uint index = g_NvidiaExt .IncrementCounter ();
950
+ g_NvidiaExt [index ].opcode = NV_EXTN_OP_RT_COMMIT_NONOPAQUE_BUILTIN_PRIMITIVE_HIT ;
951
+ g_NvidiaExt [index ].src0u .x = rqFlags ;
952
+ uint handle = g_NvidiaExt .IncrementCounter ();
953
+ }
954
+
955
+ #endif
0 commit comments