示例#1
0
static void	glossyReflectiveConstructor(GlossyReflectiveClass *self,
                                        va_list *list)
{
    Phong->__constructor__(self, list);
    MATERIAL(self)->shadeRGB = &glossyReflectiveShadeRGB;
    MATERIAL(self)->shadePath = &glossyReflectiveShadePath;
}
示例#2
0
static Color		emissiveGetLe(EmissiveClass *self)
{
  Color			color;

  color = MATERIAL(self)->color;
  colorMult(&color, PRIV(mLs));
  return (color);
}
示例#3
0
static Color		emissiveShadeRGB(EmissiveClass *self,
                                      HitRecordStruct *hitRecord)
{
  Color			color;

  color = MATERIAL(self)->color;
  colorMult(&color, emissiveShade(self, hitRecord, NULL));
  return (color);
}
示例#4
0
void	*emissiveUnserialize(SceneSerializerClass *serializer,
                           xmlNodePtr node)
{
  EmissiveClass		*self;
  MaterialIdAssoc	*assoc;
  char			*strId;
  char			*strLs;
  float			ls;

  self = new(Emissive);
  if (materialUnserializeSet(serializer, node, self) != 0)
    return (0);
  serializer->setStrsFromProp(serializer, node, "id", &strId,
		  "ls", &strLs, NULL);
  assoc = xmalloc(sizeof(*assoc));
  *assoc = (MaterialIdAssoc) {false, strId, MATERIAL(self)};
  if (setFloatFromStr(strLs, &ls) != 0)
  {
    fprintf(stderr, "Error: bad attributes\n");
    return (0);
  }
  self->scaleRadiance(self, ls);
  return (assoc);
}
示例#5
0
Cube::Cube(Object *parent, const material_t material, const point3d_t dim, const point3d_t p, const point3d_t d) :
	Shape(parent, material, p, d), dim(dim),
	top1(this, MATERIAL(COLOR_RED),
	      POINT3D(dim.x/2.0, dim.y/2.0, dim.z/2.0), // (x, y, z)
	      POINT3D(dim.x/2.0, dim.y/2.0, -dim.z/2.0), // (x, y, -z)
	      POINT3D(-dim.x/2.0, dim.y/2.0, dim.z/2.0)), // (-x, y, z)
	top2(this, MATERIAL(COLOR_RED),
	      POINT3D(-dim.x/2.0, dim.y/2.0, dim.z/2.0), // (-x, y, z)
	      POINT3D(dim.x/2.0, dim.y/2.0, -dim.z/2.0), // (x, y, -z)
	      POINT3D(-dim.x/2.0, dim.y/2.0, -dim.z/2.0)), // (-x, y, -z)
	bottom1(this, MATERIAL(COLOR_RED),
	      POINT3D(-dim.x/2.0, -dim.y/2.0, dim.z/2.0), // (-x, -y, z)
	      POINT3D(dim.x/2.0, -dim.y/2.0, -dim.z/2.0), // (x, -y, -z)
	      POINT3D(dim.x/2.0, -dim.y/2.0, dim.z/2.0)), // (x, -y, z)
	bottom2(this, MATERIAL(COLOR_RED),
	      POINT3D(-dim.x/2.0, -dim.y/2.0, -dim.z/2.0), // (-x, -y, -z)
	      POINT3D(dim.x/2.0, -dim.y/2.0, -dim.z/2.0), // (x, -y, -z)
	      POINT3D(-dim.x/2.0, -dim.y/2.0, dim.z/2.0)), // (-x. -y. z)
	left1(this, MATERIAL(COLOR_BLUE),
	      POINT3D(-dim.x/2.0, dim.y/2.0, dim.z/2.0), // (-x, y, z)
	      POINT3D(-dim.x/2.0, dim.y/2.0, -dim.z/2.0), // (-x, y, -z)
	      POINT3D(-dim.x/2.0, -dim.y/2.0, dim.z/2.0)), // (-x, -y, z)
	left2(this, MATERIAL(COLOR_BLUE),
	      POINT3D(-dim.x/2.0, dim.y/2.0, -dim.z/2.0), // (-x, y, -z)
	      POINT3D(-dim.x/2.0, -dim.y/2.0, -dim.z/2.0), // (-x, -y, -z)
	      POINT3D(-dim.x/2.0, -dim.y/2.0, dim.z/2.0)), // (-x, -y, z)
	right1(this, MATERIAL(COLOR_BLUE),
	      POINT3D(dim.x/2.0, -dim.y/2.0, dim.z/2.0), // (x, -y, z)
	      POINT3D(dim.x/2.0, -dim.y/2.0, -dim.z/2.0), // (x, -y, -z)
	      POINT3D(dim.x/2.0, dim.y/2.0, -dim.z/2.0)), // (x, y, -z)
	right2(this, MATERIAL(COLOR_BLUE),
	      POINT3D(dim.x/2.0, -dim.y/2.0, dim.z/2.0), // (x, -y, z)
	      POINT3D(dim.x/2.0, dim.y/2.0, -dim.z/2.0), // (x, y, -z)
	      POINT3D(dim.x/2.0, dim.y/2.0, dim.z/2.0)), // (x, y, z)
	front1(this, MATERIAL(COLOR_GREEN),
	      POINT3D(dim.x/2.0, dim.y/2.0, dim.z/2.0), // (x, y, z)
	      POINT3D(-dim.x/2.0, -dim.y/2.0, dim.z/2.0), // (-x, -y ,z)
	      POINT3D(dim.x/2.0, -dim.y/2.0, dim.z/2.0)), // (x, -y, z)
	front2(this, MATERIAL(COLOR_GREEN),
	      POINT3D(dim.x/2.0, dim.y/2.0, dim.z/2.0), // (x, y, z)
	      POINT3D(-dim.x/2.0, dim.y/2.0, dim.z/2.0), // (-x, y, z)
	      POINT3D(-dim.x/2.0, -dim.y/2.0, dim.z/2.0)), // (-x, -y, z)
	back1(this, MATERIAL(COLOR_GREEN),
	      POINT3D(dim.x/2.0, -dim.y/2.0, -dim.z/2.0), // (x, -y, -z)
	      POINT3D(-dim.x/2.0, -dim.y/2.0, -dim.z/2.0), // (-x, -y, -z)
	      POINT3D(dim.x/2.0, dim.y/2.0, -dim.z/2.0)), // (x, y, -z)
	back2(this, MATERIAL(COLOR_GREEN),
	      POINT3D(-dim.x/2.0, -dim.y/2.0, -dim.z/2.0), // (-x, -y, -z)
	      POINT3D(-dim.x/2.0, dim.y/2.0, -dim.z/2.0), // (-x, y, -z)
	      POINT3D(dim.x/2.0, dim.y/2.0, -dim.z/2.0)) // (x, y, -z)
{
}