#include <math.h>
#include "extensionmanager.h"
#include "textureextension.h"
class CproceduralChecker : public CtextureExtension
{
DECLARE_EXTENSION_METHODS( "Checker", CproceduralChecker, 1 )
unsigned int uRepeat, vRepeat;
Cmaxwell* pMaxwellLocal;
public:
CproceduralChecker()
{
getExtensionData()->createUInt( "repeatU", 10, 1, 10000 );
getExtensionData()->createUInt( "repeatV", 10, 1, 10000 );
}
~CproceduralChecker()
{
}
bool initializeForRendering( Cmaxwell* pMaxwell )
{
pMaxwellLocal = pMaxwell;
getExtensionData()->getUInt( "repeatU", uRepeat );
getExtensionData()->getUInt( "repeatV", vRepeat );
return true;
}
bool getRGB( Crgb& rgb, real u, real v, const IntersectionInfo* intersectionInfo )
{
int pu = ( ( int )( uRepeat * fabs( u ) ) ) % 2;
int pv = ( ( int )( vRepeat * fabs( v ) ) ) % 2;
rgb.r *= pu ^ pv;
rgb.g *= pu ^ pv;
rgb.b *= pu ^ pv;
return true;
}
};
EXPORT_TEXTURE_EXTENSION( CproceduralChecker ) |