mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-09-19 03:56:10 +08:00
Added reverse-engineered interfaces lib code and hacked up tier1 and mathlib to build against the newer headers.
This commit is contained in:
@ -6,6 +6,7 @@
|
||||
#if !defined(_STATIC_LINKED) || defined(_SHARED_LIB)
|
||||
|
||||
|
||||
#include "mathlib/mathlib.h"
|
||||
#include "mathlib/vector.h"
|
||||
#include "mathlib/anorms.h"
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
//=====================================================================================//
|
||||
|
||||
#include <halton.h>
|
||||
#include "mathlib/mathlib.h"
|
||||
|
||||
HaltonSequenceGenerator_t::HaltonSequenceGenerator_t(int b)
|
||||
{
|
||||
|
@ -6,6 +6,7 @@
|
||||
//
|
||||
//=============================================================================//
|
||||
#include <quantize.h>
|
||||
#include "tier0/basetypes.h"
|
||||
|
||||
#define N_EXTRAVALUES 1
|
||||
#define N_DIMENSIONS (3+N_EXTRAVALUES)
|
||||
|
@ -27,12 +27,12 @@ void LightDesc_t::RecalculateDerivedValues(void)
|
||||
{
|
||||
// note - this quantity is very sensitive to round off error. the sse
|
||||
// reciprocal approximation won't cut it here.
|
||||
OneOver_ThetaDot_Minus_PhiDot=1.0/spread;
|
||||
m_OneOverThetaDotMinusPhiDot=1.0/spread;
|
||||
}
|
||||
else
|
||||
{
|
||||
// hard falloff instead of divide by zero
|
||||
OneOver_ThetaDot_Minus_PhiDot=1.0;
|
||||
m_OneOverThetaDotMinusPhiDot=1.0;
|
||||
}
|
||||
}
|
||||
if (m_Type==MATERIAL_LIGHT_DIRECTIONAL)
|
||||
@ -140,7 +140,7 @@ void LightDesc_t::ComputeLightAtPoints( const FourVectors &pos, const FourVector
|
||||
fltx4 dot2=SubSIMD(Four_Zeros,delta*m_Direction); // dot position with spot light dir for cone falloff
|
||||
|
||||
|
||||
fltx4 cone_falloff_scale=MulSIMD(ReplicateX4(OneOver_ThetaDot_Minus_PhiDot),
|
||||
fltx4 cone_falloff_scale=MulSIMD(ReplicateX4(m_OneOverThetaDotMinusPhiDot),
|
||||
SubSIMD(dot2,ReplicateX4(m_PhiDot)));
|
||||
cone_falloff_scale=MinSIMD(cone_falloff_scale,Four_Ones);
|
||||
|
||||
@ -236,7 +236,7 @@ void LightDesc_t::ComputeNonincidenceLightAtPoints( const FourVectors &pos, Four
|
||||
fltx4 dot2=SubSIMD(Four_Zeros,delta*m_Direction); // dot position with spot light dir for cone falloff
|
||||
|
||||
|
||||
fltx4 cone_falloff_scale=MulSIMD(ReplicateX4(OneOver_ThetaDot_Minus_PhiDot),
|
||||
fltx4 cone_falloff_scale=MulSIMD(ReplicateX4(m_OneOverThetaDotMinusPhiDot),
|
||||
SubSIMD(dot2,ReplicateX4(m_PhiDot)));
|
||||
cone_falloff_scale=MinSIMD(cone_falloff_scale,Four_Ones);
|
||||
|
||||
|
20
mathlib/mathlib.sln
Normal file
20
mathlib/mathlib.sln
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mathlib", "mathlib.vcxproj", "{884C66F2-7F84-4570-AE6C-B634C1113D69}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{884C66F2-7F84-4570-AE6C-B634C1113D69}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{884C66F2-7F84-4570-AE6C-B634C1113D69}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{884C66F2-7F84-4570-AE6C-B634C1113D69}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{884C66F2-7F84-4570-AE6C-B634C1113D69}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
407
mathlib/mathlib.vcproj
Normal file
407
mathlib/mathlib.vcproj
Normal file
@ -0,0 +1,407 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="mathlib"
|
||||
ProjectGUID="{884C66F2-7F84-4570-AE6C-B634C1113D69}"
|
||||
RootNamespace="mathlib"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\Debug"
|
||||
IntermediateDirectory=".\Debug"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine=""
|
||||
ExcludedFromBuild="false"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UseUnicodeResponseFiles="false"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\public;..\public\tier0;..\public\tier1;..\public\mathlib"
|
||||
PreprocessorDefinitions="WIN32;_WIN32;_DEBUG;DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
|
||||
StringPooling="true"
|
||||
MinimalRebuild="true"
|
||||
ExceptionHandling="0"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
BufferSecurityCheck="false"
|
||||
FloatingPointModel="2"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
OpenMP="false"
|
||||
UsePrecompiledHeader="0"
|
||||
ExpandAttributedSource="false"
|
||||
AssemblerOutput="0"
|
||||
AssemblerListingLocation="$(IntDir)/"
|
||||
ObjectFile="$(IntDir)/"
|
||||
ProgramDataBaseFileName="$(IntDir)/"
|
||||
GenerateXMLDocumentationFiles="false"
|
||||
BrowseInformation="0"
|
||||
BrowseInformationFile="$(IntDir)/"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="4"
|
||||
CompileAs="2"
|
||||
ErrorReporting="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
CommandLine=""
|
||||
ExcludedFromBuild="false"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
UseUnicodeResponseFiles="false"
|
||||
OutputFile="..\lib\public\mathlib.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
OutputFile="$(OutDir)/mathlib.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
ExcludedFromBuild="false"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\Release"
|
||||
IntermediateDirectory=".\Release"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine=""
|
||||
ExcludedFromBuild="false"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UseUnicodeResponseFiles="false"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
AdditionalIncludeDirectories="..\public;..\public\tier0;..\public\tier1;..\public\mathlib"
|
||||
PreprocessorDefinitions="WIN32;_WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="0"
|
||||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="true"
|
||||
FloatingPointModel="2"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
OpenMP="false"
|
||||
UsePrecompiledHeader="0"
|
||||
ExpandAttributedSource="false"
|
||||
AssemblerOutput="0"
|
||||
AssemblerListingLocation="$(IntDir)/"
|
||||
ObjectFile="$(IntDir)/"
|
||||
ProgramDataBaseFileName="$(IntDir)/"
|
||||
GenerateXMLDocumentationFiles="false"
|
||||
BrowseInformation="0"
|
||||
BrowseInformationFile="$(IntDir)/"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="1"
|
||||
CompileAs="2"
|
||||
ErrorReporting="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
CommandLine=""
|
||||
ExcludedFromBuild="false"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
UseUnicodeResponseFiles="false"
|
||||
OutputFile="..\lib\public\mathlib.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
OutputFile="$(OutDir)/mathlib.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
ExcludedFromBuild="false"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\3dnow.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\anorms.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\bumpvects.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\color_conversion.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\halton.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IceKey.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\imagequant.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\lightdesc.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\mathlib_base.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\polyhedron.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\powsse.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\quantize.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\randsse.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\simdvectormatrix.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\sparse_convolution_noise.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\sse.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\sseconst.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ssenoise.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\vector.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\vmatrix.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Public Header Files"
|
||||
Filter="h"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\amd3dx.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\anorms.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\bumpvects.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\compressed_3d_unitvec.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\compressed_light_cube.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\compressed_vector.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\halton.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\IceKey.H"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\lightdesc.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\math_pfns.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\mathlib.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\noise.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\polyhedron.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\quantize.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\simdvectormatrix.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\ssemath.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\ssequaternion.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\vector.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\vector2d.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\vector4d.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\vmatrix.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\public\mathlib\vplane.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\3dnow.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\noisedata.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\sse.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
212
mathlib/mathlib.vcxproj
Normal file
212
mathlib/mathlib.vcxproj
Normal file
@ -0,0 +1,212 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{884C66F2-7F84-4570-AE6C-B634C1113D69}</ProjectGuid>
|
||||
<RootNamespace>mathlib</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\lib\public\</OutDir>
|
||||
<PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreBuildEventUseInBuild>
|
||||
<PreLinkEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreLinkEventUseInBuild>
|
||||
<PostBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PostBuildEventUseInBuild>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\lib\public\</OutDir>
|
||||
<PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</PreBuildEventUseInBuild>
|
||||
<PreLinkEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</PreLinkEventUseInBuild>
|
||||
<PostBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</PostBuildEventUseInBuild>
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<PreBuildEvent>
|
||||
<Command>
|
||||
</Command>
|
||||
</PreBuildEvent>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\public;..\public\tier0;..\public\tier1;..\public\mathlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_WIN32;COMPILER_MSVC;COMPILER_MSVC32;_DEBUG;DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<OpenMPSupport>false</OpenMPSupport>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<ExpandAttributedSource>false</ExpandAttributedSource>
|
||||
<AssemblerOutput>
|
||||
</AssemblerOutput>
|
||||
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
|
||||
<GenerateXMLDocumentationFiles>false</GenerateXMLDocumentationFiles>
|
||||
<BrowseInformation>
|
||||
</BrowseInformation>
|
||||
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<ErrorReporting>Prompt</ErrorReporting>
|
||||
</ClCompile>
|
||||
<PreLinkEvent>
|
||||
<Command>
|
||||
</Command>
|
||||
</PreLinkEvent>
|
||||
<Lib>
|
||||
<UseUnicodeResponseFiles>false</UseUnicodeResponseFiles>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
</Lib>
|
||||
<Xdcmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
</Xdcmake>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>$(OutDir)mathlib.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<PreBuildEvent>
|
||||
<Command>
|
||||
</Command>
|
||||
</PreBuildEvent>
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>..\public;..\public\tier0;..\public\tier1;..\public\mathlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_WIN32;COMPILER_MSVC;COMPILER_MSVC32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<OpenMPSupport>false</OpenMPSupport>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<ExpandAttributedSource>false</ExpandAttributedSource>
|
||||
<AssemblerOutput>
|
||||
</AssemblerOutput>
|
||||
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
|
||||
<GenerateXMLDocumentationFiles>false</GenerateXMLDocumentationFiles>
|
||||
<BrowseInformation>
|
||||
</BrowseInformation>
|
||||
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<ErrorReporting>Prompt</ErrorReporting>
|
||||
</ClCompile>
|
||||
<PreLinkEvent>
|
||||
<Command>
|
||||
</Command>
|
||||
</PreLinkEvent>
|
||||
<Lib>
|
||||
<UseUnicodeResponseFiles>false</UseUnicodeResponseFiles>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
</Lib>
|
||||
<Xdcmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
</Xdcmake>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>$(OutDir)mathlib.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="anorms.cpp" />
|
||||
<ClCompile Include="bumpvects.cpp" />
|
||||
<ClCompile Include="color_conversion.cpp" />
|
||||
<ClCompile Include="halton.cpp" />
|
||||
<ClCompile Include="IceKey.cpp" />
|
||||
<ClCompile Include="imagequant.cpp" />
|
||||
<ClCompile Include="lightdesc.cpp" />
|
||||
<ClCompile Include="mathlib_base.cpp" />
|
||||
<ClCompile Include="polyhedron.cpp" />
|
||||
<ClCompile Include="powsse.cpp" />
|
||||
<ClCompile Include="quantize.cpp" />
|
||||
<ClCompile Include="randsse.cpp" />
|
||||
<ClCompile Include="simdvectormatrix.cpp" />
|
||||
<ClCompile Include="sparse_convolution_noise.cpp" />
|
||||
<ClCompile Include="sse.cpp" />
|
||||
<ClCompile Include="sseconst.cpp" />
|
||||
<ClCompile Include="ssenoise.cpp" />
|
||||
<ClCompile Include="vector.cpp" />
|
||||
<ClCompile Include="vmatrix.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\public\mathlib\amd3dx.h" />
|
||||
<ClInclude Include="..\public\mathlib\anorms.h" />
|
||||
<ClInclude Include="..\public\mathlib\bumpvects.h" />
|
||||
<ClInclude Include="..\public\mathlib\compressed_3d_unitvec.h" />
|
||||
<ClInclude Include="..\public\mathlib\compressed_light_cube.h" />
|
||||
<ClInclude Include="..\public\mathlib\compressed_vector.h" />
|
||||
<ClInclude Include="..\public\mathlib\halton.h" />
|
||||
<ClInclude Include="..\public\mathlib\IceKey.H" />
|
||||
<ClInclude Include="..\public\mathlib\lightdesc.h" />
|
||||
<ClInclude Include="..\public\mathlib\math_pfns.h" />
|
||||
<ClInclude Include="..\public\mathlib\mathlib.h" />
|
||||
<ClInclude Include="..\public\mathlib\noise.h" />
|
||||
<ClInclude Include="..\public\mathlib\polyhedron.h" />
|
||||
<ClInclude Include="..\public\mathlib\quantize.h" />
|
||||
<ClInclude Include="..\public\mathlib\simdvectormatrix.h" />
|
||||
<ClInclude Include="..\public\mathlib\ssemath.h" />
|
||||
<ClInclude Include="..\public\mathlib\ssequaternion.h" />
|
||||
<ClInclude Include="..\public\mathlib\vector.h" />
|
||||
<ClInclude Include="..\public\mathlib\vector2d.h" />
|
||||
<ClInclude Include="..\public\mathlib\vector4d.h" />
|
||||
<ClInclude Include="..\public\mathlib\vmatrix.h" />
|
||||
<ClInclude Include="..\public\mathlib\vplane.h" />
|
||||
<ClInclude Include="3dnow.h" />
|
||||
<ClInclude Include="noisedata.h" />
|
||||
<ClInclude Include="sse.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
153
mathlib/mathlib.vcxproj.filters
Normal file
153
mathlib/mathlib.vcxproj.filters
Normal file
@ -0,0 +1,153 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{00f9c713-dc8b-4f56-b6a8-0f7252d1a270}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Public Header Files">
|
||||
<UniqueIdentifier>{c9fa2f3a-719d-4fab-aa39-714cf6391317}</UniqueIdentifier>
|
||||
<Extensions>h</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{7f621938-4fe8-4d3f-a1b1-e00a41531e16}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="anorms.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bumpvects.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="color_conversion.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="halton.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="IceKey.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="imagequant.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="lightdesc.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="mathlib_base.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="polyhedron.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="powsse.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="quantize.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="randsse.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="simdvectormatrix.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="sparse_convolution_noise.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="sse.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="sseconst.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ssenoise.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="vector.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="vmatrix.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\public\mathlib\amd3dx.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\anorms.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\bumpvects.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\compressed_3d_unitvec.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\compressed_light_cube.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\compressed_vector.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\halton.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\IceKey.H">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\lightdesc.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\math_pfns.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\mathlib.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\noise.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\polyhedron.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\quantize.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\simdvectormatrix.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\ssemath.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\ssequaternion.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\vector.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\vector2d.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\vector4d.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\vmatrix.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\public\mathlib\vplane.h">
|
||||
<Filter>Public Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="3dnow.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="noisedata.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="sse.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -24,13 +24,12 @@
|
||||
#include "mathlib/mathlib.h"
|
||||
#include "mathlib/vector.h"
|
||||
#if !defined( _X360 )
|
||||
#include "mathlib/amd3dx.h"
|
||||
#include "3dnow.h"
|
||||
#include "sse.h"
|
||||
#endif
|
||||
|
||||
#include "mathlib/ssemath.h"
|
||||
#include "mathlib/ssequaternion.h"
|
||||
#include "mathlib/vplane.h"
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
@ -42,7 +41,6 @@ bool s_bMathlibInitialized = false;
|
||||
void Sys_Error (char *error, ...);
|
||||
#endif
|
||||
|
||||
const Vector vec3_origin(0,0,0);
|
||||
const QAngle vec3_angle(0,0,0);
|
||||
const Vector vec3_invalid( FLT_MAX, FLT_MAX, FLT_MAX );
|
||||
const int nanmask = 255<<23;
|
||||
@ -63,10 +61,10 @@ float _rsqrtf(float x)
|
||||
return 1.f / _sqrtf( x );
|
||||
}
|
||||
|
||||
float FASTCALL _VectorNormalize (Vector& vec)
|
||||
float VectorNormalize (Vector& vec)
|
||||
{
|
||||
#ifdef _VPROF_MATHLIB
|
||||
VPROF_BUDGET( "_VectorNormalize", "Mathlib" );
|
||||
VPROF_BUDGET( "VectorNormalize", "Mathlib" );
|
||||
#endif
|
||||
Assert( s_bMathlibInitialized );
|
||||
float radius = sqrtf(vec.x*vec.x + vec.y*vec.y + vec.z*vec.z);
|
||||
@ -81,6 +79,8 @@ float FASTCALL _VectorNormalize (Vector& vec)
|
||||
return radius;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// TODO: Add fast C VectorNormalizeFast.
|
||||
// Perhaps use approximate rsqrt trick, if the accuracy isn't too bad.
|
||||
void FASTCALL _VectorNormalizeFast (Vector& vec)
|
||||
@ -109,7 +109,6 @@ float _InvRSquared(const float* v)
|
||||
float (*pfSqrt)(float x) = _sqrtf;
|
||||
float (*pfRSqrt)(float x) = _rsqrtf;
|
||||
float (*pfRSqrtFast)(float x) = _rsqrtf;
|
||||
float (FASTCALL *pfVectorNormalize)(Vector& v) = _VectorNormalize;
|
||||
void (FASTCALL *pfVectorNormalizeFast)(Vector& v) = _VectorNormalizeFast;
|
||||
float (*pfInvRSquared)(const float* v) = _InvRSquared;
|
||||
void (*pfFastSinCos)(float x, float* s, float* c) = SinCos;
|
||||
@ -382,9 +381,9 @@ void MatrixInvert( const matrix3x4_t& in, matrix3x4_t& out )
|
||||
Assert( s_bMathlibInitialized );
|
||||
if ( &in == &out )
|
||||
{
|
||||
swap(out[0][1],out[1][0]);
|
||||
swap(out[0][2],out[2][0]);
|
||||
swap(out[1][2],out[2][1]);
|
||||
V_swap(out[0][1],out[1][0]);
|
||||
V_swap(out[0][2],out[2][0]);
|
||||
V_swap(out[1][2],out[2][1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1266,18 +1265,18 @@ bool SolveInverseQuadraticMonotonic( float x1, float y1, float x2, float y2, flo
|
||||
// first, sort parameters
|
||||
if (x1>x2)
|
||||
{
|
||||
swap(x1,x2);
|
||||
swap(y1,y2);
|
||||
V_swap(x1,x2);
|
||||
V_swap(y1,y2);
|
||||
}
|
||||
if (x2>x3)
|
||||
{
|
||||
swap(x2,x3);
|
||||
swap(y2,y3);
|
||||
V_swap(x2,x3);
|
||||
V_swap(y2,y3);
|
||||
}
|
||||
if (x1>x2)
|
||||
{
|
||||
swap(x1,x2);
|
||||
swap(y1,y2);
|
||||
V_swap(x1,x2);
|
||||
V_swap(y1,y2);
|
||||
}
|
||||
// this code is not fast. what it does is when the curve would be non-monotonic, slowly shifts
|
||||
// the center point closer to the linear line between the endpoints. Should anyone need htis
|
||||
@ -3198,7 +3197,6 @@ bool CalcLineToLineIntersectionSegment(
|
||||
#pragma optimize( "", on )
|
||||
#endif
|
||||
|
||||
static bool s_b3DNowEnabled = false;
|
||||
static bool s_bMMXEnabled = false;
|
||||
static bool s_bSSEEnabled = false;
|
||||
static bool s_bSSE2Enabled = false;
|
||||
@ -3218,7 +3216,6 @@ void MathLib_Init( float gamma, float texGamma, float brightness, int overbright
|
||||
pfSqrt = _sqrtf;
|
||||
pfRSqrt = _rsqrtf;
|
||||
pfRSqrtFast = _rsqrtf;
|
||||
pfVectorNormalize = _VectorNormalize;
|
||||
pfVectorNormalizeFast = _VectorNormalizeFast;
|
||||
pfInvRSquared = _InvRSquared;
|
||||
pfFastSinCos = SinCos;
|
||||
@ -3235,31 +3232,11 @@ void MathLib_Init( float gamma, float texGamma, float brightness, int overbright
|
||||
s_bMMXEnabled = false;
|
||||
}
|
||||
|
||||
// SSE Generally performs better than 3DNow when present, so this is placed
|
||||
// first to allow SSE to override these settings.
|
||||
if ( bAllow3DNow && pi.m_b3DNow )
|
||||
{
|
||||
s_b3DNowEnabled = true;
|
||||
|
||||
// Select the 3DNow specific routines if available;
|
||||
pfVectorNormalize = _3DNow_VectorNormalize;
|
||||
pfVectorNormalizeFast = _3DNow_VectorNormalizeFast;
|
||||
pfInvRSquared = _3DNow_InvRSquared;
|
||||
pfSqrt = _3DNow_Sqrt;
|
||||
pfRSqrt = _3DNow_RSqrt;
|
||||
pfRSqrtFast = _3DNow_RSqrt;
|
||||
}
|
||||
else
|
||||
{
|
||||
s_b3DNowEnabled = false;
|
||||
}
|
||||
|
||||
if ( bAllowSSE && pi.m_bSSE )
|
||||
{
|
||||
s_bSSEEnabled = true;
|
||||
|
||||
// Select the SSE specific routines if available
|
||||
pfVectorNormalize = _VectorNormalize;
|
||||
pfVectorNormalizeFast = _SSE_VectorNormalizeFast;
|
||||
pfInvRSquared = _SSE_InvRSquared;
|
||||
pfSqrt = _SSE_Sqrt;
|
||||
@ -3295,12 +3272,6 @@ void MathLib_Init( float gamma, float texGamma, float brightness, int overbright
|
||||
BuildGammaTable( gamma, texGamma, brightness, overbright );
|
||||
}
|
||||
|
||||
bool MathLib_3DNowEnabled( void )
|
||||
{
|
||||
Assert( s_bMathlibInitialized );
|
||||
return s_b3DNowEnabled;
|
||||
}
|
||||
|
||||
bool MathLib_MMXEnabled( void )
|
||||
{
|
||||
Assert( s_bMathlibInitialized );
|
||||
@ -3319,20 +3290,6 @@ bool MathLib_SSE2Enabled( void )
|
||||
return s_bSSE2Enabled;
|
||||
}
|
||||
|
||||
float Approach( float target, float value, float speed )
|
||||
{
|
||||
float delta = target - value;
|
||||
|
||||
if ( delta > speed )
|
||||
value += speed;
|
||||
else if ( delta < -speed )
|
||||
value -= speed;
|
||||
else
|
||||
value = target;
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
// BUGBUG: Why doesn't this call angle diff?!?!?
|
||||
float ApproachAngle( float target, float value, float speed )
|
||||
{
|
||||
@ -3816,8 +3773,8 @@ void GeneratePerspectiveFrustum( const Vector& origin, const Vector &forward,
|
||||
float flIntercept = DotProduct( origin, forward );
|
||||
|
||||
// Setup the near and far planes.
|
||||
frustum.SetPlane( FRUSTUM_FARZ, PLANE_ANYZ, -forward, -flZFar - flIntercept );
|
||||
frustum.SetPlane( FRUSTUM_NEARZ, PLANE_ANYZ, forward, flZNear + flIntercept );
|
||||
frustum.SetPlane( FRUSTUM_FARZ, -forward, -flZFar - flIntercept );
|
||||
frustum.SetPlane( FRUSTUM_NEARZ, forward, flZNear + flIntercept );
|
||||
|
||||
flFovX *= 0.5f;
|
||||
flFovY *= 0.5f;
|
||||
@ -3834,8 +3791,8 @@ void GeneratePerspectiveFrustum( const Vector& origin, const Vector &forward,
|
||||
VectorNormalize( normalPos );
|
||||
VectorNormalize( normalNeg );
|
||||
|
||||
frustum.SetPlane( FRUSTUM_LEFT, PLANE_ANYZ, normalPos, normalPos.Dot( origin ) );
|
||||
frustum.SetPlane( FRUSTUM_RIGHT, PLANE_ANYZ, normalNeg, normalNeg.Dot( origin ) );
|
||||
frustum.SetPlane( FRUSTUM_LEFT, normalPos, normalPos.Dot( origin ) );
|
||||
frustum.SetPlane( FRUSTUM_RIGHT,normalNeg, normalNeg.Dot( origin ) );
|
||||
|
||||
VectorMA( up, flTanY, forward, normalPos );
|
||||
VectorMA( normalPos, -2.0f, up, normalNeg );
|
||||
@ -3843,8 +3800,8 @@ void GeneratePerspectiveFrustum( const Vector& origin, const Vector &forward,
|
||||
VectorNormalize( normalPos );
|
||||
VectorNormalize( normalNeg );
|
||||
|
||||
frustum.SetPlane( FRUSTUM_BOTTOM, PLANE_ANYZ, normalPos, normalPos.Dot( origin ) );
|
||||
frustum.SetPlane( FRUSTUM_TOP, PLANE_ANYZ, normalNeg, normalNeg.Dot( origin ) );
|
||||
frustum.SetPlane( FRUSTUM_BOTTOM, normalPos, normalPos.Dot( origin ) );
|
||||
frustum.SetPlane( FRUSTUM_TOP, normalNeg, normalNeg.Dot( origin ) );
|
||||
}
|
||||
|
||||
|
||||
@ -3859,23 +3816,40 @@ void GeneratePerspectiveFrustum( const Vector& origin, const QAngle &angles, flo
|
||||
GeneratePerspectiveFrustum( origin, vecForward, vecRight, vecUp, flZNear, flZFar, flFovX, flFovY, frustum );
|
||||
}
|
||||
|
||||
inline cplane_t *ToPlane(cplane_t *out, const Frustum_t &frustum, int type)
|
||||
{
|
||||
Vector vecNormal;
|
||||
float dist;
|
||||
|
||||
frustum.GetPlane(type, &vecNormal, &dist);
|
||||
|
||||
out->normal = vecNormal;
|
||||
out->dist = dist;
|
||||
out->type = PLANE_ANYZ;
|
||||
out->signbits = SignbitsForPlane(out);
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
bool R_CullBox( const Vector& mins, const Vector& maxs, const Frustum_t &frustum )
|
||||
{
|
||||
return (( BoxOnPlaneSide( mins, maxs, frustum.GetPlane(FRUSTUM_RIGHT) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, frustum.GetPlane(FRUSTUM_LEFT) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, frustum.GetPlane(FRUSTUM_TOP) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, frustum.GetPlane(FRUSTUM_BOTTOM) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, frustum.GetPlane(FRUSTUM_NEARZ) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, frustum.GetPlane(FRUSTUM_FARZ) ) == 2 ) );
|
||||
cplane_t p;
|
||||
return (( BoxOnPlaneSide( mins, maxs, ToPlane(&p, frustum, FRUSTUM_RIGHT) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, ToPlane(&p, frustum, FRUSTUM_LEFT) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, ToPlane(&p, frustum, FRUSTUM_TOP) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, ToPlane(&p, frustum, FRUSTUM_BOTTOM) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, ToPlane(&p, frustum, FRUSTUM_NEARZ) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, ToPlane(&p, frustum, FRUSTUM_FARZ) ) == 2 ) );
|
||||
}
|
||||
|
||||
bool R_CullBoxSkipNear( const Vector& mins, const Vector& maxs, const Frustum_t &frustum )
|
||||
{
|
||||
return (( BoxOnPlaneSide( mins, maxs, frustum.GetPlane(FRUSTUM_RIGHT) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, frustum.GetPlane(FRUSTUM_LEFT) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, frustum.GetPlane(FRUSTUM_TOP) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, frustum.GetPlane(FRUSTUM_BOTTOM) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, frustum.GetPlane(FRUSTUM_FARZ) ) == 2 ) );
|
||||
cplane_t p;
|
||||
return (( BoxOnPlaneSide( mins, maxs, ToPlane(&p, frustum, FRUSTUM_RIGHT) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, ToPlane(&p, frustum, FRUSTUM_LEFT) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, ToPlane(&p, frustum, FRUSTUM_TOP) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, ToPlane(&p, frustum, FRUSTUM_BOTTOM) ) == 2 ) ||
|
||||
( BoxOnPlaneSide( mins, maxs, ToPlane(&p, frustum, FRUSTUM_FARZ) ) == 2 ) );
|
||||
}
|
||||
|
||||
|
||||
@ -4088,3 +4062,208 @@ void GetInterpolationData( float const *pKnotPositions,
|
||||
*pInterpolationValue = FLerp( 0, 1, 0, flSizeOfGap, flOffsetFromStartOfGap );
|
||||
return;
|
||||
}
|
||||
|
||||
/* Reverse engineered code ahead */
|
||||
|
||||
void fourplanes_t::ComputeSignbits()
|
||||
{
|
||||
xSign = CmpLtSIMD(nX, Four_Zeros);
|
||||
ySign = CmpLtSIMD(nY, Four_Zeros);
|
||||
zSign = CmpLtSIMD(nZ, Four_Zeros);
|
||||
nXAbs = fabs(nX);
|
||||
nYAbs = fabs(nY);
|
||||
nZAbs = fabs(nZ);
|
||||
}
|
||||
|
||||
void fourplanes_t::Set4Planes( const VPlane *pPlanes )
|
||||
{
|
||||
nX = *(fltx4 *)pPlanes;
|
||||
nY = *(fltx4 *)++pPlanes;
|
||||
nZ = *(fltx4 *)++pPlanes;
|
||||
dist = *(fltx4 *)++pPlanes;
|
||||
TransposeSIMD(nX, nY, nZ, dist);
|
||||
|
||||
ComputeSignbits();
|
||||
}
|
||||
|
||||
void fourplanes_t::Set2Planes( const VPlane *pPlanes )
|
||||
{
|
||||
nX = *(fltx4 *)pPlanes;
|
||||
nY = *(fltx4 *)++pPlanes;
|
||||
nZ = Four_Zeros;
|
||||
dist = Four_Zeros;
|
||||
TransposeSIMD(nX, nY, nZ, dist);
|
||||
|
||||
ComputeSignbits();
|
||||
}
|
||||
|
||||
void fourplanes_t::Get4Planes( VPlane *pPlanesOut )
|
||||
{
|
||||
fltx4 tempX = nX;
|
||||
fltx4 tempY = nY;
|
||||
fltx4 tempZ = nZ;
|
||||
fltx4 tempDist = dist;
|
||||
|
||||
TransposeSIMD(tempX, tempY, tempZ, tempDist);
|
||||
|
||||
*(fltx4 *)pPlanesOut = tempX;
|
||||
*(fltx4 *)++pPlanesOut = tempY;
|
||||
*(fltx4 *)++pPlanesOut = tempZ;
|
||||
*(fltx4 *)++pPlanesOut = tempDist;
|
||||
}
|
||||
|
||||
void fourplanes_t::Get2Planes( VPlane *pPlanesOut )
|
||||
{
|
||||
fltx4 tempX = nX;
|
||||
fltx4 tempY = nY;
|
||||
fltx4 tempZ = nZ;
|
||||
fltx4 tempDist = dist;
|
||||
|
||||
TransposeSIMD(tempX, tempY, tempZ, tempDist);
|
||||
|
||||
*(fltx4 *)pPlanesOut = tempX;
|
||||
*(fltx4 *)++pPlanesOut = tempY;
|
||||
}
|
||||
|
||||
void fourplanes_t::GetPlane( int index, Vector *pNormal, float *pDist ) const
|
||||
{
|
||||
pNormal->x = SubFloat(nX, index);
|
||||
pNormal->y = SubFloat(nY, index);
|
||||
pNormal->z = SubFloat(nZ, index);
|
||||
*pDist = SubFloat(dist, index);
|
||||
}
|
||||
|
||||
void fourplanes_t::SetPlane( int index, const Vector &vecNormal, float planeDist )
|
||||
{
|
||||
SubFloat(nX, index) = vecNormal.x;
|
||||
SubFloat(nY, index) = vecNormal.y;
|
||||
SubFloat(nZ, index) = vecNormal.z;
|
||||
SubFloat(dist, index) = planeDist;
|
||||
ComputeSignbits();
|
||||
}
|
||||
|
||||
Frustum_t::Frustum_t()
|
||||
{
|
||||
memset(planes, 0, sizeof(planes));
|
||||
}
|
||||
|
||||
void Frustum_t::SetPlane( int i, const Vector &vecNormal, float dist )
|
||||
{
|
||||
if (i < 4)
|
||||
planes[0].SetPlane(i, vecNormal, dist);
|
||||
else
|
||||
planes[1].SetPlane(i - 4, vecNormal, dist);
|
||||
}
|
||||
|
||||
void Frustum_t::GetPlane( int i, Vector *pNormalOut, float *pDistOut) const
|
||||
{
|
||||
if (i < 4)
|
||||
planes[0].GetPlane(i, pNormalOut, pDistOut);
|
||||
else
|
||||
planes[1].GetPlane(i - 4, pNormalOut, pDistOut);
|
||||
}
|
||||
|
||||
void Frustum_t::SetPlanes( const VPlane *pPlanes )
|
||||
{
|
||||
planes[0].Set4Planes(pPlanes);
|
||||
planes[1].Set2Planes(pPlanes + 4);
|
||||
}
|
||||
|
||||
void Frustum_t::GetPlanes( VPlane *pPlanesOut )
|
||||
{
|
||||
planes[0].Get4Planes(pPlanesOut);
|
||||
planes[1].Get2Planes(pPlanesOut + 4);
|
||||
}
|
||||
|
||||
bool Frustum_t::CullBox( const Vector &mins, const Vector &maxs ) const
|
||||
{
|
||||
fltx4 mins4 = LoadUnalignedSIMD(&mins);
|
||||
fltx4 maxs4 = LoadUnalignedSIMD(&maxs);
|
||||
fltx4 minX = SplatXSIMD(mins4);
|
||||
fltx4 minY = SplatYSIMD(mins4);
|
||||
fltx4 minZ = SplatZSIMD(mins4);
|
||||
fltx4 maxX = SplatXSIMD(maxs4);
|
||||
fltx4 maxY = SplatYSIMD(maxs4);
|
||||
fltx4 maxZ = SplatZSIMD(maxs4);
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
fltx4 xTotalBack = MulSIMD(planes[i].nX, MaskedAssign(planes[i].xSign, minX, maxX));
|
||||
fltx4 yTotalBack = MulSIMD(planes[i].nY, MaskedAssign(planes[i].ySign, minY, maxY));
|
||||
fltx4 zTotalBack = MulSIMD(planes[i].nZ, MaskedAssign(planes[i].zSign, minZ, maxZ));
|
||||
fltx4 dotBack = AddSIMD(xTotalBack, AddSIMD(yTotalBack, zTotalBack));
|
||||
|
||||
if (IsAnyNegative(CmpLtSIMD(dotBack, planes[i].dist)))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Frustum_t::CullBoxCenterExtents( const Vector ¢er, const Vector &extents ) const
|
||||
{
|
||||
fltx4 center4 = LoadUnalignedSIMD(¢er);
|
||||
fltx4 extents4 = LoadUnalignedSIMD(&extents);
|
||||
fltx4 centerX = SplatXSIMD(center4);
|
||||
fltx4 centerY = SplatYSIMD(center4);
|
||||
fltx4 centerZ = SplatZSIMD(center4);
|
||||
fltx4 extentsX = SplatXSIMD(extents4);
|
||||
fltx4 extentsY = SplatYSIMD(extents4);
|
||||
fltx4 extentsZ = SplatZSIMD(extents4);
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
fltx4 xTotalBack = AddSIMD(MulSIMD(planes[i].nX, centerX), MulSIMD(planes[i].nXAbs, extentsX));
|
||||
fltx4 yTotalBack = AddSIMD(MulSIMD(planes[i].nY, centerY), MulSIMD(planes[i].nYAbs, extentsY));
|
||||
fltx4 zTotalBack = AddSIMD(MulSIMD(planes[i].nZ, centerZ), MulSIMD(planes[i].nZAbs, extentsZ));
|
||||
fltx4 dotBack = AddSIMD(xTotalBack, AddSIMD(yTotalBack, zTotalBack));
|
||||
|
||||
if (IsAnyNegative(CmpLtSIMD(dotBack, planes[i].dist)))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Frustum_t::CullBox( const fltx4 &fl4Mins, const fltx4 &fl4Maxs ) const
|
||||
{
|
||||
fltx4 minX = SplatXSIMD(fl4Mins);
|
||||
fltx4 minY = SplatYSIMD(fl4Mins);
|
||||
fltx4 minZ = SplatZSIMD(fl4Mins);
|
||||
fltx4 maxX = SplatXSIMD(fl4Maxs);
|
||||
fltx4 maxY = SplatYSIMD(fl4Maxs);
|
||||
fltx4 maxZ = SplatZSIMD(fl4Maxs);
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
fltx4 xTotalBack = MulSIMD(planes[i].nX, MaskedAssign(planes[i].xSign, minX, maxX));
|
||||
fltx4 yTotalBack = MulSIMD(planes[i].nY, MaskedAssign(planes[i].ySign, minY, maxY));
|
||||
fltx4 zTotalBack = MulSIMD(planes[i].nZ, MaskedAssign(planes[i].zSign, minZ, maxZ));
|
||||
fltx4 dotBack = AddSIMD(xTotalBack, AddSIMD(yTotalBack, zTotalBack));
|
||||
|
||||
if (IsAnyNegative(CmpLtSIMD(dotBack, planes[i].dist)))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Frustum_t::CullBoxCenterExtents( const fltx4 &fl4Center, const fltx4 &fl4Extents ) const
|
||||
{
|
||||
fltx4 centerX = SplatXSIMD(fl4Center);
|
||||
fltx4 centerY = SplatYSIMD(fl4Center);
|
||||
fltx4 centerZ = SplatZSIMD(fl4Center);
|
||||
fltx4 extentsX = SplatXSIMD(fl4Extents);
|
||||
fltx4 extentsY = SplatYSIMD(fl4Extents);
|
||||
fltx4 extentsZ = SplatZSIMD(fl4Extents);
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
fltx4 xTotalBack = AddSIMD(MulSIMD(planes[i].nX, centerX), MulSIMD(planes[i].nXAbs, extentsX));
|
||||
fltx4 yTotalBack = AddSIMD(MulSIMD(planes[i].nY, centerY), MulSIMD(planes[i].nYAbs, extentsY));
|
||||
fltx4 zTotalBack = AddSIMD(MulSIMD(planes[i].nZ, centerZ), MulSIMD(planes[i].nZAbs, extentsZ));
|
||||
fltx4 dotBack = AddSIMD(xTotalBack, AddSIMD(yTotalBack, zTotalBack));
|
||||
|
||||
if (IsAnyNegative(CmpLtSIMD(dotBack, planes[i].dist)))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -21,6 +21,8 @@
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include "tier0/basetypes.h"
|
||||
|
||||
static int current_ndims;
|
||||
static struct QuantizedValue *current_root;
|
||||
static int current_ssize;
|
||||
|
@ -172,7 +172,7 @@ float _SSE_RSqrtFast(float x)
|
||||
{
|
||||
Assert( s_bMathlibInitialized );
|
||||
|
||||
float rroot;
|
||||
float rroot = 0.0f;
|
||||
#ifdef _WIN32
|
||||
_asm
|
||||
{
|
||||
|
@ -6,7 +6,8 @@
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#include "mathlib/mathlib.h"
|
||||
#include "mathlib/vector.h"
|
||||
|
||||
Vector vec3_origin(0,0,0);
|
||||
const Vector vec3_origin(0,0,0);
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "basetypes.h"
|
||||
#include "mathlib/vmatrix.h"
|
||||
#include "mathlib/mathlib.h"
|
||||
#include "mathlib/ssemath.h"
|
||||
#include <string.h>
|
||||
#include "mathlib/vector4d.h"
|
||||
#include "tier0/dbg.h"
|
||||
@ -1177,27 +1178,27 @@ void FrustumPlanesFromMatrix( const VMatrix &clipToWorld, Frustum_t &frustum )
|
||||
|
||||
FrustumPlanesFromMatrixHelper( clipToWorld,
|
||||
Vector( 0.0f, 0.0f, 0.0f ), Vector( 1.0f, 0.0f, 0.0f ), Vector( 0.0f, 1.0f, 0.0f ), normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_NEARZ, PLANE_ANYZ, normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_NEARZ, normal, dist );
|
||||
|
||||
FrustumPlanesFromMatrixHelper( clipToWorld,
|
||||
Vector( 0.0f, 0.0f, 1.0f ), Vector( 0.0f, 1.0f, 1.0f ), Vector( 1.0f, 0.0f, 1.0f ), normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_FARZ, PLANE_ANYZ, normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_FARZ, normal, dist );
|
||||
|
||||
FrustumPlanesFromMatrixHelper( clipToWorld,
|
||||
Vector( 1.0f, 0.0f, 0.0f ), Vector( 1.0f, 1.0f, 1.0f ), Vector( 1.0f, 1.0f, 0.0f ), normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_RIGHT, PLANE_ANYZ, normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_RIGHT, normal, dist );
|
||||
|
||||
FrustumPlanesFromMatrixHelper( clipToWorld,
|
||||
Vector( 0.0f, 0.0f, 0.0f ), Vector( 0.0f, 1.0f, 1.0f ), Vector( 0.0f, 0.0f, 1.0f ), normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_LEFT, PLANE_ANYZ, normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_LEFT, normal, dist );
|
||||
|
||||
FrustumPlanesFromMatrixHelper( clipToWorld,
|
||||
Vector( 1.0f, 1.0f, 0.0f ), Vector( 1.0f, 1.0f, 1.0f ), Vector( 0.0f, 1.0f, 1.0f ), normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_TOP, PLANE_ANYZ, normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_TOP, normal, dist );
|
||||
|
||||
FrustumPlanesFromMatrixHelper( clipToWorld,
|
||||
Vector( 1.0f, 0.0f, 0.0f ), Vector( 0.0f, 0.0f, 1.0f ), Vector( 1.0f, 0.0f, 1.0f ), normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_BOTTOM, PLANE_ANYZ, normal, dist );
|
||||
frustum.SetPlane( FRUSTUM_BOTTOM, normal, dist );
|
||||
}
|
||||
|
||||
void MatrixBuildOrtho( VMatrix& dst, double left, double top, double right, double bottom, double zNear, double zFar )
|
||||
|
Reference in New Issue
Block a user