gpuray_glsl
diff src/material.h @ 0:f234630e38ff
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 09 Nov 2014 13:03:36 +0200 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/material.h Sun Nov 09 13:03:36 2014 +0200 1.3 @@ -0,0 +1,50 @@ 1.4 +/* 1.5 +Simple introductory ray tracer 1.6 +Copyright (C) 2012 John Tsiombikas <nuclear@member.fsf.org> 1.7 + 1.8 +This program is free software: you can redistribute it and/or modify 1.9 +it under the terms of the GNU General Public License as published by 1.10 +the Free Software Foundation, either version 3 of the License, or 1.11 +(at your option) any later version. 1.12 + 1.13 +This program is distributed in the hope that it will be useful, 1.14 +but WITHOUT ANY WARRANTY; without even the implied warranty of 1.15 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1.16 +GNU General Public License for more details. 1.17 + 1.18 +You should have received a copy of the GNU General Public License 1.19 +along with this program. If not, see <http://www.gnu.org/licenses/>. 1.20 +*/ 1.21 +#ifndef MATERIAL_H_ 1.22 +#define MATERIAL_H_ 1.23 + 1.24 +#include "vmath/vmath.h" 1.25 + 1.26 +// colors are simply RGB vectors 1.27 +typedef Vector3 Color; 1.28 + 1.29 +class Texture; 1.30 + 1.31 +class Material { 1.32 +public: 1.33 + // phong model parameters 1.34 + Color diffuse; // amount of diffuse light scattering (per color channel) 1.35 + Color specular; // amount of specular light reflection (per color channel) 1.36 + float shininess; // higher shininess values -> more focused specular refl. 1.37 + 1.38 + Color emission; // emissive light 1.39 + 1.40 + // additional raytracing parameters 1.41 + float reflectivity; // range [0, 1] 1.42 + float transparency; // range [0, 1] 1.43 + float ior; // index of refraction 1.44 + 1.45 + Texture *tex; 1.46 + Vector4 mega_rect; // tex coords for the megatexture 1.47 + 1.48 + Material(); 1.49 + Material(const Color &dcol, const Color &scol = Color(1.0, 1.0, 1.0), float spow = 60.0, 1.50 + float refl = 0.0, float refr = 0.0, float ior = 1.0); 1.51 +}; 1.52 + 1.53 +#endif // MATERIAL_H_