버전
menu_open
link

include/AK/Plugin/PluginServices/AkVectorValueRamp.h

Go to the documentation of this file.
00001 
00002 //
00003 // Copyright (c) 2010 Audiokinetic Inc. / All Rights Reserved
00004 //
00006 
00007 #ifndef _AK_VECTORVALUERAMP_H_
00008 #define _AK_VECTORVALUERAMP_H_
00009 
00010 #include <AK/SoundEngine/Common/AkSimd.h>
00011 
00014 class CAkVectorValueRampV4
00015 {
00016 public:
00017 
00018     AkForceInline AKSIMD_V4F32 Setup( AkReal32 in_fStartValue, AkReal32 in_fStopValue, AkUInt32 in_uNumFrames )
00019     {
00020         const AkReal32 fIncrement = (in_fStopValue-in_fStartValue)/in_uNumFrames;
00021         const AkReal32 f4xInc = 4.f*fIncrement;
00022         vIncrement = AKSIMD_LOAD1_V4F32( f4xInc);
00023         AK_ALIGN_SIMD( AkReal32 fVal[4] );
00024         fVal[0] = in_fStartValue;
00025         fVal[1] = fVal[0] + fIncrement;
00026         fVal[2] = fVal[1] + fIncrement;
00027         fVal[3] = fVal[2] + fIncrement;
00028         vValueRamp = AKSIMD_LOAD_V4F32( fVal );
00029         return vValueRamp;
00030     }
00031 
00032     AkForceInline AKSIMD_V4F32 Tick( )
00033     {
00034         vValueRamp = AKSIMD_ADD_V4F32( vValueRamp, vIncrement );
00035         return vValueRamp;
00036     }
00037 
00038 private:
00039     AKSIMD_V4F32 vIncrement;
00040     AKSIMD_V4F32 vValueRamp;
00041 };
00042 
00043 
00044 #ifdef AKSIMD_V2F32_SUPPORTED
00045 
00046 
00047 class CAkVectorValueRampV2
00048 {
00049 public:
00050 
00051     AkForceInline AKSIMD_V2F32 Setup( AkReal32 in_fStartValue, AkReal32 in_fStopValue, AkUInt32 in_uNumFrames )
00052     {
00053         const AkReal32 fIncrement = (in_fStopValue-in_fStartValue)/in_uNumFrames;
00054         const AkReal32 f2xInc = 2.f*fIncrement;
00055         vIncrement = AKSIMD_SET_V2F32( f2xInc );
00056         AKSIMD_BUILD_V2F32( const AKSIMD_V2F32 vStartOffset, 0.f, fIncrement );
00057         AKSIMD_V2F32 l_vValueRamp = AKSIMD_SET_V2F32( in_fStartValue );
00058         l_vValueRamp = AKSIMD_ADD_V2F32( l_vValueRamp, vStartOffset );
00059         vValueRamp = l_vValueRamp;
00060         return l_vValueRamp;
00061     }
00062 
00063     AkForceInline AKSIMD_V2F32 Tick( )
00064     {
00065         vValueRamp = AKSIMD_ADD_V2F32( vValueRamp, vIncrement );
00066         return vValueRamp;
00067     }
00068 
00069 private:
00070     AKSIMD_V2F32 vIncrement;
00071     AKSIMD_V2F32 vValueRamp;
00072 };
00073 #endif
00074 
00075 // By default, CAkVectorValueRamp uses the V4 implementation.
00076 typedef CAkVectorValueRampV4 CAkVectorValueRamp;
00077 
00078 #endif //_AK_VECTORVALUERAMP_H_

이 페이지가 도움이 되었나요?

지원이 필요하신가요?

질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!

지원 페이지를 방문해 주세요

작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.

프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.

Wwise를 시작해 보세요