Fix errors in new cluster fit compressor.

This commit is contained in:
castano 2012-01-02 08:49:13 +00:00
parent 23bfc1b514
commit f2d90ee844
16 changed files with 677 additions and 632 deletions

View File

@ -20,7 +20,7 @@
</ToolFiles> </ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug-CUDA|Win32"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="1" ConfigurationType="1"
@ -98,7 +98,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug|x64" Name="Debug-CUDA|x64"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="1" ConfigurationType="1"
@ -176,7 +176,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|Win32" Name="Release-CUDA|Win32"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="1" ConfigurationType="1"
@ -262,7 +262,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release-CUDA|x64"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="1" ConfigurationType="1"
@ -344,7 +344,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug (no cuda)|Win32" Name="Debug|Win32"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="1" ConfigurationType="1"
@ -422,7 +422,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug (no cuda)|x64" Name="Debug|x64"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="1" ConfigurationType="1"
@ -497,7 +497,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release (no cuda)|Win32" Name="Release|Win32"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="1" ConfigurationType="1"
@ -576,7 +576,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release (no cuda)|x64" Name="Release|x64"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="1" ConfigurationType="1"

View File

@ -99,417 +99,421 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cubemaptest", "cubemaptest\
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug (no cuda)|Mixed Platforms = Debug (no cuda)|Mixed Platforms
Debug (no cuda)|Win32 = Debug (no cuda)|Win32
Debug (no cuda)|x64 = Debug (no cuda)|x64
Debug|Mixed Platforms = Debug|Mixed Platforms Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32 Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
Release (no cuda)|Mixed Platforms = Release (no cuda)|Mixed Platforms Debug-CUDA|Mixed Platforms = Debug-CUDA|Mixed Platforms
Release (no cuda)|Win32 = Release (no cuda)|Win32 Debug-CUDA|Win32 = Debug-CUDA|Win32
Release (no cuda)|x64 = Release (no cuda)|x64 Debug-CUDA|x64 = Debug-CUDA|x64
Release|Mixed Platforms = Release|Mixed Platforms Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32 Release|Win32 = Release|Win32
Release|x64 = Release|x64 Release|x64 = Release|x64
Release-CUDA|Mixed Platforms = Release-CUDA|Mixed Platforms
Release-CUDA|Win32 = Release-CUDA|Win32
Release-CUDA|x64 = Release-CUDA|x64
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug (no cuda)|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug (no cuda)|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug (no cuda)|Win32.ActiveCfg = Debug (no cuda)|Win32
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug (no cuda)|Win32.Build.0 = Debug (no cuda)|Win32
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug (no cuda)|x64.ActiveCfg = Debug (no cuda)|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug (no cuda)|x64.Build.0 = Debug (no cuda)|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|Mixed Platforms.Build.0 = Debug|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|Mixed Platforms.Build.0 = Debug|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|Win32.ActiveCfg = Debug|Win32 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|Win32.ActiveCfg = Debug|Win32
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|Win32.Build.0 = Debug|Win32 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|Win32.Build.0 = Debug|Win32
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|x64.ActiveCfg = Debug|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|x64.ActiveCfg = Debug|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|x64.Build.0 = Debug|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug|x64.Build.0 = Debug|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release (no cuda)|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug-CUDA|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release (no cuda)|Mixed Platforms.Build.0 = Release (no cuda)|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug-CUDA|Mixed Platforms.Build.0 = Debug-CUDA|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release (no cuda)|Win32.ActiveCfg = Release (no cuda)|Win32 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug-CUDA|Win32.ActiveCfg = Debug-CUDA|Win32
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release (no cuda)|Win32.Build.0 = Release (no cuda)|Win32 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug-CUDA|Win32.Build.0 = Debug-CUDA|Win32
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release (no cuda)|x64.ActiveCfg = Release (no cuda)|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug-CUDA|x64.ActiveCfg = Debug-CUDA|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release (no cuda)|x64.Build.0 = Release (no cuda)|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Debug-CUDA|x64.Build.0 = Debug-CUDA|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|Mixed Platforms.ActiveCfg = Release|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|Mixed Platforms.ActiveCfg = Release|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|Mixed Platforms.Build.0 = Release|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|Mixed Platforms.Build.0 = Release|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|Win32.ActiveCfg = Release|Win32 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|Win32.ActiveCfg = Release|Win32
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|Win32.Build.0 = Release|Win32 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|Win32.Build.0 = Release|Win32
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|x64.ActiveCfg = Release|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|x64.ActiveCfg = Release|x64
{1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|x64.Build.0 = Release|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release|x64.Build.0 = Release|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug (no cuda)|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release-CUDA|Mixed Platforms.ActiveCfg = Release-CUDA|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug (no cuda)|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release-CUDA|Mixed Platforms.Build.0 = Release-CUDA|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug (no cuda)|Win32.ActiveCfg = Debug (no cuda)|Win32 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release-CUDA|Win32.ActiveCfg = Release-CUDA|Win32
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug (no cuda)|Win32.Build.0 = Debug (no cuda)|Win32 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release-CUDA|Win32.Build.0 = Release-CUDA|Win32
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug (no cuda)|x64.ActiveCfg = Debug (no cuda)|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release-CUDA|x64.ActiveCfg = Release-CUDA|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug (no cuda)|x64.Build.0 = Debug (no cuda)|x64 {1AEB7681-57D8-48EE-813D-5C41CC38B647}.Release-CUDA|x64.Build.0 = Release-CUDA|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|Mixed Platforms.Build.0 = Debug|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|Mixed Platforms.Build.0 = Debug|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|Win32.ActiveCfg = Debug|Win32 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|Win32.ActiveCfg = Debug|Win32
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|Win32.Build.0 = Debug|Win32 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|Win32.Build.0 = Debug|Win32
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|x64.ActiveCfg = Debug|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|x64.ActiveCfg = Debug|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|x64.Build.0 = Debug|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug|x64.Build.0 = Debug|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release (no cuda)|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug-CUDA|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release (no cuda)|Mixed Platforms.Build.0 = Release (no cuda)|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug-CUDA|Mixed Platforms.Build.0 = Debug-CUDA|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release (no cuda)|Win32.ActiveCfg = Release (no cuda)|Win32 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug-CUDA|Win32.ActiveCfg = Debug-CUDA|Win32
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release (no cuda)|Win32.Build.0 = Release (no cuda)|Win32 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug-CUDA|Win32.Build.0 = Debug-CUDA|Win32
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release (no cuda)|x64.ActiveCfg = Release (no cuda)|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug-CUDA|x64.ActiveCfg = Debug-CUDA|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release (no cuda)|x64.Build.0 = Release (no cuda)|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Debug-CUDA|x64.Build.0 = Debug-CUDA|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|Mixed Platforms.ActiveCfg = Release|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|Mixed Platforms.ActiveCfg = Release|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|Mixed Platforms.Build.0 = Release|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|Mixed Platforms.Build.0 = Release|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|Win32.ActiveCfg = Release|Win32 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|Win32.ActiveCfg = Release|Win32
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|Win32.Build.0 = Release|Win32 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|Win32.Build.0 = Release|Win32
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|x64.ActiveCfg = Release|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|x64.ActiveCfg = Release|x64
{88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|x64.Build.0 = Release|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release|x64.Build.0 = Release|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release-CUDA|Mixed Platforms.ActiveCfg = Release-CUDA|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release-CUDA|Mixed Platforms.Build.0 = Release-CUDA|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release-CUDA|Win32.ActiveCfg = Release-CUDA|Win32
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release-CUDA|Win32.Build.0 = Release-CUDA|Win32
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release-CUDA|x64.ActiveCfg = Release-CUDA|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug (no cuda)|x64.Build.0 = Debug|x64 {88079E38-83AA-4E8A-B18A-66A78D1B058B}.Release-CUDA|x64.Build.0 = Release-CUDA|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|Mixed Platforms.Build.0 = Debug|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|Mixed Platforms.Build.0 = Debug|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|Win32.ActiveCfg = Debug|Win32 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|Win32.ActiveCfg = Debug|Win32
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|Win32.Build.0 = Debug|Win32 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|Win32.Build.0 = Debug|Win32
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|x64.ActiveCfg = Debug|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|x64.ActiveCfg = Debug|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|x64.Build.0 = Debug|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug|x64.Build.0 = Debug|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release (no cuda)|Win32.Build.0 = Release|Win32 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release (no cuda)|x64.ActiveCfg = Release|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release (no cuda)|x64.Build.0 = Release|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Debug-CUDA|x64.Build.0 = Debug|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|Mixed Platforms.ActiveCfg = Release|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|Mixed Platforms.ActiveCfg = Release|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|Mixed Platforms.Build.0 = Release|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|Mixed Platforms.Build.0 = Release|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|Win32.ActiveCfg = Release|Win32 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|Win32.ActiveCfg = Release|Win32
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|Win32.Build.0 = Release|Win32 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|Win32.Build.0 = Release|Win32
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|x64.ActiveCfg = Release|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|x64.ActiveCfg = Release|x64
{4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|x64.Build.0 = Release|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release|x64.Build.0 = Release|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release-CUDA|Mixed Platforms.Build.0 = Release|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release-CUDA|Win32.Build.0 = Release|Win32
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release-CUDA|x64.ActiveCfg = Release|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug (no cuda)|x64.Build.0 = Debug|x64 {4046F392-A18B-4C66-9639-3EABFFF5D531}.Release-CUDA|x64.Build.0 = Release|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|Mixed Platforms.Build.0 = Debug|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|Mixed Platforms.Build.0 = Debug|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|Win32.ActiveCfg = Debug|Win32 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|Win32.ActiveCfg = Debug|Win32
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|Win32.Build.0 = Debug|Win32 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|Win32.Build.0 = Debug|Win32
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|x64.ActiveCfg = Debug|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|x64.ActiveCfg = Debug|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|x64.Build.0 = Debug|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug|x64.Build.0 = Debug|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release (no cuda)|Win32.Build.0 = Release|Win32 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release (no cuda)|x64.ActiveCfg = Release|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release (no cuda)|x64.Build.0 = Release|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Debug-CUDA|x64.Build.0 = Debug|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|Mixed Platforms.ActiveCfg = Release|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|Mixed Platforms.ActiveCfg = Release|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|Mixed Platforms.Build.0 = Release|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|Mixed Platforms.Build.0 = Release|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|Win32.ActiveCfg = Release|Win32 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|Win32.ActiveCfg = Release|Win32
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|Win32.Build.0 = Release|Win32 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|Win32.Build.0 = Release|Win32
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|x64.ActiveCfg = Release|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|x64.ActiveCfg = Release|x64
{F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|x64.Build.0 = Release|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release|x64.Build.0 = Release|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release-CUDA|Mixed Platforms.Build.0 = Release|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{50C465FE-B308-42BC-894D-89484482AF06}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release-CUDA|Win32.Build.0 = Release|Win32
{50C465FE-B308-42BC-894D-89484482AF06}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release-CUDA|x64.ActiveCfg = Release|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Debug (no cuda)|x64.Build.0 = Debug|x64 {F143D180-D4C4-4037-B3DE-BE89A21C8D1D}.Release-CUDA|x64.Build.0 = Release|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Debug|Mixed Platforms.Build.0 = Debug|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Debug|Mixed Platforms.Build.0 = Debug|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Debug|Win32.ActiveCfg = Debug|Win32 {50C465FE-B308-42BC-894D-89484482AF06}.Debug|Win32.ActiveCfg = Debug|Win32
{50C465FE-B308-42BC-894D-89484482AF06}.Debug|Win32.Build.0 = Debug|Win32 {50C465FE-B308-42BC-894D-89484482AF06}.Debug|Win32.Build.0 = Debug|Win32
{50C465FE-B308-42BC-894D-89484482AF06}.Debug|x64.ActiveCfg = Debug|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Debug|x64.ActiveCfg = Debug|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Debug|x64.Build.0 = Debug|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Debug|x64.Build.0 = Debug|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {50C465FE-B308-42BC-894D-89484482AF06}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{50C465FE-B308-42BC-894D-89484482AF06}.Release (no cuda)|Win32.Build.0 = Release|Win32 {50C465FE-B308-42BC-894D-89484482AF06}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{50C465FE-B308-42BC-894D-89484482AF06}.Release (no cuda)|x64.ActiveCfg = Release|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Release (no cuda)|x64.Build.0 = Release|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Debug-CUDA|x64.Build.0 = Debug|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Release|Mixed Platforms.ActiveCfg = Release|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Release|Mixed Platforms.ActiveCfg = Release|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Release|Mixed Platforms.Build.0 = Release|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Release|Mixed Platforms.Build.0 = Release|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Release|Win32.ActiveCfg = Release|Win32 {50C465FE-B308-42BC-894D-89484482AF06}.Release|Win32.ActiveCfg = Release|Win32
{50C465FE-B308-42BC-894D-89484482AF06}.Release|Win32.Build.0 = Release|Win32 {50C465FE-B308-42BC-894D-89484482AF06}.Release|Win32.Build.0 = Release|Win32
{50C465FE-B308-42BC-894D-89484482AF06}.Release|x64.ActiveCfg = Release|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Release|x64.ActiveCfg = Release|x64
{50C465FE-B308-42BC-894D-89484482AF06}.Release|x64.Build.0 = Release|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Release|x64.Build.0 = Release|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Release-CUDA|Mixed Platforms.Build.0 = Release|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {50C465FE-B308-42BC-894D-89484482AF06}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {50C465FE-B308-42BC-894D-89484482AF06}.Release-CUDA|Win32.Build.0 = Release|Win32
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Release-CUDA|x64.ActiveCfg = Release|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug (no cuda)|x64.Build.0 = Debug|x64 {50C465FE-B308-42BC-894D-89484482AF06}.Release-CUDA|x64.Build.0 = Release|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|Mixed Platforms.Build.0 = Debug|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|Mixed Platforms.Build.0 = Debug|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|Win32.ActiveCfg = Debug|Win32 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|Win32.ActiveCfg = Debug|Win32
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|Win32.Build.0 = Debug|Win32 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|Win32.Build.0 = Debug|Win32
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|x64.ActiveCfg = Debug|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|x64.ActiveCfg = Debug|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|x64.Build.0 = Debug|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug|x64.Build.0 = Debug|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release (no cuda)|Win32.Build.0 = Release|Win32 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release (no cuda)|x64.ActiveCfg = Release|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release (no cuda)|x64.Build.0 = Release|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Debug-CUDA|x64.Build.0 = Debug|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|Mixed Platforms.ActiveCfg = Release|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|Mixed Platforms.ActiveCfg = Release|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|Mixed Platforms.Build.0 = Release|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|Mixed Platforms.Build.0 = Release|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|Win32.ActiveCfg = Release|Win32 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|Win32.ActiveCfg = Release|Win32
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|Win32.Build.0 = Release|Win32 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|Win32.Build.0 = Release|Win32
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|x64.ActiveCfg = Release|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|x64.ActiveCfg = Release|x64
{CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|x64.Build.0 = Release|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release|x64.Build.0 = Release|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release-CUDA|Mixed Platforms.Build.0 = Release|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release-CUDA|Win32.Build.0 = Release|Win32
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release-CUDA|x64.ActiveCfg = Release|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug (no cuda)|x64.Build.0 = Debug|x64 {CE017322-01FC-4851-9C8B-64E9A8E26C38}.Release-CUDA|x64.Build.0 = Release|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|Mixed Platforms.Build.0 = Debug|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|Mixed Platforms.Build.0 = Debug|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|Win32.ActiveCfg = Debug|Win32 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|Win32.ActiveCfg = Debug|Win32
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|Win32.Build.0 = Debug|Win32 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|Win32.Build.0 = Debug|Win32
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|x64.ActiveCfg = Debug|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|x64.ActiveCfg = Debug|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|x64.Build.0 = Debug|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug|x64.Build.0 = Debug|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release (no cuda)|Win32.Build.0 = Release|Win32 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release (no cuda)|x64.ActiveCfg = Release|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release (no cuda)|x64.Build.0 = Release|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Debug-CUDA|x64.Build.0 = Debug|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|Mixed Platforms.ActiveCfg = Release|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|Mixed Platforms.ActiveCfg = Release|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|Mixed Platforms.Build.0 = Release|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|Mixed Platforms.Build.0 = Release|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|Win32.ActiveCfg = Release|Win32 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|Win32.ActiveCfg = Release|Win32
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|Win32.Build.0 = Release|Win32 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|Win32.Build.0 = Release|Win32
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|x64.ActiveCfg = Release|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|x64.ActiveCfg = Release|x64
{841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|x64.Build.0 = Release|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release|x64.Build.0 = Release|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release-CUDA|Mixed Platforms.Build.0 = Release|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release-CUDA|Win32.Build.0 = Release|Win32
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release-CUDA|x64.ActiveCfg = Release|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug (no cuda)|x64.Build.0 = Debug|x64 {841B73C5-C679-4EEF-A50A-7D6106642B49}.Release-CUDA|x64.Build.0 = Release|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|Mixed Platforms.Build.0 = Debug|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|Mixed Platforms.Build.0 = Debug|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|Win32.ActiveCfg = Debug|Win32 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|Win32.ActiveCfg = Debug|Win32
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|Win32.Build.0 = Debug|Win32 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|Win32.Build.0 = Debug|Win32
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|x64.ActiveCfg = Debug|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|x64.ActiveCfg = Debug|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|x64.Build.0 = Debug|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug|x64.Build.0 = Debug|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release (no cuda)|Win32.Build.0 = Release|Win32 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release (no cuda)|x64.ActiveCfg = Release|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release (no cuda)|x64.Build.0 = Release|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Debug-CUDA|x64.Build.0 = Debug|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|Mixed Platforms.ActiveCfg = Release|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|Mixed Platforms.ActiveCfg = Release|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|Mixed Platforms.Build.0 = Release|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|Mixed Platforms.Build.0 = Release|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|Win32.ActiveCfg = Release|Win32 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|Win32.ActiveCfg = Release|Win32
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|Win32.Build.0 = Release|Win32 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|Win32.Build.0 = Release|Win32
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|x64.ActiveCfg = Release|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|x64.ActiveCfg = Release|x64
{75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|x64.Build.0 = Release|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release|x64.Build.0 = Release|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release-CUDA|Mixed Platforms.Build.0 = Release|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release-CUDA|Win32.Build.0 = Release|Win32
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release-CUDA|x64.ActiveCfg = Release|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug (no cuda)|x64.Build.0 = Debug|x64 {75A0527D-BFC9-49C3-B46B-CD1A901D5927}.Release-CUDA|x64.Build.0 = Release|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|Mixed Platforms.Build.0 = Debug|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|Mixed Platforms.Build.0 = Debug|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|Win32.ActiveCfg = Debug|Win32 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|Win32.ActiveCfg = Debug|Win32
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|Win32.Build.0 = Debug|Win32 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|Win32.Build.0 = Debug|Win32
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|x64.ActiveCfg = Debug|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|x64.ActiveCfg = Debug|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|x64.Build.0 = Debug|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug|x64.Build.0 = Debug|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release (no cuda)|Win32.Build.0 = Release|Win32 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release (no cuda)|x64.ActiveCfg = Release|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release (no cuda)|x64.Build.0 = Release|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Debug-CUDA|x64.Build.0 = Debug|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|Mixed Platforms.ActiveCfg = Release|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|Mixed Platforms.ActiveCfg = Release|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|Mixed Platforms.Build.0 = Release|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|Mixed Platforms.Build.0 = Release|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|Win32.ActiveCfg = Release|Win32 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|Win32.ActiveCfg = Release|Win32
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|Win32.Build.0 = Release|Win32 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|Win32.Build.0 = Release|Win32
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|x64.ActiveCfg = Release|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|x64.ActiveCfg = Release|x64
{05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|x64.Build.0 = Release|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release|x64.Build.0 = Release|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release-CUDA|Mixed Platforms.Build.0 = Release|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release-CUDA|Win32.Build.0 = Release|Win32
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release-CUDA|x64.ActiveCfg = Release|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug (no cuda)|x64.Build.0 = Debug|x64 {05A59E8B-EA70-4F22-89E8-E0927BA13064}.Release-CUDA|x64.Build.0 = Release|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|Mixed Platforms.Build.0 = Debug|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|Mixed Platforms.Build.0 = Debug|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|Win32.ActiveCfg = Debug|Win32 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|Win32.ActiveCfg = Debug|Win32
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|Win32.Build.0 = Debug|Win32 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|Win32.Build.0 = Debug|Win32
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|x64.ActiveCfg = Debug|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|x64.ActiveCfg = Debug|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|x64.Build.0 = Debug|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug|x64.Build.0 = Debug|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release (no cuda)|Win32.Build.0 = Release|Win32 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release (no cuda)|x64.ActiveCfg = Release|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release (no cuda)|x64.Build.0 = Release|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Debug-CUDA|x64.Build.0 = Debug|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|Mixed Platforms.ActiveCfg = Release|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|Mixed Platforms.ActiveCfg = Release|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|Mixed Platforms.Build.0 = Release|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|Mixed Platforms.Build.0 = Release|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|Win32.ActiveCfg = Release|Win32 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|Win32.ActiveCfg = Release|Win32
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|Win32.Build.0 = Release|Win32 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|Win32.Build.0 = Release|Win32
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|x64.ActiveCfg = Release|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|x64.ActiveCfg = Release|x64
{3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|x64.Build.0 = Release|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release|x64.Build.0 = Release|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release-CUDA|Mixed Platforms.Build.0 = Release|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release-CUDA|Win32.Build.0 = Release|Win32
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release-CUDA|x64.ActiveCfg = Release|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug (no cuda)|x64.Build.0 = Debug|x64 {3BC6D760-91E8-4FFB-BD0E-F86F367AD8EA}.Release-CUDA|x64.Build.0 = Release|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|Mixed Platforms.Build.0 = Debug|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|Mixed Platforms.Build.0 = Debug|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|Win32.ActiveCfg = Debug|Win32 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|Win32.ActiveCfg = Debug|Win32
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|Win32.Build.0 = Debug|Win32 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|Win32.Build.0 = Debug|Win32
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|x64.ActiveCfg = Debug|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|x64.ActiveCfg = Debug|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|x64.Build.0 = Debug|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug|x64.Build.0 = Debug|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release (no cuda)|Win32.Build.0 = Release|Win32 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release (no cuda)|x64.ActiveCfg = Release|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release (no cuda)|x64.Build.0 = Release|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Debug-CUDA|x64.Build.0 = Debug|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|Mixed Platforms.ActiveCfg = Release|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|Mixed Platforms.ActiveCfg = Release|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|Mixed Platforms.Build.0 = Release|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|Mixed Platforms.Build.0 = Release|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|Win32.ActiveCfg = Release|Win32 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|Win32.ActiveCfg = Release|Win32
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|Win32.Build.0 = Release|Win32 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|Win32.Build.0 = Release|Win32
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|x64.ActiveCfg = Release|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|x64.ActiveCfg = Release|x64
{51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|x64.Build.0 = Release|x64 {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release|x64.Build.0 = Release|x64
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|Any CPU {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|x64
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|Any CPU {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release-CUDA|Mixed Platforms.Build.0 = Release|x64
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug (no cuda)|Win32.ActiveCfg = Debug|Any CPU {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug (no cuda)|Win32.Build.0 = Debug|Any CPU {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release-CUDA|Win32.Build.0 = Release|Win32
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug (no cuda)|x64.ActiveCfg = Debug|Any CPU {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release-CUDA|x64.ActiveCfg = Release|x64
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug (no cuda)|x64.Build.0 = Debug|Any CPU {51999D3E-EF22-4BDD-965F-4201034D3DCE}.Release-CUDA|x64.Build.0 = Release|x64
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug|Win32.ActiveCfg = Debug|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug|Win32.Build.0 = Debug|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug|Win32.Build.0 = Debug|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug|x64.ActiveCfg = Debug|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug|x64.ActiveCfg = Debug|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug|x64.Build.0 = Debug|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release (no cuda)|Mixed Platforms.Build.0 = Release|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release (no cuda)|Win32.ActiveCfg = Release|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release (no cuda)|Win32.Build.0 = Release|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug-CUDA|Win32.ActiveCfg = Debug|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release (no cuda)|x64.ActiveCfg = Release|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug-CUDA|Win32.Build.0 = Debug|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Debug-CUDA|x64.ActiveCfg = Debug|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release|Mixed Platforms.Build.0 = Release|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release|Win32.ActiveCfg = Release|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release|Win32.ActiveCfg = Release|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release|Win32.Build.0 = Release|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release|Win32.Build.0 = Release|Any CPU
{CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release|x64.ActiveCfg = Release|Any CPU {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release|x64.ActiveCfg = Release|Any CPU
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|Win32 {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|Any CPU
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|Win32 {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release-CUDA|Mixed Platforms.Build.0 = Release|Any CPU
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release-CUDA|Win32.ActiveCfg = Release|Any CPU
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release-CUDA|Win32.Build.0 = Release|Any CPU
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug (no cuda)|x64.ActiveCfg = Debug|Win32 {CAB55C39-8FA9-4912-98D9-E52669C8911D}.Release-CUDA|x64.ActiveCfg = Release|Any CPU
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug|Win32.ActiveCfg = Debug|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug|Win32.ActiveCfg = Debug|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug|Win32.Build.0 = Debug|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug|Win32.Build.0 = Debug|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug|x64.ActiveCfg = Debug|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug|x64.ActiveCfg = Debug|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Release (no cuda)|Mixed Platforms.Build.0 = Release|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Release (no cuda)|Win32.Build.0 = Release|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Release (no cuda)|x64.ActiveCfg = Release|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Debug-CUDA|x64.ActiveCfg = Debug|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Release|Mixed Platforms.Build.0 = Release|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Release|Mixed Platforms.Build.0 = Release|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Release|Win32.ActiveCfg = Release|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Release|Win32.ActiveCfg = Release|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Release|Win32.Build.0 = Release|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Release|Win32.Build.0 = Release|Win32
{317B694E-B5C1-42A6-956F-FC12B69175A6}.Release|x64.ActiveCfg = Release|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Release|x64.ActiveCfg = Release|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Release-CUDA|Mixed Platforms.Build.0 = Release|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Release-CUDA|Win32.Build.0 = Release|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {317B694E-B5C1-42A6-956F-FC12B69175A6}.Release-CUDA|x64.ActiveCfg = Release|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug (no cuda)|x64.Build.0 = Debug|x64
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|Win32.ActiveCfg = Debug|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|Win32.ActiveCfg = Debug|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|Win32.Build.0 = Debug|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|Win32.Build.0 = Debug|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|x64.ActiveCfg = Debug|x64 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|x64.ActiveCfg = Debug|x64
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|x64.Build.0 = Debug|x64 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug|x64.Build.0 = Debug|x64
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release (no cuda)|Win32.Build.0 = Release|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release (no cuda)|x64.ActiveCfg = Release|x64 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release (no cuda)|x64.Build.0 = Release|x64 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Debug-CUDA|x64.Build.0 = Debug|x64
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|Mixed Platforms.ActiveCfg = Release|x64
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|Mixed Platforms.Build.0 = Release|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|Mixed Platforms.Build.0 = Release|x64
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|Win32.ActiveCfg = Release|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|Win32.ActiveCfg = Release|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|Win32.Build.0 = Release|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|Win32.Build.0 = Release|Win32
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|x64.ActiveCfg = Release|x64 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|x64.ActiveCfg = Release|x64
{7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|x64.Build.0 = Release|x64 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release|x64.Build.0 = Release|x64
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release-CUDA|Mixed Platforms.Build.0 = Release|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug (no cuda)|Win32.ActiveCfg = Debug|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug (no cuda)|Win32.Build.0 = Debug|Win32 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release-CUDA|Win32.Build.0 = Release|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release-CUDA|x64.ActiveCfg = Release|x64
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug (no cuda)|x64.Build.0 = Debug|x64 {7DCF280E-702B-49F3-84A7-AE7E146384D6}.Release-CUDA|x64.Build.0 = Release|x64
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug|Win32.ActiveCfg = Debug|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug|Win32.ActiveCfg = Debug|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug|Win32.Build.0 = Debug|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug|Win32.Build.0 = Debug|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug|x64.ActiveCfg = Debug|x64 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug|x64.ActiveCfg = Debug|x64
{C33787E3-5564-4834-9FE3-A9020455A669}.Debug|x64.Build.0 = Debug|x64 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug|x64.Build.0 = Debug|x64
{C33787E3-5564-4834-9FE3-A9020455A669}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Release (no cuda)|Mixed Platforms.Build.0 = Release|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Release (no cuda)|Win32.ActiveCfg = Release|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Release (no cuda)|Win32.Build.0 = Release|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Release (no cuda)|x64.ActiveCfg = Release|x64 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{C33787E3-5564-4834-9FE3-A9020455A669}.Release (no cuda)|x64.Build.0 = Release|x64 {C33787E3-5564-4834-9FE3-A9020455A669}.Debug-CUDA|x64.Build.0 = Debug|x64
{C33787E3-5564-4834-9FE3-A9020455A669}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Release|Mixed Platforms.Build.0 = Release|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Release|Mixed Platforms.Build.0 = Release|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Release|Win32.ActiveCfg = Release|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Release|Win32.ActiveCfg = Release|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Release|Win32.Build.0 = Release|Win32 {C33787E3-5564-4834-9FE3-A9020455A669}.Release|Win32.Build.0 = Release|Win32
{C33787E3-5564-4834-9FE3-A9020455A669}.Release|x64.ActiveCfg = Release|x64 {C33787E3-5564-4834-9FE3-A9020455A669}.Release|x64.ActiveCfg = Release|x64
{C33787E3-5564-4834-9FE3-A9020455A669}.Release|x64.Build.0 = Release|x64 {C33787E3-5564-4834-9FE3-A9020455A669}.Release|x64.Build.0 = Release|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|x64 {C33787E3-5564-4834-9FE3-A9020455A669}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|Win32
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|x64 {C33787E3-5564-4834-9FE3-A9020455A669}.Release-CUDA|Mixed Platforms.Build.0 = Release|Win32
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug (no cuda)|Win32.ActiveCfg = Debug|x64 {C33787E3-5564-4834-9FE3-A9020455A669}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {C33787E3-5564-4834-9FE3-A9020455A669}.Release-CUDA|Win32.Build.0 = Release|Win32
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug (no cuda)|x64.Build.0 = Debug|x64 {C33787E3-5564-4834-9FE3-A9020455A669}.Release-CUDA|x64.ActiveCfg = Release|x64
{C33787E3-5564-4834-9FE3-A9020455A669}.Release-CUDA|x64.Build.0 = Release|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|Mixed Platforms.Build.0 = Debug|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|Mixed Platforms.Build.0 = Debug|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|Win32.ActiveCfg = Debug|Win32 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|Win32.ActiveCfg = Debug|Win32
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|Win32.Build.0 = Debug|Win32 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|Win32.Build.0 = Debug|Win32
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|x64.ActiveCfg = Debug|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|x64.ActiveCfg = Debug|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|x64.Build.0 = Debug|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug|x64.Build.0 = Debug|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release (no cuda)|Win32.ActiveCfg = Release|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release (no cuda)|x64.ActiveCfg = Release|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release (no cuda)|x64.Build.0 = Release|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Debug-CUDA|x64.Build.0 = Debug|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|Mixed Platforms.ActiveCfg = Release|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|Mixed Platforms.ActiveCfg = Release|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|Mixed Platforms.Build.0 = Release|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|Mixed Platforms.Build.0 = Release|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|Win32.ActiveCfg = Release|Win32 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|Win32.ActiveCfg = Release|Win32
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|Win32.Build.0 = Release|Win32 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|Win32.Build.0 = Release|Win32
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|x64.ActiveCfg = Release|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|x64.ActiveCfg = Release|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|x64.Build.0 = Release|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release|x64.Build.0 = Release|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug (no cuda)|Mixed Platforms.ActiveCfg = Debug|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug (no cuda)|Mixed Platforms.Build.0 = Debug|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release-CUDA|Mixed Platforms.Build.0 = Release|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug (no cuda)|Win32.ActiveCfg = Debug|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug (no cuda)|x64.ActiveCfg = Debug|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release-CUDA|Win32.Build.0 = Release|Win32
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug (no cuda)|x64.Build.0 = Debug|x64 {3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release-CUDA|x64.ActiveCfg = Release|x64
{3DD3A43D-C6EA-460F-821B-6C339A03C5BB}.Release-CUDA|x64.Build.0 = Release|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|Mixed Platforms.Build.0 = Debug|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|Mixed Platforms.Build.0 = Debug|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|Win32.ActiveCfg = Debug|Win32 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|Win32.ActiveCfg = Debug|Win32
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|Win32.Build.0 = Debug|Win32 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|Win32.Build.0 = Debug|Win32
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|x64.ActiveCfg = Debug|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|x64.ActiveCfg = Debug|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|x64.Build.0 = Debug|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug|x64.Build.0 = Debug|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release (no cuda)|Mixed Platforms.ActiveCfg = Release|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug-CUDA|Mixed Platforms.ActiveCfg = Debug|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release (no cuda)|Mixed Platforms.Build.0 = Release|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug-CUDA|Mixed Platforms.Build.0 = Debug|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release (no cuda)|Win32.ActiveCfg = Release|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug-CUDA|Win32.ActiveCfg = Debug|Win32
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release (no cuda)|x64.ActiveCfg = Release|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug-CUDA|Win32.Build.0 = Debug|Win32
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release (no cuda)|x64.Build.0 = Release|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug-CUDA|x64.ActiveCfg = Debug|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Debug-CUDA|x64.Build.0 = Debug|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|Mixed Platforms.ActiveCfg = Release|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|Mixed Platforms.ActiveCfg = Release|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|Mixed Platforms.Build.0 = Release|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|Mixed Platforms.Build.0 = Release|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|Win32.ActiveCfg = Release|Win32 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|Win32.ActiveCfg = Release|Win32
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|Win32.Build.0 = Release|Win32 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|Win32.Build.0 = Release|Win32
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|x64.ActiveCfg = Release|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|x64.ActiveCfg = Release|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|x64.Build.0 = Release|x64 {CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release|x64.Build.0 = Release|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release-CUDA|Mixed Platforms.ActiveCfg = Release|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release-CUDA|Mixed Platforms.Build.0 = Release|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release-CUDA|Win32.ActiveCfg = Release|Win32
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release-CUDA|Win32.Build.0 = Release|Win32
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release-CUDA|x64.ActiveCfg = Release|x64
{CFB3FEAC-5720-4B16-9D7E-039DB180B641}.Release-CUDA|x64.Build.0 = Release|x64
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -20,7 +20,7 @@
</ToolFiles> </ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug-CUDA|Win32"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="2" ConfigurationType="2"
@ -101,7 +101,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug|x64" Name="Debug-CUDA|x64"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="2" ConfigurationType="2"
@ -181,7 +181,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|Win32" Name="Release-CUDA|Win32"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="2" ConfigurationType="2"
@ -270,7 +270,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release-CUDA|x64"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="2" ConfigurationType="2"
@ -355,7 +355,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug (no cuda)|Win32" Name="Debug|Win32"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="2" ConfigurationType="2"
@ -436,7 +436,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug (no cuda)|x64" Name="Debug|x64"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="2" ConfigurationType="2"
@ -512,7 +512,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release (no cuda)|Win32" Name="Release|Win32"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="2" ConfigurationType="2"
@ -596,7 +596,7 @@
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release (no cuda)|x64" Name="Release|x64"
OutputDirectory="$(ConfigurationName)\$(PlatformName)" OutputDirectory="$(ConfigurationName)\$(PlatformName)"
IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" IntermediateDirectory="$(ConfigurationName)\$(PlatformName)"
ConfigurationType="2" ConfigurationType="2"
@ -640,7 +640,7 @@
Name="VCLinkerTool" Name="VCLinkerTool"
OutputFile="$(SolutionDir)\$(ConfigurationName).$(PlatformName)\bin\$(ProjectName).dll" OutputFile="$(SolutionDir)\$(ConfigurationName).$(PlatformName)\bin\$(ProjectName).dll"
LinkIncremental="1" LinkIncremental="1"
AdditionalLibraryDirectories="&quot;$(CUDA_LIB_PATH)\..\lib64&quot;" AdditionalLibraryDirectories=""
SubSystem="2" SubSystem="2"
OptimizeReferences="2" OptimizeReferences="2"
EnableCOMDATFolding="2" EnableCOMDATFolding="2"
@ -697,7 +697,7 @@
RelativePath="..\..\..\src\nvtt\cuda\CompressKernel.cu" RelativePath="..\..\..\src\nvtt\cuda\CompressKernel.cu"
> >
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug-CUDA|Win32"
> >
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
@ -707,7 +707,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Debug-CUDA|x64"
> >
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
@ -717,7 +717,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Release-CUDA|Win32"
> >
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
@ -727,7 +727,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Release-CUDA|x64"
> >
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
@ -737,7 +737,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug (no cuda)|Win32" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -748,7 +748,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug (no cuda)|x64" Name="Debug|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -756,7 +756,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release (no cuda)|Win32" Name="Release|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -767,7 +767,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release (no cuda)|x64" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -778,6 +778,38 @@
<File <File
RelativePath="..\..\..\src\nvtt\cuda\ConvolveKernel.cu" RelativePath="..\..\..\src\nvtt\cuda\ConvolveKernel.cu"
> >
<FileConfiguration
Name="Debug-CUDA|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug-CUDA|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release-CUDA|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release-CUDA|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
@ -810,38 +842,6 @@
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Debug (no cuda)|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug (no cuda)|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release (no cuda)|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release (no cuda)|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File> </File>
<File <File
RelativePath="..\..\..\src\nvtt\cuda\CudaCompressorDXT.cpp" RelativePath="..\..\..\src\nvtt\cuda\CudaCompressorDXT.cpp"
@ -895,6 +895,38 @@
<File <File
RelativePath="..\..\..\src\nvtt\CompressorDX11.cpp" RelativePath="..\..\..\src\nvtt\CompressorDX11.cpp"
> >
<FileConfiguration
Name="Debug-CUDA|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug-CUDA|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release-CUDA|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release-CUDA|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
@ -927,42 +959,42 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Debug (no cuda)|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug (no cuda)|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release (no cuda)|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release (no cuda)|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
</File> </File>
<File <File
RelativePath="..\..\..\src\nvtt\CompressorDX11.h" RelativePath="..\..\..\src\nvtt\CompressorDX11.h"
> >
<FileConfiguration
Name="Debug-CUDA|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug-CUDA|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release-CUDA|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release-CUDA|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
@ -995,38 +1027,6 @@
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Debug (no cuda)|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug (no cuda)|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release (no cuda)|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release (no cuda)|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File> </File>
<File <File
RelativePath="..\..\..\src\nvtt\CompressorDX9.cpp" RelativePath="..\..\..\src\nvtt\CompressorDX9.cpp"
@ -1120,10 +1120,6 @@
RelativePath="..\..\..\src\nvtt\SingleColorLookup.cpp" RelativePath="..\..\..\src\nvtt\SingleColorLookup.cpp"
> >
</File> </File>
<File
RelativePath="..\..\..\src\nvtt\TaskDispatcher.h"
>
</File>
<File <File
RelativePath="..\..\..\src\nvtt\Surface.cpp" RelativePath="..\..\..\src\nvtt\Surface.cpp"
> >
@ -1132,6 +1128,10 @@
RelativePath="..\..\..\src\nvtt\Surface.h" RelativePath="..\..\..\src\nvtt\Surface.h"
> >
</File> </File>
<File
RelativePath="..\..\..\src\nvtt\TaskDispatcher.h"
>
</File>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>

View File

@ -461,15 +461,30 @@ float ColorBlock::volume() const
}*/ }*/
void ColorSet::allocate(uint w, uint h)
{
nvDebugCheck(w <= 4 && h <= 4);
this->colorCount = w * h;
this->indexCount = 16;
this->w = 4;
this->h = 4;
//colors = new Vector4[colorCount];
//weights = new float[colorCount];
//indices = new int[indexCount];
}
// Allocate 4x4 block and fill with
void ColorSet::setColors(const float * data, uint img_w, uint img_h, uint img_x, uint img_y) void ColorSet::setColors(const float * data, uint img_w, uint img_h, uint img_x, uint img_y)
{ {
nvDebugCheck(img_x < img_w && img_y < img_h); nvDebugCheck(img_x < img_w && img_y < img_h);
w = min(4U, img_w - img_x); const uint block_w = min(4U, img_w - img_x);
h = min(4U, img_h - img_y); const uint block_h = min(4U, img_h - img_y);
nvDebugCheck(w != 0 && h != 0); nvDebugCheck(block_w != 0 && block_h != 0);
count = w * h; allocate(block_w, block_h);
const float * r = data + img_w * img_h * 0; const float * r = data + img_w * img_h * 0;
const float * g = data + img_w * img_h * 1; const float * g = data + img_w * img_h * 1;
@ -477,9 +492,9 @@ void ColorSet::setColors(const float * data, uint img_w, uint img_h, uint img_x,
const float * a = data + img_w * img_h * 3; const float * a = data + img_w * img_h * 3;
// Set colors. // Set colors.
for (uint y = 0, i = 0; y < h; y++) for (uint y = 0, i = 0; y < block_h; y++)
{ {
for (uint x = 0; x < w; x++, i++) for (uint x = 0; x < block_w; x++, i++)
{ {
uint idx = x + img_x + (y + img_y) * img_w; uint idx = x + img_x + (y + img_y) * img_w;
colors[i].x = r[idx]; colors[i].x = r[idx];
@ -488,11 +503,25 @@ void ColorSet::setColors(const float * data, uint img_w, uint img_h, uint img_x,
colors[i].w = a[idx]; colors[i].w = a[idx];
} }
} }
// Set default indices.
for (uint y = 0, i = 0; y < 4; y++)
{
for (uint x = 0; x < 4; x++)
{
if (x < block_w && y < block_h) {
indices[y*4+x] = i++;
}
else {
indices[y*4+x] = -1;
}
}
}
} }
void ColorSet::setAlphaWeights() void ColorSet::setAlphaWeights()
{ {
for (uint i = 0; i < count; i++) for (uint i = 0; i < colorCount; i++)
{ {
weights[i] = max(colors[i].w, 0.001f); // Avoid division by zero. weights[i] = max(colors[i].w, 0.001f); // Avoid division by zero.
} }
@ -500,72 +529,71 @@ void ColorSet::setAlphaWeights()
void ColorSet::setUniformWeights() void ColorSet::setUniformWeights()
{ {
for (uint i = 0; i < count; i++) for (uint i = 0; i < colorCount; i++)
{ {
weights[i] = 1.0f; weights[i] = 1.0f;
} }
} }
// @@ Handle complex blocks (not 4x4).
void ColorSet::createMinimalSet(bool ignoreTransparent) void ColorSet::createMinimalSet(bool ignoreTransparent)
{ {
nvDebugCheck(count == w*h); // Do not call this method multiple times. nvDebugCheck(colorCount <= 16);
Vector4 C[16]; Vector4 C[16];
float W[16]; float W[16];
memcpy(C, colors, sizeof(Vector4)*count); memcpy(C, colors, sizeof(Vector4)*colorCount);
memcpy(W, weights, sizeof(float)*count); memcpy(W, weights, sizeof(float)*colorCount);
uint n = 0; uint n = 0;
for (uint y = 0, i = 0; y < h; y++) for (uint i = 0; i < indexCount; i++)
{ {
for (uint x = 0; x < w; x++, i++) if (indices[i] < 0) {
{ continue;
if (ignoreTransparent && C[i].w == 0) { }
continue;
}
uint idx = y * 4 + x; Vector4 ci = C[indices[i]];
float wi = W[indices[i]];
// loop over previous points for a match if (ignoreTransparent && ci.w == 0) {
for (int j = 0; ; j++) indices[i] = -1;
{ continue;
// allocate a new point }
if (j == i)
{
colors[n] = C[i];
weights[n] = W[i];
remap[idx] = n;
n++;
break;
}
// check for a match // Find matching color.
bool colorMatch = (C[i].x == C[j].x) && (C[i].w == C[j].w) && (C[i].z == C[j].z); uint j;
//bool alphaMatch = (C[i].w == C[j].w); for (j = 0; j < n; j++) {
bool colorMatch = equal(colors[j].x, ci.x) && equal(colors[j].y, ci.y) && equal(colors[j].z, ci.z);
//bool alphaMatch = equal(colors[j].w, ci.w);
if (colorMatch) if (colorMatch) {
{ weights[j] += wi;
// get the index of the match indices[i] = j;
int index = remap[j]; break;
// map to this point and increase the weight
weights[index] += W[i];
remap[idx] = index;
break;
}
} }
} }
// No match found. Add new color.
if (j == n) {
colors[n] = ci;
weights[n] = wi;
indices[i] = n;
n++;
}
}
nvDebugCheck(n != 0);
for (uint i = n; i < colorCount; i++) {
weights[i] = 0;
} }
count = n; colorCount = n;
// Avoid empty blocks. // Avoid empty blocks.
if (count == 0) { if (colorCount == 0) {
count = 1; colorCount = 1;
//colors[0] = C[0]; indices[0] = 0;
//weights[0] = W[0];
memset(remap, 0, sizeof(int)*16);
} }
} }
@ -578,7 +606,7 @@ void ColorSet::wrapIndices()
uint base = (y % h) * w; uint base = (y % h) * w;
for (uint x = w; x < 4; x++) for (uint x = w; x < 4; x++)
{ {
remap[y*4+3] = remap[base + (x % w)]; indices[y*4+3] = indices[base + (x % w)];
} }
} }
} }
@ -588,7 +616,7 @@ bool ColorSet::isSingleColor(bool ignoreAlpha) const
Vector4 v = colors[0]; Vector4 v = colors[0];
if (ignoreAlpha) v.w = 1.0f; if (ignoreAlpha) v.w = 1.0f;
for (uint i = 1; i < count; i++) for (uint i = 1; i < colorCount; i++)
{ {
Vector4 c = colors[i]; Vector4 c = colors[i];
if (ignoreAlpha) c.w = 1.0f; if (ignoreAlpha) c.w = 1.0f;
@ -615,7 +643,7 @@ static inline float component(Vector4::Arg c, uint i)
void ColorSet::swizzle(uint x, uint y, uint z, uint w) void ColorSet::swizzle(uint x, uint y, uint z, uint w)
{ {
for (uint i = 0; i < count; i++) for (uint i = 0; i < colorCount; i++)
{ {
Vector4 c = colors[i]; Vector4 c = colors[i];
colors[i].x = component(c, x); colors[i].x = component(c, x);
@ -627,7 +655,7 @@ void ColorSet::swizzle(uint x, uint y, uint z, uint w)
bool ColorSet::hasAlpha() const bool ColorSet::hasAlpha() const
{ {
for (uint i = 0; i < count; i++) for (uint i = 0; i < colorCount; i++)
{ {
if (colors[i].w != 0.0f) return true; if (colors[i].w != 0.0f) return true;
} }

View File

@ -83,6 +83,11 @@ namespace nv
struct ColorSet struct ColorSet
{ {
ColorSet() : colorCount(0), indexCount(0), w(0), h(0) {}
//~ColorSet() {}
void allocate(uint w, uint h);
void setColors(const float * data, uint img_w, uint img_h, uint img_x, uint img_y); void setColors(const float * data, uint img_w, uint img_h, uint img_x, uint img_y);
void setAlphaWeights(); void setAlphaWeights();
@ -97,19 +102,22 @@ namespace nv
bool hasAlpha() const; bool hasAlpha() const;
// These methods require indices to be set: // These methods require indices to be set:
Vector4 color(uint x, uint y) const { nvDebugCheck(x < w && y < h); return colors[remap[y * 4 + x]]; } Vector4 color(uint x, uint y) const { nvDebugCheck(x < w && y < h); return colors[indices[y * 4 + x]]; }
Vector4 & color(uint x, uint y) { nvDebugCheck(x < w && y < h); return colors[remap[y * 4 + x]]; } Vector4 & color(uint x, uint y) { nvDebugCheck(x < w && y < h); return colors[indices[y * 4 + x]]; }
Vector4 color(uint i) const { nvDebugCheck(i < 16); return colors[remap[i]]; } Vector4 color(uint i) const { nvDebugCheck(i < indexCount); return colors[indices[i]]; }
Vector4 & color(uint i) { nvDebugCheck(i < 16); return colors[remap[i]]; } Vector4 & color(uint i) { nvDebugCheck(i < indexCount); return colors[indices[i]]; }
bool isValidIndex(uint i) const { return i < indexCount && indices[i] >= 0; }
uint count; uint colorCount;
uint w, h; uint indexCount; // Fixed to 16
uint w, h; // Fixed to 4x4
// Allocate color set dynamically and add support for sets larger than 4x4.
Vector4 colors[16]; Vector4 colors[16];
float weights[16]; float weights[16];
int remap[16]; int indices[16];
}; };
} // nv namespace } // nv namespace

View File

@ -43,7 +43,7 @@ namespace nv
Vector3 extents() const; Vector3 extents() const;
// Return extents of the box. // Return extents of the box.
scalar extents(uint axis) const; float extents(uint axis) const;
// Add a point to this box. // Add a point to this box.
void addPointToBounds(const Vector3 & p); void addPointToBounds(const Vector3 & p);

View File

@ -56,7 +56,7 @@ namespace nv
} }
// Return extents of the box. // Return extents of the box.
scalar Box::extents(uint axis) const float Box::extents(uint axis) const
{ {
nvDebugCheck(axis < 3); nvDebugCheck(axis < 3);
if (axis == 0) return (maxCorner.x - minCorner.x) * 0.5f; if (axis == 0) return (maxCorner.x - minCorner.x) * 0.5f;

View File

@ -19,9 +19,9 @@ namespace nv
Matrix3(const Matrix3 & m); Matrix3(const Matrix3 & m);
Matrix3(Vector3::Arg v0, Vector3::Arg v1, Vector3::Arg v2); Matrix3(Vector3::Arg v0, Vector3::Arg v1, Vector3::Arg v2);
scalar get(uint row, uint col) const; float get(uint row, uint col) const;
scalar operator()(uint row, uint col) const; float operator()(uint row, uint col) const;
scalar & operator()(uint row, uint col); float & operator()(uint row, uint col);
Vector3 row(uint i) const; Vector3 row(uint i) const;
Vector3 column(uint i) const; Vector3 column(uint i) const;
@ -34,7 +34,7 @@ namespace nv
float determinant() const; float determinant() const;
private: private:
scalar m_data[9]; float m_data[9];
}; };
@ -52,28 +52,28 @@ namespace nv
explicit Matrix(identity_t); explicit Matrix(identity_t);
Matrix(const Matrix & m); Matrix(const Matrix & m);
Matrix(Vector4::Arg v0, Vector4::Arg v1, Vector4::Arg v2, Vector4::Arg v3); Matrix(Vector4::Arg v0, Vector4::Arg v1, Vector4::Arg v2, Vector4::Arg v3);
//explicit Matrix(const scalar m[]); // m is assumed to contain 16 elements //explicit Matrix(const float m[]); // m is assumed to contain 16 elements
scalar data(uint idx) const; float data(uint idx) const;
scalar & data(uint idx); float & data(uint idx);
scalar get(uint row, uint col) const; float get(uint row, uint col) const;
scalar operator()(uint row, uint col) const; float operator()(uint row, uint col) const;
scalar & operator()(uint row, uint col); float & operator()(uint row, uint col);
const scalar * ptr() const; const float * ptr() const;
Vector4 row(uint i) const; Vector4 row(uint i) const;
Vector4 column(uint i) const; Vector4 column(uint i) const;
void scale(scalar s); void scale(float s);
void scale(Vector3::Arg s); void scale(Vector3::Arg s);
void translate(Vector3::Arg t); void translate(Vector3::Arg t);
void rotate(scalar theta, scalar v0, scalar v1, scalar v2); void rotate(float theta, float v0, float v1, float v2);
scalar determinant() const; float determinant() const;
void apply(Matrix::Arg m); void apply(Matrix::Arg m);
private: private:
scalar m_data[16]; float m_data[16];
}; };
} // nv namespace } // nv namespace

View File

@ -40,17 +40,17 @@ namespace nv
m_data[6] = v2.x; m_data[7] = v2.y; m_data[8] = v2.z; m_data[6] = v2.x; m_data[7] = v2.y; m_data[8] = v2.z;
} }
inline scalar Matrix3::get(uint row, uint col) const inline float Matrix3::get(uint row, uint col) const
{ {
nvDebugCheck(row < 3 && col < 3); nvDebugCheck(row < 3 && col < 3);
return m_data[col * 3 + row]; return m_data[col * 3 + row];
} }
inline scalar Matrix3::operator()(uint row, uint col) const inline float Matrix3::operator()(uint row, uint col) const
{ {
nvDebugCheck(row < 3 && col < 3); nvDebugCheck(row < 3 && col < 3);
return m_data[col * 3 + row]; return m_data[col * 3 + row];
} }
inline scalar & Matrix3::operator()(uint row, uint col) inline float & Matrix3::operator()(uint row, uint col)
{ {
nvDebugCheck(row < 3 && col < 3); nvDebugCheck(row < 3 && col < 3);
return m_data[col * 3 + row]; return m_data[col * 3 + row];
@ -136,7 +136,7 @@ namespace nv
Matrix3 m; Matrix3 m;
for(int i = 0; i < 3; i++) { for(int i = 0; i < 3; i++) {
const scalar ai0 = a(i,0), ai1 = a(i,1), ai2 = a(i,2); const float ai0 = a(i,0), ai1 = a(i,1), ai2 = a(i,2);
m(i, 0) = ai0 * b(0,0) + ai1 * b(1,0) + ai2 * b(2,0); m(i, 0) = ai0 * b(0,0) + ai1 * b(1,0) + ai2 * b(2,0);
m(i, 1) = ai0 * b(0,1) + ai1 * b(1,1) + ai2 * b(2,1); m(i, 1) = ai0 * b(0,1) + ai1 * b(1,1) + ai2 * b(2,1);
m(i, 2) = ai0 * b(0,2) + ai1 * b(1,2) + ai2 * b(2,2); m(i, 2) = ai0 * b(0,2) + ai1 * b(1,2) + ai2 * b(2,2);
@ -198,7 +198,7 @@ namespace nv
m_data[12] = v3.x; m_data[13] = v3.y; m_data[14] = v3.z; m_data[15] = v3.w; m_data[12] = v3.x; m_data[13] = v3.y; m_data[14] = v3.z; m_data[15] = v3.w;
} }
/*inline Matrix::Matrix(const scalar m[]) /*inline Matrix::Matrix(const float m[])
{ {
for(int i = 0; i < 16; i++) { for(int i = 0; i < 16; i++) {
m_data[i] = m[i]; m_data[i] = m[i];
@ -207,33 +207,33 @@ namespace nv
// Accessors // Accessors
inline scalar Matrix::data(uint idx) const inline float Matrix::data(uint idx) const
{ {
nvDebugCheck(idx < 16); nvDebugCheck(idx < 16);
return m_data[idx]; return m_data[idx];
} }
inline scalar & Matrix::data(uint idx) inline float & Matrix::data(uint idx)
{ {
nvDebugCheck(idx < 16); nvDebugCheck(idx < 16);
return m_data[idx]; return m_data[idx];
} }
inline scalar Matrix::get(uint row, uint col) const inline float Matrix::get(uint row, uint col) const
{ {
nvDebugCheck(row < 4 && col < 4); nvDebugCheck(row < 4 && col < 4);
return m_data[col * 4 + row]; return m_data[col * 4 + row];
} }
inline scalar Matrix::operator()(uint row, uint col) const inline float Matrix::operator()(uint row, uint col) const
{ {
nvDebugCheck(row < 4 && col < 4); nvDebugCheck(row < 4 && col < 4);
return m_data[col * 4 + row]; return m_data[col * 4 + row];
} }
inline scalar & Matrix::operator()(uint row, uint col) inline float & Matrix::operator()(uint row, uint col)
{ {
nvDebugCheck(row < 4 && col < 4); nvDebugCheck(row < 4 && col < 4);
return m_data[col * 4 + row]; return m_data[col * 4 + row];
} }
inline const scalar * Matrix::ptr() const inline const float * Matrix::ptr() const
{ {
return m_data; return m_data;
} }
@ -251,7 +251,7 @@ namespace nv
} }
// Apply scale. // Apply scale.
inline void Matrix::scale(scalar s) inline void Matrix::scale(float s)
{ {
m_data[0] *= s; m_data[1] *= s; m_data[2] *= s; m_data[3] *= s; m_data[0] *= s; m_data[1] *= s; m_data[2] *= s; m_data[3] *= s;
m_data[4] *= s; m_data[5] *= s; m_data[6] *= s; m_data[7] *= s; m_data[4] *= s; m_data[5] *= s; m_data[6] *= s; m_data[7] *= s;
@ -276,10 +276,10 @@ namespace nv
m_data[15] = m_data[3] * t.x + m_data[7] * t.y + m_data[11] * t.z + m_data[15]; m_data[15] = m_data[3] * t.x + m_data[7] * t.y + m_data[11] * t.z + m_data[15];
} }
Matrix rotation(scalar theta, scalar v0, scalar v1, scalar v2); Matrix rotation(float theta, float v0, float v1, float v2);
// Apply rotation. // Apply rotation.
inline void Matrix::rotate(scalar theta, scalar v0, scalar v1, scalar v2) inline void Matrix::rotate(float theta, float v0, float v1, float v2)
{ {
Matrix R(rotation(theta, v0, v1, v2)); Matrix R(rotation(theta, v0, v1, v2));
apply(R); apply(R);
@ -291,7 +291,7 @@ namespace nv
nvDebugCheck(this != &m); nvDebugCheck(this != &m);
for(int i = 0; i < 4; i++) { for(int i = 0; i < 4; i++) {
const scalar ai0 = get(i,0), ai1 = get(i,1), ai2 = get(i,2), ai3 = get(i,3); const float ai0 = get(i,0), ai1 = get(i,1), ai2 = get(i,2), ai3 = get(i,3);
m_data[0 + i] = ai0 * m(0,0) + ai1 * m(1,0) + ai2 * m(2,0) + ai3 * m(3,0); m_data[0 + i] = ai0 * m(0,0) + ai1 * m(1,0) + ai2 * m(2,0) + ai3 * m(3,0);
m_data[4 + i] = ai0 * m(0,1) + ai1 * m(1,1) + ai2 * m(2,1) + ai3 * m(3,1); m_data[4 + i] = ai0 * m(0,1) + ai1 * m(1,1) + ai2 * m(2,1) + ai3 * m(3,1);
m_data[8 + i] = ai0 * m(0,2) + ai1 * m(1,2) + ai2 * m(2,2) + ai3 * m(3,2); m_data[8 + i] = ai0 * m(0,2) + ai1 * m(1,2) + ai2 * m(2,2) + ai3 * m(3,2);
@ -310,7 +310,7 @@ namespace nv
} }
// Get scale matrix. // Get scale matrix.
inline Matrix scale(scalar s) inline Matrix scale(float s)
{ {
Matrix m(identity); Matrix m(identity);
m(0,0) = m(1,1) = m(2,2) = s; m(0,0) = m(1,1) = m(2,2) = s;
@ -328,10 +328,10 @@ namespace nv
} }
// Get rotation matrix. // Get rotation matrix.
inline Matrix rotation(scalar theta, scalar v0, scalar v1, scalar v2) inline Matrix rotation(float theta, float v0, float v1, float v2)
{ {
scalar cost = cosf(theta); float cost = cosf(theta);
scalar sint = sinf(theta); float sint = sinf(theta);
Matrix m(identity); Matrix m(identity);
@ -348,18 +348,18 @@ namespace nv
m(0,1) = sint; m(1,1) = cost; m(0,1) = sint; m(1,1) = cost;
} }
else { else {
scalar a2, b2, c2; float a2, b2, c2;
a2 = v0 * v0; a2 = v0 * v0;
b2 = v1 * v1; b2 = v1 * v1;
c2 = v2 * v2; c2 = v2 * v2;
scalar iscale = 1.0f / sqrtf(a2 + b2 + c2); float iscale = 1.0f / sqrtf(a2 + b2 + c2);
v0 *= iscale; v0 *= iscale;
v1 *= iscale; v1 *= iscale;
v2 *= iscale; v2 *= iscale;
scalar abm, acm, bcm; float abm, acm, bcm;
scalar mcos, asin, bsin, csin; float mcos, asin, bsin, csin;
mcos = 1.0f - cost; mcos = 1.0f - cost;
abm = v0 * v1 * mcos; abm = v0 * v1 * mcos;
acm = v0 * v2 * mcos; acm = v0 * v2 * mcos;
@ -380,18 +380,18 @@ namespace nv
return m; return m;
} }
//Matrix rotation(scalar yaw, scalar pitch, scalar roll); //Matrix rotation(float yaw, float pitch, float roll);
//Matrix skew(scalar angle, Vector3::Arg v1, Vector3::Arg v2); //Matrix skew(float angle, Vector3::Arg v1, Vector3::Arg v2);
// Get frustum matrix. // Get frustum matrix.
inline Matrix frustum(scalar xmin, scalar xmax, scalar ymin, scalar ymax, scalar zNear, scalar zFar) inline Matrix frustum(float xmin, float xmax, float ymin, float ymax, float zNear, float zFar)
{ {
Matrix m(0.0f); Matrix m(0.0f);
scalar doubleznear = 2.0f * zNear; float doubleznear = 2.0f * zNear;
scalar one_deltax = 1.0f / (xmax - xmin); float one_deltax = 1.0f / (xmax - xmin);
scalar one_deltay = 1.0f / (ymax - ymin); float one_deltay = 1.0f / (ymax - ymin);
scalar one_deltaz = 1.0f / (zFar - zNear); float one_deltaz = 1.0f / (zFar - zNear);
m(0,0) = doubleznear * one_deltax; m(0,0) = doubleznear * one_deltax;
m(1,1) = doubleznear * one_deltay; m(1,1) = doubleznear * one_deltay;
@ -405,14 +405,14 @@ namespace nv
} }
// Get infinite frustum matrix. // Get infinite frustum matrix.
inline Matrix frustum(scalar xmin, scalar xmax, scalar ymin, scalar ymax, scalar zNear) inline Matrix frustum(float xmin, float xmax, float ymin, float ymax, float zNear)
{ {
Matrix m(0.0f); Matrix m(0.0f);
scalar doubleznear = 2.0f * zNear; float doubleznear = 2.0f * zNear;
scalar one_deltax = 1.0f / (xmax - xmin); float one_deltax = 1.0f / (xmax - xmin);
scalar one_deltay = 1.0f / (ymax - ymin); float one_deltay = 1.0f / (ymax - ymin);
scalar nudge = 1.0; // 0.999; float nudge = 1.0; // 0.999;
m(0,0) = doubleznear * one_deltax; m(0,0) = doubleznear * one_deltax;
m(1,1) = doubleznear * one_deltay; m(1,1) = doubleznear * one_deltay;
@ -426,27 +426,27 @@ namespace nv
} }
// Get perspective matrix. // Get perspective matrix.
inline Matrix perspective(scalar fovy, scalar aspect, scalar zNear, scalar zFar) inline Matrix perspective(float fovy, float aspect, float zNear, float zFar)
{ {
scalar xmax = zNear * tan(fovy / 2); float xmax = zNear * tan(fovy / 2);
scalar xmin = -xmax; float xmin = -xmax;
scalar ymax = xmax / aspect; float ymax = xmax / aspect;
scalar ymin = -ymax; float ymin = -ymax;
return frustum(xmin, xmax, ymin, ymax, zNear, zFar); return frustum(xmin, xmax, ymin, ymax, zNear, zFar);
} }
// Get infinite perspective matrix. // Get infinite perspective matrix.
inline Matrix perspective(scalar fovy, scalar aspect, scalar zNear) inline Matrix perspective(float fovy, float aspect, float zNear)
{ {
scalar x = zNear * tan(fovy / 2); float x = zNear * tan(fovy / 2);
scalar y = x / aspect; float y = x / aspect;
return frustum( -x, x, -y, y, zNear ); return frustum( -x, x, -y, y, zNear );
} }
// Get matrix determinant. // Get matrix determinant.
inline scalar Matrix::determinant() const inline float Matrix::determinant() const
{ {
return return
m_data[3] * m_data[6] * m_data[ 9] * m_data[12] - m_data[2] * m_data[7] * m_data[ 9] * m_data[12] - m_data[3] * m_data[5] * m_data[10] * m_data[12] + m_data[1] * m_data[7] * m_data[10] * m_data[12] + m_data[3] * m_data[6] * m_data[ 9] * m_data[12] - m_data[2] * m_data[7] * m_data[ 9] * m_data[12] - m_data[3] * m_data[5] * m_data[10] * m_data[12] + m_data[1] * m_data[7] * m_data[10] * m_data[12] +
@ -563,9 +563,9 @@ void TranslationMatrix(const Vec3 & v) {
} }
/** Rotate theta degrees around v. */ /** Rotate theta degrees around v. */
void RotationMatrix( scalar theta, scalar v0, scalar v1, scalar v2 ) { void RotationMatrix( float theta, float v0, float v1, float v2 ) {
scalar cost = cos(theta); float cost = cos(theta);
scalar sint = sin(theta); float sint = sin(theta);
if( 1 == v0 && 0 == v1 && 0 == v2 ) { if( 1 == v0 && 0 == v1 && 0 == v2 ) {
data[0] = 1.0f; data[1] = 0.0f; data[2] = 0.0f; data[3] = 0.0f; data[0] = 1.0f; data[1] = 0.0f; data[2] = 0.0f; data[3] = 0.0f;
@ -587,18 +587,18 @@ void RotationMatrix( scalar theta, scalar v0, scalar v1, scalar v2 ) {
} }
else { else {
//we need scale a,b,c to unit length. //we need scale a,b,c to unit length.
scalar a2, b2, c2; float a2, b2, c2;
a2 = v0 * v0; a2 = v0 * v0;
b2 = v1 * v1; b2 = v1 * v1;
c2 = v2 * v2; c2 = v2 * v2;
scalar iscale = 1.0f / sqrtf(a2 + b2 + c2); float iscale = 1.0f / sqrtf(a2 + b2 + c2);
v0 *= iscale; v0 *= iscale;
v1 *= iscale; v1 *= iscale;
v2 *= iscale; v2 *= iscale;
scalar abm, acm, bcm; float abm, acm, bcm;
scalar mcos, asin, bsin, csin; float mcos, asin, bsin, csin;
mcos = 1.0f - cost; mcos = 1.0f - cost;
abm = v0 * v1 * mcos; abm = v0 * v1 * mcos;
acm = v0 * v2 * mcos; acm = v0 * v2 * mcos;
@ -626,7 +626,7 @@ void RotationMatrix( scalar theta, scalar v0, scalar v1, scalar v2 ) {
} }
/* /*
void SkewMatrix(scalar angle, const Vec3 & v1, const Vec3 & v2) { void SkewMatrix(float angle, const Vec3 & v1, const Vec3 & v2) {
v1.Normalize(); v1.Normalize();
v2.Normalize(); v2.Normalize();
@ -635,9 +635,9 @@ v3.Cross(v1, v2);
v3.Normalize(); v3.Normalize();
// Get skew factor. // Get skew factor.
scalar costheta = Vec3DotProduct(v1, v2); float costheta = Vec3DotProduct(v1, v2);
scalar sintheta = Real.Sqrt(1 - costheta * costheta); float sintheta = Real.Sqrt(1 - costheta * costheta);
scalar skew = tan(Trig.DegreesToRadians(angle) + acos(sintheta)) * sintheta - costheta; float skew = tan(Trig.DegreesToRadians(angle) + acos(sintheta)) * sintheta - costheta;
// Build orthonormal matrix. // Build orthonormal matrix.
v1 = FXVector3.Cross(v3, v2); v1 = FXVector3.Cross(v3, v2);
@ -669,13 +669,13 @@ return R * S * R.Transpose; // Not sure this is in the correct order...
* *
* @todo Have to recompute this code for our new convention. * @todo Have to recompute this code for our new convention.
**/ **/
void RotationMatrix( scalar yaw, scalar pitch, scalar roll ) { void RotationMatrix( float yaw, float pitch, float roll ) {
scalar sy = sin(yaw+ToRadian(90)); float sy = sin(yaw+ToRadian(90));
scalar cy = cos(yaw+ToRadian(90)); float cy = cos(yaw+ToRadian(90));
scalar sp = sin(pitch-ToRadian(90)); float sp = sin(pitch-ToRadian(90));
scalar cp = cos(pitch-ToRadian(90)); float cp = cos(pitch-ToRadian(90));
scalar sr = sin(roll); float sr = sin(roll);
scalar cr = cos(roll); float cr = cos(roll);
data[0] = cr*cy + sr*sp*sy; data[0] = cr*cy + sr*sp*sy;
data[1] = cp*sy; data[1] = cp*sy;
@ -699,35 +699,35 @@ void RotationMatrix( scalar yaw, scalar pitch, scalar roll ) {
} }
/** Create a frustum matrix with the far plane at the infinity. */ /** Create a frustum matrix with the far plane at the infinity. */
void Frustum( scalar xmin, scalar xmax, scalar ymin, scalar ymax, scalar zNear, scalar zFar ) { void Frustum( float xmin, float xmax, float ymin, float ymax, float zNear, float zFar ) {
scalar one_deltax, one_deltay, one_deltaz, doubleznear; float one_deltax, one_deltay, one_deltaz, doubleznear;
doubleznear = 2.0f * zNear; doubleznear = 2.0f * zNear;
one_deltax = 1.0f / (xmax - xmin); one_deltax = 1.0f / (xmax - xmin);
one_deltay = 1.0f / (ymax - ymin); one_deltay = 1.0f / (ymax - ymin);
one_deltaz = 1.0f / (zFar - zNear); one_deltaz = 1.0f / (zFar - zNear);
data[0] = (scalar)(doubleznear * one_deltax); data[0] = (float)(doubleznear * one_deltax);
data[1] = 0.0f; data[1] = 0.0f;
data[2] = 0.0f; data[2] = 0.0f;
data[3] = 0.0f; data[3] = 0.0f;
data[4] = 0.0f; data[4] = 0.0f;
data[5] = (scalar)(doubleznear * one_deltay); data[5] = (float)(doubleznear * one_deltay);
data[6] = 0.f; data[6] = 0.f;
data[7] = 0.f; data[7] = 0.f;
data[8] = (scalar)((xmax + xmin) * one_deltax); data[8] = (float)((xmax + xmin) * one_deltax);
data[9] = (scalar)((ymax + ymin) * one_deltay); data[9] = (float)((ymax + ymin) * one_deltay);
data[10] = (scalar)(-(zFar + zNear) * one_deltaz); data[10] = (float)(-(zFar + zNear) * one_deltaz);
data[11] = -1.f; data[11] = -1.f;
data[12] = 0.f; data[12] = 0.f;
data[13] = 0.f; data[13] = 0.f;
data[14] = (scalar)(-(zFar * doubleznear) * one_deltaz); data[14] = (float)(-(zFar * doubleznear) * one_deltaz);
data[15] = 0.f; data[15] = 0.f;
} }
/** Create a frustum matrix with the far plane at the infinity. */ /** Create a frustum matrix with the far plane at the infinity. */
void FrustumInf( scalar xmin, scalar xmax, scalar ymin, scalar ymax, scalar zNear ) { void FrustumInf( float xmin, float xmax, float ymin, float ymax, float zNear ) {
scalar one_deltax, one_deltay, doubleznear, nudge; float one_deltax, one_deltay, doubleznear, nudge;
doubleznear = 2.0f * zNear; doubleznear = 2.0f * zNear;
one_deltax = 1.0f / (xmax - xmin); one_deltax = 1.0f / (xmax - xmin);
@ -756,8 +756,8 @@ void FrustumInf( scalar xmin, scalar xmax, scalar ymin, scalar ymax, scalar zNea
} }
/** Create an inverse frustum matrix with the far plane at the infinity. */ /** Create an inverse frustum matrix with the far plane at the infinity. */
void FrustumInfInv( scalar left, scalar right, scalar bottom, scalar top, scalar zNear ) { void FrustumInfInv( float left, float right, float bottom, float top, float zNear ) {
// this matrix is wrong (not tested scalarly) I think it should be transposed. // this matrix is wrong (not tested floatly) I think it should be transposed.
data[0] = (right - left) / (2 * zNear); data[0] = (right - left) / (2 * zNear);
data[1] = 0; data[1] = 0;
data[2] = 0; data[2] = 0;
@ -777,8 +777,8 @@ void FrustumInfInv( scalar left, scalar right, scalar bottom, scalar top, scalar
} }
/** Create an homogeneous projection matrix. */ /** Create an homogeneous projection matrix. */
void Perspective( scalar fov, scalar aspect, scalar zNear, scalar zFar ) { void Perspective( float fov, float aspect, float zNear, float zFar ) {
scalar xmin, xmax, ymin, ymax; float xmin, xmax, ymin, ymax;
xmax = zNear * tan( fov/2 ); xmax = zNear * tan( fov/2 );
xmin = -xmax; xmin = -xmax;
@ -790,22 +790,22 @@ void Perspective( scalar fov, scalar aspect, scalar zNear, scalar zFar ) {
} }
/** Create a projection matrix with the far plane at the infinity. */ /** Create a projection matrix with the far plane at the infinity. */
void PerspectiveInf( scalar fov, scalar aspect, scalar zNear ) { void PerspectiveInf( float fov, float aspect, float zNear ) {
scalar x = zNear * tan( fov/2 ); float x = zNear * tan( fov/2 );
scalar y = x / aspect; float y = x / aspect;
FrustumInf( -x, x, -y, y, zNear ); FrustumInf( -x, x, -y, y, zNear );
} }
/** Create an inverse projection matrix with far plane at the infinity. */ /** Create an inverse projection matrix with far plane at the infinity. */
void PerspectiveInfInv( scalar fov, scalar aspect, scalar zNear ) { void PerspectiveInfInv( float fov, float aspect, float zNear ) {
scalar x = zNear * tan( fov/2 ); float x = zNear * tan( fov/2 );
scalar y = x / aspect; float y = x / aspect;
FrustumInfInv( -x, x, -y, y, zNear ); FrustumInfInv( -x, x, -y, y, zNear );
} }
/** Build bone matrix from quatertion and offset. */ /** Build bone matrix from quatertion and offset. */
void BoneMatrix(const Quat & q, const Vec3 & offset) { void BoneMatrix(const Quat & q, const Vec3 & offset) {
scalar x2, y2, z2, xx, xy, xz, yy, yz, zz, wx, wy, wz; float x2, y2, z2, xx, xy, xz, yy, yz, zz, wx, wy, wz;
// calculate coefficients // calculate coefficients
x2 = q.x + q.x; x2 = q.x + q.x;
@ -844,7 +844,7 @@ void BoneMatrix(const Quat & q, const Vec3 & offset) {
//@{ //@{
/** Apply a general scale. */ /** Apply a general scale. */
void Scale( scalar x, scalar y, scalar z ) { void Scale( float x, float y, float z ) {
data[0] *= x; data[4] *= y; data[8] *= z; data[0] *= x; data[4] *= y; data[8] *= z;
data[1] *= x; data[5] *= y; data[9] *= z; data[1] *= x; data[5] *= y; data[9] *= z;
data[2] *= x; data[6] *= y; data[10] *= z; data[2] *= x; data[6] *= y; data[10] *= z;
@ -852,14 +852,14 @@ void Scale( scalar x, scalar y, scalar z ) {
} }
/** Apply a rotation of theta degrees around the axis v*/ /** Apply a rotation of theta degrees around the axis v*/
void Rotate( scalar theta, const Vec3 & v ) { void Rotate( float theta, const Vec3 & v ) {
Matrix b; Matrix b;
b.RotationMatrix( theta, v[0], v[1], v[2] ); b.RotationMatrix( theta, v[0], v[1], v[2] );
Multiply4x3( b ); Multiply4x3( b );
} }
/** Apply a rotation of theta degrees around the axis v*/ /** Apply a rotation of theta degrees around the axis v*/
void Rotate( scalar theta, scalar v0, scalar v1, scalar v2 ) { void Rotate( float theta, float v0, float v1, float v2 ) {
Matrix b; Matrix b;
b.RotationMatrix( theta, v0, v1, v2 ); b.RotationMatrix( theta, v0, v1, v2 );
Multiply4x3( b ); Multiply4x3( b );
@ -881,7 +881,7 @@ void Translate( const Vec3 &t ) {
* Translate the matrix by x, y, z. This is the same as multiplying by a * Translate the matrix by x, y, z. This is the same as multiplying by a
* translation matrix with the given offsets. * translation matrix with the given offsets.
*/ */
void Translate( scalar x, scalar y, scalar z ) { void Translate( float x, float y, float z ) {
data[12] = data[0] * x + data[4] * y + data[8] * z + data[12]; data[12] = data[0] * x + data[4] * y + data[8] * z + data[12];
data[13] = data[1] * x + data[5] * y + data[9] * z + data[13]; data[13] = data[1] * x + data[5] * y + data[9] * z + data[13];
data[14] = data[2] * x + data[6] * y + data[10] * z + data[14]; data[14] = data[2] * x + data[6] * y + data[10] * z + data[14];
@ -922,7 +922,7 @@ void AffineInverse() {
//@{ //@{
/** Return the determinant of this matrix. */ /** Return the determinant of this matrix. */
scalar Determinant() const { float Determinant() const {
return data[0] * data[5] * data[10] * data[15] + return data[0] * data[5] * data[10] * data[15] +
data[1] * data[6] * data[11] * data[12] + data[1] * data[6] * data[11] * data[12] +
data[2] * data[7] * data[ 8] * data[13] + data[2] * data[7] * data[ 8] * data[13] +
@ -944,7 +944,7 @@ void Multiply4x4( const Matrix & A, const Matrix & restrict B ) {
piDebugCheck(this != &B); piDebugCheck(this != &B);
for(int i = 0; i < 4; i++) { for(int i = 0; i < 4; i++) {
const scalar ai0 = A(i,0), ai1 = A(i,1), ai2 = A(i,2), ai3 = A(i,3); const float ai0 = A(i,0), ai1 = A(i,1), ai2 = A(i,2), ai3 = A(i,3);
GetElem(i,0) = ai0 * B(0,0) + ai1 * B(1,0) + ai2 * B(2,0) + ai3 * B(3,0); GetElem(i,0) = ai0 * B(0,0) + ai1 * B(1,0) + ai2 * B(2,0) + ai3 * B(3,0);
GetElem(i,1) = ai0 * B(0,1) + ai1 * B(1,1) + ai2 * B(2,1) + ai3 * B(3,1); GetElem(i,1) = ai0 * B(0,1) + ai1 * B(1,1) + ai2 * B(2,1) + ai3 * B(3,1);
GetElem(i,2) = ai0 * B(0,2) + ai1 * B(1,2) + ai2 * B(2,2) + ai3 * B(3,2); GetElem(i,2) = ai0 * B(0,2) + ai1 * B(1,2) + ai2 * B(2,2) + ai3 * B(3,2);
@ -981,7 +981,7 @@ void Multiply4x3( const Matrix & A, const Matrix & restrict B ) {
piDebugCheck(this != &B); piDebugCheck(this != &B);
for(int i = 0; i < 3; i++) { for(int i = 0; i < 3; i++) {
const scalar ai0 = A(i,0), ai1 = A(i,1), ai2 = A(i,2), ai3 = A(i,3); const float ai0 = A(i,0), ai1 = A(i,1), ai2 = A(i,2), ai3 = A(i,3);
GetElem(i,0) = ai0 * B(0,0) + ai1 * B(1,0) + ai2 * B(2,0) + ai3 * B(3,0); GetElem(i,0) = ai0 * B(0,0) + ai1 * B(1,0) + ai2 * B(2,0) + ai3 * B(3,0);
GetElem(i,1) = ai0 * B(0,1) + ai1 * B(1,1) + ai2 * B(2,1) + ai3 * B(3,1); GetElem(i,1) = ai0 * B(0,1) + ai1 * B(1,1) + ai2 * B(2,1) + ai3 * B(3,1);
GetElem(i,2) = ai0 * B(0,2) + ai1 * B(1,2) + ai2 * B(2,2) + ai3 * B(3,2); GetElem(i,2) = ai0 * B(0,2) + ai1 * B(1,2) + ai2 * B(2,2) + ai3 * B(3,2);
@ -1038,9 +1038,9 @@ void TransformPoint(const Vec3 & restrict orig, Vec3 * restrict dest) const {
} }
/** Transform a point, normalize it, and return w. */ /** Transform a point, normalize it, and return w. */
scalar TransformPointAndNormalize(const Vec3 & restrict orig, Vec3 * restrict dest) const { float TransformPointAndNormalize(const Vec3 & restrict orig, Vec3 * restrict dest) const {
piDebugCheck(&orig != dest); piDebugCheck(&orig != dest);
scalar w; float w;
dest->x = orig.x * data[0] + orig.y * data[4] + orig.z * data[8] + data[12]; dest->x = orig.x * data[0] + orig.y * data[4] + orig.z * data[8] + data[12];
dest->y = orig.x * data[1] + orig.y * data[5] + orig.z * data[9] + data[13]; dest->y = orig.x * data[1] + orig.y * data[5] + orig.z * data[9] + data[13];
dest->z = orig.x * data[2] + orig.y * data[6] + orig.z * data[10] + data[14]; dest->z = orig.x * data[2] + orig.y * data[6] + orig.z * data[10] + data[14];
@ -1050,7 +1050,7 @@ scalar TransformPointAndNormalize(const Vec3 & restrict orig, Vec3 * restrict de
} }
/** Transform a point and return w. */ /** Transform a point and return w. */
scalar TransformPointReturnW(const Vec3 & restrict orig, Vec3 * restrict dest) const { float TransformPointReturnW(const Vec3 & restrict orig, Vec3 * restrict dest) const {
piDebugCheck(&orig != dest); piDebugCheck(&orig != dest);
dest->x = orig.x * data[0] + orig.y * data[4] + orig.z * data[8] + data[12]; dest->x = orig.x * data[0] + orig.y * data[4] + orig.z * data[8] + data[12];
dest->y = orig.x * data[1] + orig.y * data[5] + orig.z * data[9] + data[13]; dest->y = orig.x * data[1] + orig.y * data[5] + orig.z * data[9] + data[13];
@ -1071,7 +1071,7 @@ void TransformVec4(const Vec3 & orig, Vec4 * dest) const {
//@{ //@{
/** Get the ZYZ euler angles from the matrix. Assumes the matrix is orthonormal. */ /** Get the ZYZ euler angles from the matrix. Assumes the matrix is orthonormal. */
void GetEulerAnglesZYZ(scalar * s, scalar * t, scalar * r) const { void GetEulerAnglesZYZ(float * s, float * t, float * r) const {
if( GetElem(2,2) < 1.0f ) { if( GetElem(2,2) < 1.0f ) {
if( GetElem(2,2) > -1.0f ) { if( GetElem(2,2) > -1.0f ) {
// cs*ct*cr-ss*sr -ss*ct*cr-cs*sr st*cr // cs*ct*cr-ss*sr -ss*ct*cr-cs*sr st*cr
@ -1115,7 +1115,7 @@ void Print() const {
public: public:
scalar data[16]; float data[16];
}; };
#endif #endif

View File

@ -25,12 +25,12 @@ namespace nv
const Plane & operator=(Plane::Arg v); const Plane & operator=(Plane::Arg v);
Vector3 vector() const; Vector3 vector() const;
scalar offset() const; float offset() const;
const Vector4 & asVector() const; const Vector4 & asVector() const;
Vector4 & asVector(); Vector4 & asVector();
void operator*=(scalar s); void operator*=(float s);
private: private:
Vector4 p; Vector4 p;

View File

@ -18,7 +18,7 @@ namespace nv
inline const Plane & Plane::operator=(Plane::Arg v) { p = v.p; return *this; } inline const Plane & Plane::operator=(Plane::Arg v) { p = v.p; return *this; }
inline Vector3 Plane::vector() const { return p.xyz(); } inline Vector3 Plane::vector() const { return p.xyz(); }
inline scalar Plane::offset() const { return p.w; } inline float Plane::offset() const { return p.w; }
inline const Vector4 & Plane::asVector() const { return p; } inline const Vector4 & Plane::asVector() const { return p; }
inline Vector4 & Plane::asVector() { return p; } inline Vector4 & Plane::asVector() { return p; }
@ -38,7 +38,7 @@ namespace nv
return dot(plane.vector(), point) - plane.offset(); return dot(plane.vector(), point) - plane.offset();
} }
inline void Plane::operator*=(scalar s) inline void Plane::operator*=(float s)
{ {
scale(p, s); scale(p, s);
} }

View File

@ -8,30 +8,26 @@
namespace nv namespace nv
{ {
// I should probably use templates.
typedef float scalar;
class NVMATH_CLASS Vector2 class NVMATH_CLASS Vector2
{ {
public: public:
typedef Vector2 const & Arg; typedef Vector2 const & Arg;
Vector2(); Vector2();
explicit Vector2(scalar f); explicit Vector2(float f);
Vector2(scalar x, scalar y); Vector2(float x, float y);
Vector2(Vector2::Arg v); Vector2(Vector2::Arg v);
const Vector2 & operator=(Vector2::Arg v); const Vector2 & operator=(Vector2::Arg v);
const scalar * ptr() const; const float * ptr() const;
void set(scalar x, scalar y); void set(float x, float y);
Vector2 operator-() const; Vector2 operator-() const;
void operator+=(Vector2::Arg v); void operator+=(Vector2::Arg v);
void operator-=(Vector2::Arg v); void operator-=(Vector2::Arg v);
void operator*=(scalar s); void operator*=(float s);
void operator*=(Vector2::Arg v); void operator*=(Vector2::Arg v);
friend bool operator==(Vector2::Arg a, Vector2::Arg b); friend bool operator==(Vector2::Arg a, Vector2::Arg b);
@ -39,9 +35,9 @@ namespace nv
union { union {
struct { struct {
scalar x, y; float x, y;
}; };
scalar component[2]; float component[2];
}; };
}; };
@ -55,24 +51,24 @@ namespace nv
typedef Vector3 const & Arg; typedef Vector3 const & Arg;
Vector3(); Vector3();
explicit Vector3(scalar x); explicit Vector3(float x);
Vector3(scalar x, scalar y, scalar z); Vector3(float x, float y, float z);
Vector3(Vector2::Arg v, scalar z); Vector3(Vector2::Arg v, float z);
Vector3(Vector3::Arg v); Vector3(Vector3::Arg v);
const Vector3 & operator=(Vector3::Arg v); const Vector3 & operator=(Vector3::Arg v);
Vector2 xy() const; Vector2 xy() const;
const scalar * ptr() const; const float * ptr() const;
void set(scalar x, scalar y, scalar z); void set(float x, float y, float z);
Vector3 operator-() const; Vector3 operator-() const;
void operator+=(Vector3::Arg v); void operator+=(Vector3::Arg v);
void operator-=(Vector3::Arg v); void operator-=(Vector3::Arg v);
void operator*=(scalar s); void operator*=(float s);
void operator/=(scalar s); void operator/=(float s);
void operator*=(Vector3::Arg v); void operator*=(Vector3::Arg v);
friend bool operator==(Vector3::Arg a, Vector3::Arg b); friend bool operator==(Vector3::Arg a, Vector3::Arg b);
@ -80,9 +76,9 @@ namespace nv
union { union {
struct { struct {
scalar x, y, z; float x, y, z;
}; };
scalar component[3]; float component[3];
}; };
}; };
@ -96,11 +92,11 @@ namespace nv
typedef Vector4 const & Arg; typedef Vector4 const & Arg;
Vector4(); Vector4();
explicit Vector4(scalar x); explicit Vector4(float x);
Vector4(scalar x, scalar y, scalar z, scalar w); Vector4(float x, float y, float z, float w);
Vector4(Vector2::Arg v, scalar z, scalar w); Vector4(Vector2::Arg v, float z, float w);
Vector4(Vector2::Arg v, Vector2::Arg u); Vector4(Vector2::Arg v, Vector2::Arg u);
Vector4(Vector3::Arg v, scalar w); Vector4(Vector3::Arg v, float w);
Vector4(Vector4::Arg v); Vector4(Vector4::Arg v);
// Vector4(const Quaternion & v); // Vector4(const Quaternion & v);
@ -110,14 +106,14 @@ namespace nv
Vector2 zw() const; Vector2 zw() const;
Vector3 xyz() const; Vector3 xyz() const;
const scalar * ptr() const; const float * ptr() const;
void set(scalar x, scalar y, scalar z, scalar w); void set(float x, float y, float z, float w);
Vector4 operator-() const; Vector4 operator-() const;
void operator+=(Vector4::Arg v); void operator+=(Vector4::Arg v);
void operator-=(Vector4::Arg v); void operator-=(Vector4::Arg v);
void operator*=(scalar s); void operator*=(float s);
void operator*=(Vector4::Arg v); void operator*=(Vector4::Arg v);
friend bool operator==(Vector4::Arg a, Vector4::Arg b); friend bool operator==(Vector4::Arg a, Vector4::Arg b);
@ -125,9 +121,9 @@ namespace nv
union { union {
struct { struct {
scalar x, y, z, w; float x, y, z, w;
}; };
scalar component[4]; float component[4];
}; };
}; };

View File

@ -22,8 +22,8 @@ namespace nv
// Vector2 // Vector2
inline Vector2::Vector2() {} inline Vector2::Vector2() {}
inline Vector2::Vector2(scalar f) : x(f), y(f) {} inline Vector2::Vector2(float f) : x(f), y(f) {}
inline Vector2::Vector2(scalar x, scalar y) : x(x), y(y) {} inline Vector2::Vector2(float x, float y) : x(x), y(y) {}
inline Vector2::Vector2(Vector2::Arg v) : x(v.x), y(v.y) {} inline Vector2::Vector2(Vector2::Arg v) : x(v.x), y(v.y) {}
inline const Vector2 & Vector2::operator=(Vector2::Arg v) inline const Vector2 & Vector2::operator=(Vector2::Arg v)
@ -33,12 +33,12 @@ namespace nv
return *this; return *this;
} }
inline const scalar * Vector2::ptr() const inline const float * Vector2::ptr() const
{ {
return &x; return &x;
} }
inline void Vector2::set(scalar x, scalar y) inline void Vector2::set(float x, float y)
{ {
this->x = x; this->x = x;
this->y = y; this->y = y;
@ -61,7 +61,7 @@ namespace nv
y -= v.y; y -= v.y;
} }
inline void Vector2::operator*=(scalar s) inline void Vector2::operator*=(float s)
{ {
x *= s; x *= s;
y *= s; y *= s;
@ -85,9 +85,9 @@ namespace nv
// Vector3 // Vector3
inline Vector3::Vector3() {} inline Vector3::Vector3() {}
inline Vector3::Vector3(scalar f) : x(f), y(f), z(f) {} inline Vector3::Vector3(float f) : x(f), y(f), z(f) {}
inline Vector3::Vector3(scalar x, scalar y, scalar z) : x(x), y(y), z(z) {} inline Vector3::Vector3(float x, float y, float z) : x(x), y(y), z(z) {}
inline Vector3::Vector3(Vector2::Arg v, scalar z) : x(v.x), y(v.y), z(z) {} inline Vector3::Vector3(Vector2::Arg v, float z) : x(v.x), y(v.y), z(z) {}
inline Vector3::Vector3(Vector3::Arg v) : x(v.x), y(v.y), z(v.z) {} inline Vector3::Vector3(Vector3::Arg v) : x(v.x), y(v.y), z(v.z) {}
inline const Vector3 & Vector3::operator=(Vector3::Arg v) inline const Vector3 & Vector3::operator=(Vector3::Arg v)
@ -104,12 +104,12 @@ namespace nv
return Vector2(x, y); return Vector2(x, y);
} }
inline const scalar * Vector3::ptr() const inline const float * Vector3::ptr() const
{ {
return &x; return &x;
} }
inline void Vector3::set(scalar x, scalar y, scalar z) inline void Vector3::set(float x, float y, float z)
{ {
this->x = x; this->x = x;
this->y = y; this->y = y;
@ -135,14 +135,14 @@ namespace nv
z -= v.z; z -= v.z;
} }
inline void Vector3::operator*=(scalar s) inline void Vector3::operator*=(float s)
{ {
x *= s; x *= s;
y *= s; y *= s;
z *= s; z *= s;
} }
inline void Vector3::operator/=(scalar s) inline void Vector3::operator/=(float s)
{ {
float is = 1.0f / s; float is = 1.0f / s;
x *= is; x *= is;
@ -169,11 +169,11 @@ namespace nv
// Vector4 // Vector4
inline Vector4::Vector4() {} inline Vector4::Vector4() {}
inline Vector4::Vector4(scalar f) : x(f), y(f), z(f), w(f) {} inline Vector4::Vector4(float f) : x(f), y(f), z(f), w(f) {}
inline Vector4::Vector4(scalar x, scalar y, scalar z, scalar w) : x(x), y(y), z(z), w(w) {} inline Vector4::Vector4(float x, float y, float z, float w) : x(x), y(y), z(z), w(w) {}
inline Vector4::Vector4(Vector2::Arg v, scalar z, scalar w) : x(v.x), y(v.y), z(z), w(w) {} inline Vector4::Vector4(Vector2::Arg v, float z, float w) : x(v.x), y(v.y), z(z), w(w) {}
inline Vector4::Vector4(Vector2::Arg v, Vector2::Arg u) : x(v.x), y(v.y), z(u.x), w(u.y) {} inline Vector4::Vector4(Vector2::Arg v, Vector2::Arg u) : x(v.x), y(v.y), z(u.x), w(u.y) {}
inline Vector4::Vector4(Vector3::Arg v, scalar w) : x(v.x), y(v.y), z(v.z), w(w) {} inline Vector4::Vector4(Vector3::Arg v, float w) : x(v.x), y(v.y), z(v.z), w(w) {}
inline Vector4::Vector4(Vector4::Arg v) : x(v.x), y(v.y), z(v.z), w(v.w) {} inline Vector4::Vector4(Vector4::Arg v) : x(v.x), y(v.y), z(v.z), w(v.w) {}
inline const Vector4 & Vector4::operator=(const Vector4 & v) inline const Vector4 & Vector4::operator=(const Vector4 & v)
@ -200,12 +200,12 @@ namespace nv
return Vector3(x, y, z); return Vector3(x, y, z);
} }
inline const scalar * Vector4::ptr() const inline const float * Vector4::ptr() const
{ {
return &x; return &x;
} }
inline void Vector4::set(scalar x, scalar y, scalar z, scalar w) inline void Vector4::set(float x, float y, float z, float w)
{ {
this->x = x; this->x = x;
this->y = y; this->y = y;
@ -234,7 +234,7 @@ namespace nv
w -= v.w; w -= v.w;
} }
inline void Vector4::operator*=(scalar s) inline void Vector4::operator*=(float s)
{ {
x *= s; x *= s;
y *= s; y *= s;
@ -284,7 +284,7 @@ namespace nv
return sub(a, b); return sub(a, b);
} }
inline Vector2 scale(Vector2::Arg v, scalar s) inline Vector2 scale(Vector2::Arg v, float s)
{ {
return Vector2(v.x * s, v.y * s); return Vector2(v.x * s, v.y * s);
} }
@ -294,7 +294,7 @@ namespace nv
return Vector2(v.x * s.x, v.y * s.y); return Vector2(v.x * s.x, v.y * s.y);
} }
inline Vector2 operator*(Vector2::Arg v, scalar s) inline Vector2 operator*(Vector2::Arg v, float s)
{ {
return scale(v, s); return scale(v, s);
} }
@ -304,32 +304,32 @@ namespace nv
return Vector2(v1.x*v2.x, v1.y*v2.y); return Vector2(v1.x*v2.x, v1.y*v2.y);
} }
inline Vector2 operator*(scalar s, Vector2::Arg v) inline Vector2 operator*(float s, Vector2::Arg v)
{ {
return scale(v, s); return scale(v, s);
} }
inline Vector2 operator/(Vector2::Arg v, scalar s) inline Vector2 operator/(Vector2::Arg v, float s)
{ {
return scale(v, 1.0f/s); return scale(v, 1.0f/s);
} }
inline scalar dot(Vector2::Arg a, Vector2::Arg b) inline float dot(Vector2::Arg a, Vector2::Arg b)
{ {
return a.x * b.x + a.y * b.y; return a.x * b.x + a.y * b.y;
} }
inline scalar lengthSquared(Vector2::Arg v) inline float lengthSquared(Vector2::Arg v)
{ {
return v.x * v.x + v.y * v.y; return v.x * v.x + v.y * v.y;
} }
inline scalar length(Vector2::Arg v) inline float length(Vector2::Arg v)
{ {
return sqrtf(lengthSquared(v)); return sqrtf(lengthSquared(v));
} }
inline scalar inverseLength(Vector2::Arg v) inline float inverseLength(Vector2::Arg v)
{ {
return 1.0f / sqrtf(lengthSquared(v)); return 1.0f / sqrtf(lengthSquared(v));
} }
@ -444,7 +444,7 @@ namespace nv
return Vector3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x); return Vector3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x);
} }
inline Vector3 scale(Vector3::Arg v, scalar s) inline Vector3 scale(Vector3::Arg v, float s)
{ {
return Vector3(v.x * s, v.y * s, v.z * s); return Vector3(v.x * s, v.y * s, v.z * s);
} }
@ -454,12 +454,12 @@ namespace nv
return Vector3(v.x * s.x, v.y * s.y, v.z * s.z); return Vector3(v.x * s.x, v.y * s.y, v.z * s.z);
} }
inline Vector3 operator*(Vector3::Arg v, scalar s) inline Vector3 operator*(Vector3::Arg v, float s)
{ {
return scale(v, s); return scale(v, s);
} }
inline Vector3 operator*(scalar s, Vector3::Arg v) inline Vector3 operator*(float s, Vector3::Arg v)
{ {
return scale(v, s); return scale(v, s);
} }
@ -469,38 +469,38 @@ namespace nv
return scale(v, s); return scale(v, s);
} }
inline Vector3 operator/(Vector3::Arg v, scalar s) inline Vector3 operator/(Vector3::Arg v, float s)
{ {
return scale(v, 1.0f/s); return scale(v, 1.0f/s);
} }
/*inline Vector3 add_scaled(Vector3::Arg a, Vector3::Arg b, scalar s) /*inline Vector3 add_scaled(Vector3::Arg a, Vector3::Arg b, float s)
{ {
return Vector3(a.x + b.x * s, a.y + b.y * s, a.z + b.z * s); return Vector3(a.x + b.x * s, a.y + b.y * s, a.z + b.z * s);
}*/ }*/
inline Vector3 lerp(Vector3::Arg v1, Vector3::Arg v2, scalar t) inline Vector3 lerp(Vector3::Arg v1, Vector3::Arg v2, float t)
{ {
const scalar s = 1.0f - t; const float s = 1.0f - t;
return Vector3(v1.x * s + t * v2.x, v1.y * s + t * v2.y, v1.z * s + t * v2.z); return Vector3(v1.x * s + t * v2.x, v1.y * s + t * v2.y, v1.z * s + t * v2.z);
} }
inline scalar dot(Vector3::Arg a, Vector3::Arg b) inline float dot(Vector3::Arg a, Vector3::Arg b)
{ {
return a.x * b.x + a.y * b.y + a.z * b.z; return a.x * b.x + a.y * b.y + a.z * b.z;
} }
inline scalar lengthSquared(Vector3::Arg v) inline float lengthSquared(Vector3::Arg v)
{ {
return v.x * v.x + v.y * v.y + v.z * v.z; return v.x * v.x + v.y * v.y + v.z * v.z;
} }
inline scalar length(Vector3::Arg v) inline float length(Vector3::Arg v)
{ {
return sqrtf(lengthSquared(v)); return sqrtf(lengthSquared(v));
} }
inline scalar inverseLength(Vector3::Arg v) inline float inverseLength(Vector3::Arg v)
{ {
return 1.0f / sqrtf(lengthSquared(v)); return 1.0f / sqrtf(lengthSquared(v));
} }
@ -602,7 +602,7 @@ namespace nv
return sub(a, b); return sub(a, b);
} }
inline Vector4 scale(Vector4::Arg v, scalar s) inline Vector4 scale(Vector4::Arg v, float s)
{ {
return Vector4(v.x * s, v.y * s, v.z * s, v.w * s); return Vector4(v.x * s, v.y * s, v.z * s, v.w * s);
} }
@ -612,42 +612,42 @@ namespace nv
return Vector4(v.x * s.x, v.y * s.y, v.z * s.z, v.w * s.w); return Vector4(v.x * s.x, v.y * s.y, v.z * s.z, v.w * s.w);
} }
inline Vector4 operator*(Vector4::Arg v, scalar s) inline Vector4 operator*(Vector4::Arg v, float s)
{ {
return scale(v, s); return scale(v, s);
} }
inline Vector4 operator*(scalar s, Vector4::Arg v) inline Vector4 operator*(float s, Vector4::Arg v)
{ {
return scale(v, s); return scale(v, s);
} }
inline Vector4 operator/(Vector4::Arg v, scalar s) inline Vector4 operator/(Vector4::Arg v, float s)
{ {
return scale(v, 1.0f/s); return scale(v, 1.0f/s);
} }
inline Vector4 add_scaled(Vector4::Arg a, Vector4::Arg b, scalar s) inline Vector4 add_scaled(Vector4::Arg a, Vector4::Arg b, float s)
{ {
return Vector4(a.x + b.x * s, a.y + b.y * s, a.z + b.z * s, a.w + b.w * s); return Vector4(a.x + b.x * s, a.y + b.y * s, a.z + b.z * s, a.w + b.w * s);
} }
inline scalar dot(Vector4::Arg a, Vector4::Arg b) inline float dot(Vector4::Arg a, Vector4::Arg b)
{ {
return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
} }
inline scalar lengthSquared(Vector4::Arg v) inline float lengthSquared(Vector4::Arg v)
{ {
return v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w; return v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w;
} }
inline scalar length(Vector4::Arg v) inline float length(Vector4::Arg v)
{ {
return sqrtf(lengthSquared(v)); return sqrtf(lengthSquared(v));
} }
inline scalar inverseLength(Vector4::Arg v) inline float inverseLength(Vector4::Arg v)
{ {
return 1.0f / sqrtf(lengthSquared(v)); return 1.0f / sqrtf(lengthSquared(v));
} }

View File

@ -49,7 +49,7 @@ void ClusterFit::setColourSet(const ColorSet * set)
#endif #endif
// cache some values // cache some values
m_count = set->count; m_count = set->colorCount;
Vector3 values[16]; Vector3 values[16];
for (uint i = 0; i < m_count; i++) for (uint i = 0; i < m_count; i++)
@ -148,7 +148,7 @@ bool ClusterFit::compress3( Vector3 * start, Vector3 * end )
SimdVector besterror = SimdVector( FLT_MAX ); SimdVector besterror = SimdVector( FLT_MAX );
SimdVector x0 = zero; SimdVector x0 = zero;
int b0 = 0, b1 = 0; int b0 = 0, b1 = 0;
// check all possible clusters for this total order // check all possible clusters for this total order
@ -191,22 +191,22 @@ bool ClusterFit::compress3( Vector3 * start, Vector3 * end )
SimdVector e3 = negativeMultiplySubtract( b, betax_sum, e2 ); SimdVector e3 = negativeMultiplySubtract( b, betax_sum, e2 );
SimdVector e4 = multiplyAdd( two, e3, e1 ); SimdVector e4 = multiplyAdd( two, e3, e1 );
// apply the metric to the error term // apply the metric to the error term
SimdVector e5 = e4 * m_metricSqr; SimdVector e5 = e4 * m_metricSqr;
SimdVector error = e5.splatX() + e5.splatY() + e5.splatZ(); SimdVector error = e5.splatX() + e5.splatY() + e5.splatZ();
// keep the solution if it wins // keep the solution if it wins
if( compareAnyLessThan( error, besterror ) ) if( compareAnyLessThan( error, besterror ) )
{ {
besterror = error; besterror = error;
beststart = a; beststart = a;
bestend = b; bestend = b;
b0 = c0; b0 = c0;
b1 = c1; b1 = c1;
} }
x1 += m_weighted[c0+c1]; x1 += m_weighted[c0+c1];
} }
x0 += m_weighted[c0]; x0 += m_weighted[c0];
} }
@ -218,8 +218,8 @@ bool ClusterFit::compress3( Vector3 * start, Vector3 * end )
*start = beststart.toVector3(); *start = beststart.toVector3();
*end = bestend.toVector3(); *end = bestend.toVector3();
// save the error // save the error
m_besterror = besterror; m_besterror = besterror;
return true; return true;
} }
@ -308,10 +308,10 @@ bool ClusterFit::compress4( Vector3 * start, Vector3 * end )
} }
x2 += m_weighted[c0+c1+c2]; x2 += m_weighted[c0+c1+c2];
} }
x1 += m_weighted[c0+c1]; x1 += m_weighted[c0+c1];
} }
x0 += m_weighted[c0]; x0 += m_weighted[c0];
} }
@ -321,9 +321,9 @@ bool ClusterFit::compress4( Vector3 * start, Vector3 * end )
{ {
*start = beststart.toVector3(); *start = beststart.toVector3();
*end = bestend.toVector3(); *end = bestend.toVector3();
// save the error // save the error
m_besterror = besterror; m_besterror = besterror;
return true; return true;
} }
@ -404,12 +404,12 @@ bool ClusterFit::compress3(Vector3 * start, Vector3 * end)
// save the block if necessary // save the block if necessary
if( besterror < m_besterror ) if( besterror < m_besterror )
{ {
*start = beststart; *start = beststart;
*end = bestend; *end = bestend;
// save the error // save the error
m_besterror = besterror; m_besterror = besterror;
return true; return true;
} }
@ -420,8 +420,8 @@ bool ClusterFit::compress3(Vector3 * start, Vector3 * end)
bool ClusterFit::compress4(Vector3 * start, Vector3 * end) bool ClusterFit::compress4(Vector3 * start, Vector3 * end)
{ {
const uint count = m_count; const uint count = m_count;
Vector3 const grid( 31.0f, 63.0f, 31.0f ); const Vector3 grid( 31.0f, 63.0f, 31.0f );
Vector3 const gridrcp( 1.0f/31.0f, 1.0f/63.0f, 1.0f/31.0f ); const Vector3 gridrcp( 1.0f/31.0f, 1.0f/63.0f, 1.0f/31.0f );
// declare variables // declare variables
Vector3 beststart( 0.0f ); Vector3 beststart( 0.0f );

View File

@ -179,8 +179,13 @@ inline static uint computeIndices4(const ColorSet & set, Vector3::Arg maxColor,
palette[3] = lerp(palette[0], palette[1], 2.0f / 3.0f); palette[3] = lerp(palette[0], palette[1], 2.0f / 3.0f);
uint indices = 0; uint indices = 0;
for(int i = 0; i < 16; i++) for(int i = 0; i < 16; i++)
{ {
if (!set.isValidIndex(i)) {
// Skip masked pixels and out of bounds.
continue;
}
Vector3 color = set.color(i).xyz(); Vector3 color = set.color(i).xyz();
float d0 = colorDistance(palette[0], color); float d0 = colorDistance(palette[0], color);
@ -237,16 +242,20 @@ inline static uint computeIndices3(const ColorSet & set, Vector3::Arg maxColor,
uint indices = 0; uint indices = 0;
for(int i = 0; i < 16; i++) for(int i = 0; i < 16; i++)
{ {
if (!set.isValidIndex(i)) {
// Skip masked pixels and out of bounds.
indices |= 3 << (2 * i);
continue;
}
Vector3 color = set.color(i).xyz(); Vector3 color = set.color(i).xyz();
float alpha = set.color(i).w;
float d0 = colorDistance(palette[0], color); float d0 = colorDistance(palette[0], color);
float d1 = colorDistance(palette[1], color); float d1 = colorDistance(palette[1], color);
float d2 = colorDistance(palette[2], color); float d2 = colorDistance(palette[2], color);
uint index; uint index;
if (alpha == 0) index = 3; if (d0 < d1 && d0 < d2) index = 0;
else if (d0 < d1 && d0 < d2) index = 0;
else if (d1 < d2) index = 1; else if (d1 < d2) index = 1;
else index = 2; else index = 2;

View File

@ -72,11 +72,11 @@ struct Error
mse = 0.0f; mse = 0.0f;
} }
void addSample(float e) void addSample(double e)
{ {
samples++; samples++;
mabse += fabsf(e); mabse += fabs(e);
maxabse = nv::max(maxabse, fabsf(e)); maxabse = nv::max(maxabse, fabs(e));
mse += e * e; mse += e * e;
} }
@ -84,8 +84,8 @@ struct Error
{ {
mabse /= samples; mabse /= samples;
mse /= samples; mse /= samples;
rmse = sqrtf(mse); rmse = sqrt(mse);
psnr = (rmse == 0) ? 999.0f : 20.0f * log10(255.0f / rmse); psnr = (rmse == 0) ? 999.0 : 20.0 * log10(255.0 / rmse);
} }
void print() void print()
@ -97,11 +97,11 @@ struct Error
} }
int samples; int samples;
float mabse; double mabse;
float maxabse; double maxabse;
float mse; double mse;
float rmse; double rmse;
float psnr; double psnr;
}; };
struct NormalError struct NormalError
@ -230,10 +230,10 @@ int main(int argc, char *argv[])
const nv::Color32 c0(image0.pixel(e, i)); const nv::Color32 c0(image0.pixel(e, i));
const nv::Color32 c1(image1.pixel(e, i)); const nv::Color32 c1(image1.pixel(e, i));
float r = float(c0.r - c1.r); double r = float(c0.r - c1.r);
float g = float(c0.g - c1.g); double g = float(c0.g - c1.g);
float b = float(c0.b - c1.b); double b = float(c0.b - c1.b);
float a = float(c0.a - c1.a); double a = float(c0.a - c1.a);
error_r.addSample(r); error_r.addSample(r);
error_g.addSample(g); error_g.addSample(g);
@ -247,9 +247,9 @@ int main(int argc, char *argv[])
if (compareAlpha) if (compareAlpha)
{ {
error_total.addSample(r * c0.a / 255.0f); error_total.addSample(r * c0.a / 255.0);
error_total.addSample(g * c0.a / 255.0f); error_total.addSample(g * c0.a / 255.0);
error_total.addSample(b * c0.a / 255.0f); error_total.addSample(b * c0.a / 255.0);
} }
else else
{ {