91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

眼睛觀察到的光的總強度有環境光,漫反射光和鏡面反射光三部分組成。如 果場景中有多個光源,那么每個光源都會產生漫反射和鏡面反射光線。

資源截圖

代碼片段和文件信息

#include?“raytracer.h“
#include?“scene.h“
#include?“common.h“
#include?“windows.h“
#include?“winbase.h“
#include?“math.h“
#include?
#define?M_PI?3.141592653589
namespace?Raytracer?{

Ray::Ray(?vector3&?a_Origin?vector3&?a_Dir?)?:?
m_Origin(?a_Origin?)?
m_Direction(?a_Dir?)
{
}

Engine::Engine()
{
m_Scene?=?new?Scene();
}

Engine::~Engine()
{
delete?m_Scene;
}

//?-----------------------------------------------------------
//?Engine::SetTarget
//?Sets?the?render?target?canvas
//?-----------------------------------------------------------
void?Engine::SetTarget(?Pixel*?a_Dest?int?a_Width?int?a_Height?)
{
//?set?pixel?buffer?address?&?size
m_Dest?=?a_Dest;
m_Width?=?a_Width;
m_Height?=?a_Height;
}

//?-----------------------------------------------------------
//?Engine::Raytrace
//?Naive?ray?tracing:?Intersects?the?ray?with?every?primitive
//?in?the?scene?to?determine?the?closest?intersection
//?-----------------------------------------------------------
Primitive*?Engine::Raytrace(?Ray&?a_Ray?Color&?a_Acc?int?a_Depth?float?a_RIndex?float&?a_Dist?)
{
if?(a_Depth?>?TRACEDEPTH)?return?0;
//?trace?primary?ray
a_Dist?=?1000000.0f;
vector3?pi;
Primitive*?prim?=?0;
int?result;
//?find?the?nearest?intersection
for?(?int?s?=?0;?s?GetNrPrimitives();?s++?)
{
Primitive*?pr?=?m_Scene->GetPrimitive(?s?);
int?res;
if?(res?=?pr->Intersect(?a_Ray?a_Dist?))?
{
prim?=?pr;
result?=?res;?//?0?=?miss?1?=?hit?-1?=?hit?from?inside?primitive
}
}
//?no?hit?terminate?ray
if?(!prim)?return?0;
//?handle?intersection
if?(prim->IsLight())
{
//?we?hit?a?light?stop?tracing
a_Acc?=?Color(?1?1?1?);
}
else
{
//?determine?color?at?point?of?intersection
pi?=?a_Ray.GetOrigin()?+?a_Ray.GetDirection()?*?a_Dist;//交?
//?trace?lights
for?(?int?l?=?0;?l?GetNrPrimitives();?l++?)
{
Primitive*?p?=?m_Scene->GetPrimitive(?l?);
if?(p->IsLight())?
{
Primitive*?light?=?p;
//intersection?part
float?shade?=?1.0f;
if?(light->GetType()?==?Primitive::SPHERE)
{
vector3?L?=?((Sphere*)light)->GetCentre()?-?pi;
float?tdist?=?LENGTH(?L?);
L?*=?(1.0f?/?tdist);
Ray?r?=?Ray(?pi?+?L?*?EPSILON?L?);
for?(?int?s?=?0;?s?GetNrPrimitives();?s++?)
{
Primitive*?pr?=?m_Scene->GetPrimitive(?s?);
if?((pr?!=?light)?&&?(pr->Intersect(?r?tdist?)))
{
shade?=?0;
break;
}
}
}
// if?(light->GetType()?==?Primitive::CYLINDER)
// {
// vector3?L?=?((Sphere*)light)->GetCentre()?-?pi;
// float?tdist?=?LENGTH(?L?);
// L?*=?(1.0f?/?tdist);
// Ray?r?=?Ray(?pi?+?L?*?EPSILON?L?);
// for?(?int?s?=?0;?s?GetNrPrimitives();?s++?)
// {
// Primitive*?pr?=?m_Scene->GetPrimitive(?s?);
// if?((pr?!=?light)?&&?(pr->Intersect(?r?tdist?)))
// {
// shade?=?0;
//

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-06-01?14:46??圖形學光線追蹤\
?????目錄???????????0??2016-06-01?14:42??圖形學光線追蹤\Graphic_ray_tracing\
?????文件?????1440015??2016-06-01?14:40??圖形學光線追蹤\Graphic_ray_tracing\000a.ppm
?????文件????????3088??2009-04-26?23:27??圖形學光線追蹤\Graphic_ray_tracing\common.h
?????文件???????????3??2016-05-30?17:30??圖形學光線追蹤\Graphic_ray_tracing\in.txt
?????文件???????????0??2016-05-30?17:32??圖形學光線追蹤\Graphic_ray_tracing\out.txt
?????文件???????12903??2016-06-01?14:40??圖形學光線追蹤\Graphic_ray_tracing\raytracer.cpp
?????文件????????4180??2016-05-30?10:04??圖形學光線追蹤\Graphic_ray_tracing\raytracer.dsp
?????文件?????????541??2004-07-08?16:04??圖形學光線追蹤\Graphic_ray_tracing\raytracer.dsw
?????文件????????1525??2016-06-01?14:35??圖形學光線追蹤\Graphic_ray_tracing\raytracer.h
?????文件???????91136??2016-06-01?14:41??圖形學光線追蹤\Graphic_ray_tracing\raytracer.ncb
?????文件???????51712??2016-06-01?14:41??圖形學光線追蹤\Graphic_ray_tracing\raytracer.opt
?????文件????????1831??2016-06-01?14:40??圖形學光線追蹤\Graphic_ray_tracing\raytracer.plg
?????文件?????????882??2009-04-23?02:05??圖形學光線追蹤\Graphic_ray_tracing\raytracer.sln
?????文件???????18432??2009-05-05?11:41??圖形學光線追蹤\Graphic_ray_tracing\raytracer.suo
?????文件????????6674??2009-04-23?02:05??圖形學光線追蹤\Graphic_ray_tracing\raytracer.vcproj
?????文件????????1413??2009-05-05?11:41??圖形學光線追蹤\Graphic_ray_tracing\raytracer.vcproj.STREAKLY.Starseeker.user
?????文件????????7664??2016-06-01?12:18??圖形學光線追蹤\Graphic_ray_tracing\scene.cpp
?????文件????????4369??2016-06-01?11:01??圖形學光線追蹤\Graphic_ray_tracing\scene.h
?????文件????????4711??2009-04-23?00:18??圖形學光線追蹤\Graphic_ray_tracing\surface.cpp
?????文件?????????856??2009-04-23?00:18??圖形學光線追蹤\Graphic_ray_tracing\surface.h
?????文件????????3929??2016-06-01?12:40??圖形學光線追蹤\Graphic_ray_tracing\testapp.cpp
?????文件???171230898??2016-06-01?13:38??圖形學光線追蹤\ray_tracing_劉恒.avi
?????文件??????163177??2016-06-01?14:28??圖形學光線追蹤\圖形學大作業.pdf

評論

共有 條評論