光线跟踪 入门级 项目代码


本项目代码基于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  成功_对一个球的光线渲染实验对一个球的光线渲染实验DebugCL.read.1.tlog
     文件       19324  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验DebugCL.write.1.tlog
     文件       33700  2012-09-16 14:59  成功_对一个球的光线渲染实验对一个球的光线渲染实验DebugDirLight.obj
     文件       53991  2012-09-16 14:59  成功_对一个球的光线渲染实验对一个球的光线渲染实验DebugRay.obj
     文件       17518  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验DebugRaytracer.obj
     文件       14591  2012-09-16 14:59  成功_对一个球的光线渲染实验对一个球的光线渲染实验DebugSphere.obj
     文件       13982  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debugcl.command.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink-cvtres.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink-cvtres.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.1228-cvtres.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.1228-cvtres.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.1228.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.1228.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.1548-cvtres.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.1548-cvtres.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.1548.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.1548.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.3096-cvtres.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.3096-cvtres.write.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.3096.read.1.tlog
     文件           2  2012-12-29 16:08  成功_对一个球的光线渲染实验对一个球的光线渲染实验Debuglink.3096.write.1.tlog
............此处省略68个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)