青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

4D星宇

c++

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  57 隨筆 :: 0 文章 :: 39 評論 :: 0 Trackbacks

                           學(xué)習(xí)光線追蹤(格式都亂了,郁悶)
射線類的定義:
class Ray
{
   public:
 Ray() : m_Origin( vector3( 0, 0, 0 ) ), m_Direction( vector3( 0, 0, 0 ) ) {};
 Ray( vector3& a_Origin, vector3& a_Dir );
   private:
 vector3 m_Origin;
 vector3 m_Direction;
};
光線追蹤算法:
For each pixel
{
 Construct ray from camera through pixel
 Find first primitive hit by ray
 Determine color at intersection point
 Draw color

求最近交點(diǎn)
 // find the nearest intersection
for ( int s = 0; s < m_Scene->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
 }
}
交點(diǎn)的顏色:
// determine color at point of intersection
pi = a_Ray.GetOrigin() + a_Ray.GetDirection() * a_Dist;
// trace lights
for ( int l = 0; l < m_Scene->GetNrPrimitives(); l++ )
{
 Primitive* p = m_Scene->GetPrimitive( l );
 if (p->IsLight())
 {
  Primitive* light = p;
  // calculate diffuse shading
  vector3 L = ((Sphere*)light)->GetCentre() - pi;
  NORMALIZE( L );
  vector3 N = prim->GetNormal( pi );
  if (prim->GetMaterial()->GetDiffuse() > 0)
  {
   float dot = DOT( N, L );
   if (dot > 0)
   {
    float diff = dot * prim->GetMaterial()->GetDiffuse();
    // add diffuse component to ray color
    a_Acc += diff * prim->GetMaterial()->GetColor() * light->GetMaterial()->GetColor();
   }
  }
 }
}
計算反射:
// calculate reflection
float refl = prim->GetMaterial()->GetReflection();
if (refl > 0.0f)
{
 vector3 N = prim->GetNormal( pi );
 vector3 R = a_Ray.GetDirection() - 2.0f * DOT( a_Ray.GetDirection(), N ) * N;
 if (a_Depth < TRACEDEPTH)
 {
  Color rcol( 0, 0, 0 );
  float dist;
  Raytrace( Ray( pi + R * EPSILON, R ), rcol, a_Depth + 1, a_RIndex, dist );
  a_Acc += refl * rcol * prim->GetMaterial()->GetColor();
 }
}
Phong光照公式:intensity = diffuse * (L.N) + specular * (V.R)n

vector3 V = a_Ray.GetDirection();
vector3 R = L - 2.0f * DOT( L, N ) * N;
float dot = DOT( V, R );
if (dot > 0)
{
 float spec = powf( dot, 20 ) * prim->GetMaterial()->GetSpecular() * shade;
// add specular component to ray color
a_Acc += spec * light->GetMaterial()->GetColor();
}
計算陰影
// handle point light source
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 < m_Scene->GetNrPrimitives(); s++ )
 {
  Primitive* pr = m_Scene->GetPrimitive( s );
  if ((pr != light) && (pr->Intersect( r, tdist )))
  {
   shade = 0;
   break;
  }
 }
}

