• 大小: 11.67MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-29
  • 语言: C/C++
  • 标签: 光线跟踪  openGL  

资源简介

本项目代码基于VC++实现了对一个球体的光线跟踪渲染算法,包含环境光,漫反射和镜面反射。渲染结束后输出每个像素的RGB值,并用OPenGL的库函数加以显示。要成功运行本历程须进行 OPenGL的环境配置。不过,即便不能运行,核心部分的代码也是完全正确的,有详细注释,对初学者有很大参考价值。

资源截图

代码片段和文件信息

#include“DirLight.h“;    
#include

double max(double a1double a2)
{
  if(a1>a2)
  return a1;
  else
  return a2;
}

DirLight::DirLight()
{
   Position=vector(00260);
   Direction=vector(-1-10);
   Direction.normailize();
   Ambient=vector(0.20.20.2);
   Diffuse=vector(0.90.90.9);
   Specular=vector(1.01.01.0);
}
DirLight::DirLight(vector posvector dirvector abtvector dfsvector spl)
{
   Position=pos;
   Direction=dir;
   Ambient=abt;
   Diffuse=dfs;
   Specular=spl;
}
DirLight::~DirLight()
{}
void DirLight::setPosition(vector p)
{
Position=p;
}
void DirLight::setDirection(vector dir)
{
Direction=dir;
}
void DirLight::setAmbient(vector a)
{
Ambient=a;
}
void DirLight::setDiffuse(vector d)
{
Diffuse=d;
}
void DirLight::setSpecular(vector s)
{
Specular=s;
}
vector DirLight::getPosition()
{
return Position;
}
vector DirLight::getDirection()
{
return Direction;
}
vector DirLight::getAmbient()
{
return Ambient;
}
vector DirLight::getDiffuse()
{
return Diffuse;
}
vector DirLight::getSpecular()
{
return Specular;
}
vector DirLight::figAmbient(vector _material_Ka)
{   
return Ambient*_material_Ka;
}
vector DirLight::figDiffuse(vector _Nvector _Lvector _material_Kd)
{
   /*vector IdKd=Diffuse*_material_Kd;
   double Ndotl=max(VecpmulVec(_N_L)0.0);
   return IdKd*Ndotl;*/
double dot=VecpmulVec(_N_L)*0.2;
vector diffuse=vector(110)*vector(111)*dot;
return diffuse;
}
vector DirLight::figSpecular(vector _Nvector _Lvector _Vvector _material_Ksdouble _shininess)
{
/*vector IsKs=Specular*_material_Ks;
vector H=_L+_V;
H.normailize();
double NdotL= max(VecpmulVec(_N_L)0.0);
    double NdotH=pow(max(VecpmulVec(_NH)0.0)_shininess);
if(NdotL<=0)
NdotH=0;
return IsKs*NdotH;*/
vector _R=_L-_N*VecpmulVec(_N_L)*2;
double dot=VecpmulVec(_V_R);
double spec=pow(dot20)*0.6;
vector specular=vector(111)*spec;
return specular;

}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-02-17 14:39  成功_对一个球的光线渲染实验\
     目录           0  2012-08-22 15:25  成功_对一个球的光线渲染实验\Debug\
     文件       70144  2012-12-29 16:08  成功_对一个球的光线渲染实验\Debug\对一个球的光线渲染实验.exe
     文件      507412  2012-12-29 16:08  成功_对一个球的光线渲染实验\Debug\对一个球的光线渲染实验.ilk
     文件      920576  2012-12-29 16:08  成功_对一个球的光线渲染实验\Debug\对一个球的光线渲染实验.pdb
     目录           0  2013-02-17 14:38  成功_对一个球的光线渲染实验\ipch\
     目录           0  2013-02-17 14:38  成功_对一个球的光线渲染实验\ipch\对一个球的光线渲染实验-8b37c774\
     文件    15269888  2013-02-17 14:38  成功_对一个球的光线渲染实验\ipch\对一个球的光线渲染实验-8b37c774\对一个球的光线渲染实验-233a3d8d.ipch
     目录           0  2012-08-22 15:25  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\
     目录           0  2013-02-17 14:39  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\
     文件       96734  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\CL.read.1.tlog
     文件       19324  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\CL.write.1.tlog
     文件       33700  2012-09-16 14:59  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\DirLight.obj
     文件       53991  2012-09-16 14:59  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\Ray.obj
     文件       17518  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\Raytracer.obj
     文件       14591  2012-09-16 14:59  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\Sphere.obj
     文件       13982  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\cl.command.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link-cvtres.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link-cvtres.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.1228-cvtres.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.1228-cvtres.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.1228.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.1228.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.1548-cvtres.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.1548-cvtres.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.1548.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.1548.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.3096-cvtres.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.3096-cvtres.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.3096.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\link.3096.write.1.tlog
............此处省略68个文件信息

评论

共有 条评论