source: GTP/branches/IllumWPdeliver2008dec/IlluminationWP/demos/Standalone/PathMap [DirectX]/TexturedMaterial.cpp @ 3255

Revision 3255, 1.3 KB checked in by szirmay, 15 years ago (diff)
Line 
1#include "dxstdafx.h"
2#include "texturedmaterial.h"
3
4TexturedMaterial::TexturedMaterial(void* pdata, int pitch, int textureWidth, int textureHeight)
5:Material(Vector::RGBLIGHTYELLOW, Vector::RGBLIGHTYELLOW, 4.0)
6{
7        this->pdata = new unsigned char[pitch * textureHeight];
8        memcpy(this->pdata, pdata, pitch * textureHeight);
9        this->pitch = pitch;
10        this->imageWidth = textureWidth;
11        this->imageHeight = textureHeight;
12}
13
14TexturedMaterial::~TexturedMaterial(void)
15{
16        delete pdata;
17}
18
19Vector TexturedMaterial::getTextureDiffuseBrdf(const Vector& atPoint) const
20{
21        Vector qp = atPoint;
22        qp.x -= floor(qp.x);
23        qp.y -= floor(qp.y);
24        unsigned int dataIndex = floor(fabsf(qp.x) * imageWidth) * 4 +
25                floor(fabsf(1.0 - fabsf(qp.y)) * imageHeight) * pitch;
26        if(dataIndex >= pitch * imageHeight)
27                return Vector::RGBBLACK;
28        return Vector(
29                pdata[dataIndex+2] / 255.0,
30                pdata[dataIndex+1] / 255.0,
31                pdata[dataIndex] / 255.0);
32}
33
34Vector TexturedMaterial::getTextureIdealBrdf(const Vector& atPoint) const
35{
36        return Vector::RGBBLACK;
37}
38
39float TexturedMaterial::getTextureDiffuseAlbedo(const Vector& uv) const
40{
41        return getTextureDiffuseBrdf(uv).sum() / 3.0;
42}
43
44float TexturedMaterial::getTextureIdealAlbedo(const Vector& uv) const
45{
46        return getTextureIdealBrdf(uv).sum() / 3.0;
47}
Note: See TracBrowser for help on using the repository browser.