The spica renderer
Main Page
Modules
Classes
Files
File List
sources
core
texture.h
1
#ifdef _MSC_VER
2
#pragma once
3
#endif
4
5
#ifndef _SPICA_TEXTURE_H_
6
#define _SPICA_TEXTURE_H_
7
8
#include "core/core.hpp"
9
#include "core/common.h"
10
#include "core/cobject.h"
11
#include "core/vector3d.h"
12
13
#include "core/render.hpp"
14
15
namespace
spica {
16
20
class
SPICA_EXPORTS
TextureMapping2D
{
21
public
:
22
virtual
~
TextureMapping2D
() {}
23
24
virtual
Point2d
map(
const
Point3d
& p)
const
= 0;
25
virtual
Point2d
map(
const
SurfaceInteraction
& intr,
26
Vector2d
*dstdx =
nullptr
,
27
Vector2d
*dstdy =
nullptr
)
const
= 0;
28
};
29
30
class
SPICA_EXPORTS
UVMapping2D
:
public
TextureMapping2D
{
31
public
:
32
explicit
UVMapping2D
(
double
su = 1.0,
double
sv = 1.0,
33
double
du = 0.0,
double
dv = 0.0,
34
bool
invertHorizontal =
true
);
35
36
Point2d
map(
const
Point3d
& p)
const override
;
37
Point2d
map(
const
SurfaceInteraction
&intr,
38
Vector2d
*dstdx =
nullptr
,
39
Vector2d
*dstdy =
nullptr
)
const override
;
40
41
private
:
42
const
double
su_, sv_, du_, dv_;
43
const
bool
invertHorizontal_;
44
};
45
46
class
SPICA_EXPORTS
PlanarMapping2D
:
public
TextureMapping2D
{
47
public
:
48
PlanarMapping2D
(
const
Vector3d
& vs,
const
Vector3d
& vt,
double
ds = 0.0,
49
double
dt = 0.0);
50
51
Point2d
map(
const
Point3d
& p)
const override
;
52
Point2d
map(
const
SurfaceInteraction
& intr,
53
Vector2d
* dstdx =
nullptr
,
54
Vector2d
* dstdy =
nullptr
)
const override
;
55
56
private
:
57
const
Vector3d
vs_, vt_;
58
const
double
ds_, dt_;
59
};
60
64
template
<
class
T>
65
class
SPICA_EXPORTS
Texture
:
public
CObject
{
66
public
:
67
virtual
T evaluate(
const
SurfaceInteraction
& intr)
const
= 0;
68
virtual
~
Texture
() {}
69
};
70
71
}
// namespace spica
72
73
#endif // _SPICA_TEXTURE_H_
spica::SurfaceInteraction
Definition:
interaction.h:68
spica::CObject
Definition:
cobject.h:24
spica::Vector2_< double >
spica::Vector3_< double >
spica::Point2_< double >
spica::Point3_< double >
spica::TextureMapping2D
Texture mapping interface.
Definition:
texture.h:20
spica::Texture
Texture interface.
Definition:
render.hpp:60
spica::UVMapping2D
Definition:
texture.h:30
spica::PlanarMapping2D
Definition:
texture.h:46
Generated by
1.8.6