- PixelBlend16 and PixelBlend16_simd are working for the new rules. - bugfix. CLightSceneNode didn't correctly update it's attributes Lighting Linear Attenuation. = 1.f / radius The Example loadirr files set the lightscene radius to 1000.f but stays on the previous default attentuation with the older radius 100 -> 1.f / 100 so the examples looks golden-brown. Now the radius is correctly!! set to the attenuation of 1.f/1000.f because the file doesn't have special attenuation. and now it looks more yellow. can anybody show me a correct screenshot for this file;-)? Niko? Or is this behavior the default lighting?. then it would be a fixed constant linear attenuation of 0.01f;-). Please clearify For now i didn't fixed it I encountered this behavior because i ( burning video ) used the original radius for calculations and so i've found that radius != 1.f / linearAttenuation but in the LightSceneNode this formula was used.. confused;-) - vector template and equals tests as working with the test suits i cleaned the template behavior (mixed types are used in the templates) and added all missing special math function with their coressponding type I also set the equal test for s32 to behave like the f32 routine. The function equals always implements a weak test. that means a tolerance MUST always be used if you use the equal function. default is 1. you can set it to zero a==b-> equals ( a, b, 0 ) but do it explicit like you have to for floating compare. This is important when irrlicht is going to use special hardware math acceleration on a per function base, like sse2, or the other way round fixpoint. - VideoDriver drawPixel The HW renderes are using the alpha components for blending. The Software Renderes and image loaders are using CImage::setPixel copy. so setPixel is engaged to either blends or copy the pixel default: false - Burningvideo added RenderMaterial EMT_SPHERE_MAP pushed burningsvideo to 0.43 added RenderMaterial EMT_REFLECTION_2_LAYER pushed burningsvideo to 0.44 set EMT_TRANSPARENT_ALPHA_CHANNEL_REF to use AlphaRef 0.5 like Direct3D One Note: in OpenGL there is know difference between sphere_map and reflection layer both using GL_TEXTURE_GEN_MODE GL_SPHERE_MAP, whereas in d3d one time using camera_normal on sphere and reflection on refletcion_layer. The visual difference is that on sphere map the "image is not moving" when you rotate the viewer. For Buring i took the opengl visual. always moving - rename quake3 SEntity to IEntity to be confom with IShader even IShader and IEntity are none pure virtual interfaces like most irrlicht objects git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2207 dfc29bdd-3216-0410-991c-e03cc46cb475
135 lines
2.7 KiB
C++
135 lines
2.7 KiB
C++
// Copyright (C) 2008-2009 Colin MacDonald and Christian Stehno
|
|
// No rights reserved: this software is in the public domain.
|
|
|
|
#include "testUtils.h"
|
|
#include "irrlicht.h"
|
|
#include <assert.h>
|
|
|
|
bool irrCoreEquals(void)
|
|
{
|
|
// float tests
|
|
if(!irr::core::equals(99.f, 99.f))
|
|
{
|
|
logTestString("irr::core::equals(f32, f32 (, default)) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(!irr::core::equals(99.f, 98.f, 1.f))
|
|
{
|
|
logTestString("irr::core::equals(f32, f32, f32) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
// double tests
|
|
if(!irr::core::equals(99.0, 99.0))
|
|
{
|
|
logTestString("irr::core::equals(f64, f64 (,default)) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(!irr::core::equals(99.0, 98.0, 1.0))
|
|
{
|
|
logTestString("irr::core::equals(f64, f64, f64) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
// int tests
|
|
if(!irr::core::equals(99, 99))
|
|
{
|
|
logTestString("irr::core::equals(s32, s32 (,default)) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(!irr::core::equals(99, 98, 1))
|
|
{
|
|
logTestString("irr::core::equals(s32, s32, s32) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(irr::core::equals(99, 98, 0))
|
|
{
|
|
logTestString("irr::core::equals(s32, s32, 0) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(!irr::core::equals(-99, -99))
|
|
{
|
|
logTestString("irr::core::equals(s32, s32 (,default)) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(!irr::core::equals(-99, -98, 1))
|
|
{
|
|
logTestString("irr::core::equals(s32, s32, s32) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(irr::core::equals(-99, -98, 0))
|
|
{
|
|
logTestString("irr::core::equals(s32, s32, 0) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
// iszero is a specialized equals method
|
|
// float tests
|
|
if(!irr::core::iszero(.0f))
|
|
{
|
|
logTestString("irr::core::iszero(f32 (,default)) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(irr::core::iszero(-1.0f))
|
|
{
|
|
logTestString("irr::core::iszero(f32 (,default)) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(!irr::core::iszero(1.0f, 1.0f))
|
|
{
|
|
logTestString("irr::core::iszero(f32, f32) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
// double tests
|
|
if(!irr::core::iszero(0.0))
|
|
{
|
|
logTestString("irr::core::iszero(f64 (,default)) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(irr::core::iszero(-1.0))
|
|
{
|
|
logTestString("irr::core::iszero(f64 (,default)) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(!irr::core::iszero(-2.0, 2.0))
|
|
{
|
|
logTestString("irr::core::iszero(f64, f64) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
// int tests
|
|
if(!irr::core::iszero(0))
|
|
{
|
|
logTestString("irr::core::iszero(s32 (,default)) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(irr::core::iszero(-1))
|
|
{
|
|
logTestString("irr::core::iszero(s32 (,default)) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
if(!irr::core::iszero(1, 1))
|
|
{
|
|
logTestString("irr::core::iszero(s32, s32) failed.\n");
|
|
return false;
|
|
}
|
|
|
|
|
|
return true;
|
|
}
|
|
|