00001 /******************************************************************************* 00002 The content of this file includes portions of the AUDIOKINETIC Wwise Technology 00003 released in source code form as part of the SDK installer package. 00004 00005 Commercial License Usage 00006 00007 Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology 00008 may use this file in accordance with the end user license agreement provided 00009 with the software or, alternatively, in accordance with the terms contained in a 00010 written agreement between you and Audiokinetic Inc. 00011 00012 Apache License Usage 00013 00014 Alternatively, this file may be used under the Apache License, Version 2.0 (the 00015 "Apache License"); you may not use this file except in compliance with the 00016 Apache License. You may obtain a copy of the Apache License at 00017 http://www.apache.org/licenses/LICENSE-2.0. 00018 00019 Unless required by applicable law or agreed to in writing, software distributed 00020 under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 00021 OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for 00022 the specific language governing permissions and limitations under the License. 00023 00024 Version: <VERSION> Build: <BUILDNUMBER> 00025 Copyright (c) <COPYRIGHTYEAR> Audiokinetic Inc. 00026 *******************************************************************************/ 00027 00028 /// \file 00029 /// Floating point performance utilities. 00030 00031 #ifndef _AK_FP_UTILS_H_ 00032 #define _AK_FP_UTILS_H_ 00033 00034 #include <AK/SoundEngine/Common/AkTypes.h> 00035 00036 #define AK_FSEL( __a__, __b__, __c__) (((__a__) >= 0) ? (__b__) : (__c__)) 00037 00038 /// Branchless (where available) version returning minimum value between two AkReal32 values 00039 static AkForceInline AkReal32 AK_FPMin( AkReal32 fA, AkReal32 fB ) 00040 { 00041 return (fA < fB ? fA : fB); 00042 } 00043 00044 /// Branchless (where available) version returning maximum value between two AkReal32 values 00045 static AkForceInline AkReal32 AK_FPMax( AkReal32 fA, AkReal32 fB ) 00046 { 00047 return (fA > fB ? fA : fB); 00048 } 00049 00050 /// Branchless comparison (where available) setting 3rd argument to 4th argument if 1st argument is greater than 2nd argument. 00051 static AkForceInline void AK_FPSetValGT( AkReal32 in_fComparandA, AkReal32 in_fComparandB, AkReal32 & io_fVariableToSet, AkReal32 in_fValueIfTrue ) 00052 { 00053 if ( in_fComparandA > in_fComparandB ) 00054 io_fVariableToSet = in_fValueIfTrue; 00055 } 00056 00057 /// Branchless comparison (where available) setting 3rd argument to 4th argument if 1st argument is greater than equal 2nd argument. 00058 static AkForceInline void AK_FPSetValGTE( AkReal32 in_fComparandA, AkReal32 in_fComparandB, AkReal32 & io_fVariableToSet, AkReal32 in_fValueIfTrue ) 00059 { 00060 if ( in_fComparandA >= in_fComparandB ) 00061 io_fVariableToSet = in_fValueIfTrue; 00062 } 00063 00064 /// Branchless comparison (where available) setting 3rd argument to 4th argument if 1st argument is less than 2nd argument. 00065 static AkForceInline void AK_FPSetValLT( AkReal32 in_fComparandA, AkReal32 in_fComparandB, AkReal32 & io_fVariableToSet, AkReal32 in_fValueIfTrue ) 00066 { 00067 if ( in_fComparandA < in_fComparandB ) 00068 io_fVariableToSet = in_fValueIfTrue; 00069 } 00070 00071 /// Branchless comparison (where available) setting 3rd argument to 4th argument if 1st argument is less than equal 2nd argument. 00072 static AkForceInline void AK_FPSetValLTE( AkReal32 in_fComparandA, AkReal32 in_fComparandB, AkReal32 & io_fVariableToSet, AkReal32 in_fValueIfTrue ) 00073 { 00074 if ( in_fComparandA <= in_fComparandB ) 00075 io_fVariableToSet = in_fValueIfTrue; 00076 } 00077 00078 #endif //_AK_FP_UTILS_H_ 00079
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요