posted on 2008-07-06 10:53 bloodbao 閱讀(542) 評論(0)  編輯 收藏 引用 所屬分類: c++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一区在线直播| 亚洲影院在线观看| 国产精品女人毛片| 国产精品久久久免费| 国产精品久久国产三级国电话系列 | 亚洲精品美女久久7777777| 久久蜜桃资源一区二区老牛 | 欧美韩国在线| 欧美日一区二区在线观看 | aa级大片欧美| 亚洲一区二区免费| 久久九九99视频| 欧美激情综合五月色丁香| 欧美日韩在线不卡| 国产综合色产在线精品| 亚洲国产电影| 亚洲欧美日本日韩| 老司机亚洲精品| 亚洲免费av网站| 久久成人这里只有精品| 欧美精品免费在线| 国产一区再线| 一本久道久久综合婷婷鲸鱼| 欧美与黑人午夜性猛交久久久| 免费观看久久久4p| 亚洲图片欧洲图片av| 欧美在线视频一区| 91久久精品一区| 久久九九热免费视频| 国产精品大片免费观看| 亚洲欧洲日韩女同| 老司机精品视频网站| 亚洲一区区二区| 欧美日韩亚洲在线| 亚洲电影天堂av| 久久精品道一区二区三区| 99视频有精品| 欧美精品激情| 最新高清无码专区| 一本色道精品久久一区二区三区| 亚洲第一免费播放区| 亚洲欧美日韩一区| 欧美激情国产精品| 久久久精品性| 国产一区亚洲一区| 欧美呦呦网站| 亚洲一区国产一区| 国产精品二区在线观看| 99re6这里只有精品视频在线观看| 久久美女性网| 久久国产精品第一页| 国产欧美日韩三级| 欧美一级淫片播放口| 国产精品99久久99久久久二8| 欧美日韩国产另类不卡| 日韩视频精品在线观看| 亚洲高清网站| 欧美精品在线一区二区三区| 91久久在线播放| 久久精品五月婷婷| 一区二区三区高清| 欧美日韩在线视频首页| 亚洲精品日本| 亚洲欧洲久久| 欧美另类一区| 亚洲素人一区二区| 一区二区三区国产盗摄| 国产精品国产三级国产aⅴ9色| 一区二区国产日产| 99re6热在线精品视频播放速度| 欧美欧美天天天天操| 亚洲色诱最新| 国产精品99久久久久久久vr| 国产精品乱人伦中文| 欧美制服丝袜| 欧美91视频| 亚洲国产婷婷香蕉久久久久久99 | 亚洲黄色影院| 亚洲美女尤物影院| 国产精品视频一区二区高潮| 久久国产色av| 麻豆国产精品va在线观看不卡| 亚洲欧洲视频在线| 一区二区三区精密机械公司| 国产麻豆日韩欧美久久| 嫩草伊人久久精品少妇av杨幂| 欧美激情综合色| 久久不射中文字幕| 久久资源av| 亚洲桃花岛网站| 久久精品国产亚洲高清剧情介绍| 在线播放日韩专区| 99re66热这里只有精品3直播| 国产欧美日韩另类视频免费观看| 亚洲日韩视频| 亚洲美女中出| 亚洲免费综合| 在线观看视频亚洲| 亚洲人成网站精品片在线观看| 国产精品swag| 欧美二区在线播放| 欧美性大战xxxxx久久久| 久久精品首页| 欧美日韩精品一二三区| 久久免费国产| 国产精品日韩在线观看| 亚洲电影网站| 国产亚洲一区二区三区| 亚洲国产一区二区三区在线播 | 亚洲网站视频| 久久精品一区| 欧美一级视频免费在线观看| 欧美黄免费看| 麻豆视频一区二区| 国产精品视频xxxx| 亚洲精品中文在线| 原创国产精品91| 午夜在线观看欧美| 亚洲性图久久| 欧美日本韩国一区| 欧美91精品| 激情六月婷婷综合| 亚洲欧美国产精品桃花 | 嫩草伊人久久精品少妇av杨幂| 亚洲国产另类久久久精品极度| 欧美电影在线观看完整版| 国产精品影视天天线| 99re热精品| 亚洲乱码国产乱码精品精| 久久久综合免费视频| 久久精品男女| 国产欧美日韩综合| 亚洲欧美国产精品va在线观看| 亚洲午夜av| 欧美亚男人的天堂| 亚洲一区二区动漫| 欧美一级大片在线观看| 国产精品免费久久久久久| 一区二区三区久久| 亚洲一品av免费观看| 欧美日韩一级视频| 中国av一区| 性做久久久久久久免费看| 国产精品久久久久久久久搜平片| 亚洲精品护士| 亚洲男人的天堂在线aⅴ视频| 欧美午夜视频在线观看| 亚洲一级电影| 欧美在线观看你懂的| 国产在线不卡视频| 久久裸体视频| 91久久精品日日躁夜夜躁国产| 一区二区久久久久久| 国产精品九九久久久久久久| 亚洲欧美成人一区二区在线电影| 欧美在线播放一区| 久久久久久久999精品视频| 欧美在线免费视屏| 国产色综合网| 久久午夜影视| 亚洲精品四区| 欧美一区二区在线| 亚洲成色精品| 欧美日韩综合| 久久av资源网| 亚洲国产精品99久久久久久久久| 一区二区精品| 韩国三级电影久久久久久| 欧美va亚洲va国产综合| 在线一区日本视频| 裸体一区二区三区| 亚洲网站在线| 在线观看亚洲精品视频| 欧美人与禽性xxxxx杂性| 亚洲免费在线视频| 亚洲国产日韩欧美在线99 | 亚洲人体1000| 欧美日韩成人一区| 久久成人资源| 亚洲视频每日更新| 欧美国产日韩一二三区| 亚洲欧美日韩视频一区| 亚洲精品美女在线观看播放| 国产模特精品视频久久久久| 欧美成人按摩| 久久久久久色| 亚洲欧美综合国产精品一区| 欧美激情无毛| 蜜桃av噜噜一区| 欧美在线免费观看视频| 在线一区亚洲| 亚洲欧洲日本专区| 国产一区二区视频在线观看 | 亚洲美女91| 欧美福利视频网站| 久久精品人人做人人综合| 中日韩在线视频| 91久久国产自产拍夜夜嗨| 国产有码一区二区| 国产精品综合视频|