blender/intern/cycles/render/nodes.h
Ton Roosendaal da376e0237 Cycles render engine, initial commit. This is the engine itself, blender modifications and build instructions will follow later.
Cycles uses code from some great open source projects, many thanks them:

* BVH building and traversal code from NVidia's "Understanding the Efficiency of Ray Traversal on GPUs":
http://code.google.com/p/understanding-the-efficiency-of-ray-traversal-on-gpus/
* Open Shading Language for a large part of the shading system:
http://code.google.com/p/openshadinglanguage/
* Blender for procedural textures and a few other nodes.
* Approximate Catmull Clark subdivision from NVidia Mesh tools:
http://code.google.com/p/nvidia-mesh-tools/
* Sobol direction vectors from:
http://web.maths.unsw.edu.au/~fkuo/sobol/
* Film response functions from:
http://www.cs.columbia.edu/CAVE/software/softlib/dorf.php
2011-04-27 11:58:34 +00:00

340 lines
6.2 KiB
C++

/*
* Copyright 2011, Blender Foundation.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef __NODES_H__
#define __NODES_H__
#include "graph.h"
#include "util_string.h"
CCL_NAMESPACE_BEGIN
class ImageManager;
class Shadr;
/* Nodes */
class ImageTextureNode : public ShaderNode {
public:
SHADER_NODE_NO_CLONE_CLASS(ImageTextureNode)
~ImageTextureNode();
ShaderNode *clone() const;
ImageManager *image_manager;
int slot;
string filename;
};
class EnvironmentTextureNode : public ShaderNode {
public:
SHADER_NODE_NO_CLONE_CLASS(EnvironmentTextureNode)
~EnvironmentTextureNode();
ShaderNode *clone() const;
ImageManager *image_manager;
int slot;
string filename;
};
class SkyTextureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(SkyTextureNode)
float3 sun_direction;
float turbidity;
};
class OutputNode : public ShaderNode {
public:
SHADER_NODE_CLASS(OutputNode)
};
class NoiseTextureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(NoiseTextureNode)
};
class BlendTextureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(BlendTextureNode)
ustring progression;
ustring axis;
static ShaderEnum progression_enum;
static ShaderEnum axis_enum;
};
class CloudsTextureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(CloudsTextureNode)
bool hard;
int depth;
ustring basis;
static ShaderEnum basis_enum;
};
class VoronoiTextureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(VoronoiTextureNode)
ustring distance_metric;
ustring coloring;
static ShaderEnum distance_metric_enum;
static ShaderEnum coloring_enum;
};
class MusgraveTextureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(MusgraveTextureNode)
ustring type;
ustring basis;
static ShaderEnum type_enum;
static ShaderEnum basis_enum;
};
class MarbleTextureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(MarbleTextureNode)
ustring type;
ustring wave;
ustring basis;
bool hard;
int depth;
static ShaderEnum type_enum;
static ShaderEnum wave_enum;
static ShaderEnum basis_enum;
};
class MagicTextureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(MagicTextureNode)
int depth;
};
class StucciTextureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(StucciTextureNode)
ustring type;
ustring basis;
bool hard;
static ShaderEnum type_enum;
static ShaderEnum basis_enum;
};
class DistortedNoiseTextureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(DistortedNoiseTextureNode)
ustring basis;
ustring distortion_basis;
static ShaderEnum basis_enum;
};
class WoodTextureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(WoodTextureNode)
ustring type;
ustring wave;
ustring basis;
bool hard;
static ShaderEnum type_enum;
static ShaderEnum wave_enum;
static ShaderEnum basis_enum;
};
class MappingNode : public ShaderNode {
public:
SHADER_NODE_CLASS(MappingNode)
Transform compute_transform();
float3 translation;
float3 rotation;
float3 scale;
};
class ConvertNode : public ShaderNode {
public:
ConvertNode(ShaderSocketType from, ShaderSocketType to);
SHADER_NODE_BASE_CLASS(ConvertNode)
ShaderSocketType from, to;
};
class BsdfNode : public ShaderNode {
public:
SHADER_NODE_CLASS(BsdfNode)
void compile(SVMCompiler& compiler, ShaderInput *param1, ShaderInput *param2);
ClosureType closure;
};
class WardBsdfNode : public BsdfNode {
public:
SHADER_NODE_CLASS(WardBsdfNode)
};
class DiffuseBsdfNode : public BsdfNode {
public:
SHADER_NODE_CLASS(DiffuseBsdfNode)
};
class TranslucentBsdfNode : public BsdfNode {
public:
SHADER_NODE_CLASS(TranslucentBsdfNode)
};
class TransparentBsdfNode : public BsdfNode {
public:
SHADER_NODE_CLASS(TransparentBsdfNode)
};
class VelvetBsdfNode : public BsdfNode {
public:
SHADER_NODE_CLASS(VelvetBsdfNode)
};
class GlossyBsdfNode : public BsdfNode {
public:
SHADER_NODE_CLASS(GlossyBsdfNode)
ustring distribution;
static ShaderEnum distribution_enum;
};
class GlassBsdfNode : public BsdfNode {
public:
SHADER_NODE_CLASS(GlassBsdfNode)
ustring distribution;
static ShaderEnum distribution_enum;
};
class EmissionNode : public ShaderNode {
public:
SHADER_NODE_CLASS(EmissionNode)
bool total_power;
};
class BackgroundNode : public ShaderNode {
public:
SHADER_NODE_CLASS(BackgroundNode)
};
class GeometryNode : public ShaderNode {
public:
SHADER_NODE_CLASS(GeometryNode)
};
class TextureCoordinateNode : public ShaderNode {
public:
SHADER_NODE_CLASS(TextureCoordinateNode)
void attributes(AttributeRequestSet *attributes);
};
class LightPathNode : public ShaderNode {
public:
SHADER_NODE_CLASS(LightPathNode)
};
class ValueNode : public ShaderNode {
public:
SHADER_NODE_CLASS(ValueNode)
float value;
};
class ColorNode : public ShaderNode {
public:
SHADER_NODE_CLASS(ColorNode)
float3 value;
};
class AddClosureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(AddClosureNode)
};
class MixClosureNode : public ShaderNode {
public:
SHADER_NODE_CLASS(MixClosureNode)
};
class MixNode : public ShaderNode {
public:
SHADER_NODE_CLASS(MixNode)
ustring type;
static ShaderEnum type_enum;
};
class AttributeNode : public ShaderNode {
public:
SHADER_NODE_CLASS(AttributeNode)
void attributes(AttributeRequestSet *attributes);
ustring attribute;
};
class FresnelNode : public ShaderNode {
public:
SHADER_NODE_CLASS(FresnelNode)
};
class MathNode : public ShaderNode {
public:
SHADER_NODE_CLASS(MathNode)
ustring type;
static ShaderEnum type_enum;
};
class VectorMathNode : public ShaderNode {
public:
SHADER_NODE_CLASS(VectorMathNode)
ustring type;
static ShaderEnum type_enum;
};
class BumpNode : public ShaderNode {
public:
SHADER_NODE_CLASS(BumpNode)
};
CCL_NAMESPACE_END
#endif /* __NODES_H__ */