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

4D星宇

c++

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

                           學習光線追蹤(格式都亂了,郁悶)
射線類的定義:
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

求最近交點
 // 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
 }
}
交點的顏色:
// 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>
            亚洲国产精品精华液2区45| 99伊人成综合| 国产自产在线视频一区| 欧美精品首页| 久久久噜噜噜久久狠狠50岁| 亚洲图片欧美日产| 亚洲国内精品| 欧美高清视频一区| 99国产精品视频免费观看| 亚洲国产黄色片| 在线观看视频日韩| 国产精品女主播| 国产精品任我爽爆在线播放 | 欧美三级第一页| 欧美日韩成人激情| 欧美日韩国产小视频| 欧美午夜精品久久久久久人妖| 国内久久婷婷综合| 国产日韩精品在线播放| 国产精品免费视频xxxx| 国产精品久久久一区二区三区| 欧美日韩亚洲国产精品| 欧美日韩免费视频| 亚洲精品欧美日韩| 国产精品99久久99久久久二8 | 欧美成年人在线观看| 欧美精品久久久久久久久老牛影院| 欧美日韩国产综合新一区| 国产亚洲女人久久久久毛片| 亚洲人永久免费| 欧美一区二区三区免费视频| 亚洲国产精品女人久久久| 亚洲一区二区免费在线| 男人天堂欧美日韩| 激情综合自拍| 欧美一区二区三区视频| 亚洲精品在线电影| 免费久久99精品国产| 国产乱码精品1区2区3区| 99视频超级精品| 亚洲盗摄视频| 美女主播视频一区| 伊人婷婷久久| 久久亚洲精品视频| 欧美一区免费视频| 国产日产高清欧美一区二区三区| 一个人看的www久久| 欧美国产日韩在线| 久久这里只有| 在线精品视频一区二区三四| 久久www免费人成看片高清| 亚洲最新视频在线| 欧美一区二区三区四区视频| 久久精品国产亚洲a| 欧美日韩国产大片| 亚洲欧洲免费视频| 久久亚洲视频| 欧美一区二区三区电影在线观看| 欧美日韩免费在线观看| 亚洲三级影院| 亚洲国产精品电影在线观看| 久久久久久久一区| 韩日欧美一区二区三区| 久久精品亚洲热| 久久www成人_看片免费不卡| 国产日韩精品综合网站| 久久国产精品黑丝| 久久www成人_看片免费不卡| 国产有码一区二区| 久久天天综合| 每日更新成人在线视频| 亚洲精品久久久久久久久久久久| 欧美激情一区二区三区四区| 女人香蕉久久**毛片精品| 亚洲毛片在线观看.| 日韩视频免费在线观看| 欧美性片在线观看| 午夜精品国产更新| 欧美一级精品大片| 亚洲成人在线网站| 亚洲精品视频免费| 国产精品日本欧美一区二区三区| 欧美诱惑福利视频| 久久亚洲欧洲| 亚洲视频在线看| 亚洲欧美日韩天堂| 激情综合视频| 亚洲美女淫视频| 国产嫩草一区二区三区在线观看| 欧美亚洲视频一区二区| 欧美一区亚洲| 日韩视频永久免费| 亚洲伊人伊色伊影伊综合网| 国产丝袜一区二区| 亚洲欧洲日本国产| 国产精品自在欧美一区| 免费观看成人网| 欧美精品v日韩精品v国产精品| 亚洲香蕉伊综合在人在线视看| 亚洲在线电影| 亚洲激情视频在线| 亚洲一区二区成人| 亚洲黄色视屏| 亚洲欧美日韩在线高清直播| 91久久久久久国产精品| 亚洲欧美日韩专区| 这里只有视频精品| 免费日韩av片| 久久精品72免费观看| 欧美精品日韩一本| 老鸭窝毛片一区二区三区| 欧美午夜久久| 亚洲精品国产精品国产自| 国产一区二区日韩精品| 久久一区中文字幕| 久久精品国产99精品国产亚洲性色| 亚洲国产小视频在线观看| 欧美亚洲在线| 国产精品99久久久久久久久| 久久久精品国产99久久精品芒果| 亚洲天堂男人| 欧美承认网站| 欧美sm视频| 激情懂色av一区av二区av| 日韩一级视频免费观看在线| 亚洲大片一区二区三区| 欧美一区中文字幕| 欧美影视一区| 国产精品a级| 日韩写真在线| 一本色道久久综合亚洲91| 鲁大师影院一区二区三区| 久久久久久久综合日本| 国产精品日韩欧美综合| 99国产精品国产精品毛片| 日韩一级二级三级| 欧美激情一区二区三区在线| 欧美国产一区在线| 91久久在线播放| 免费短视频成人日韩| 美国十次了思思久久精品导航| 国产网站欧美日韩免费精品在线观看| 亚洲视频在线观看免费| 亚洲一区二区三区高清| 欧美性做爰毛片| 亚洲一区二区免费| 久久精品国产亚洲a| 国产一区二区三区在线观看免费视频| 性做久久久久久久免费看| 久久夜色撩人精品| 亚洲国内在线| 欧美人与性禽动交情品| 一本高清dvd不卡在线观看| 亚洲欧美激情视频在线观看一区二区三区| 欧美日韩免费高清| 亚洲欧美日本视频在线观看| 欧美一二三视频| 好看不卡的中文字幕| 久久野战av| 999亚洲国产精| 性欧美1819性猛交| 在线免费观看视频一区| 鲁鲁狠狠狠7777一区二区| 亚洲激情视频网站| 欧美一级黄色网| 伊人精品成人久久综合软件| 免费在线视频一区| 亚洲私拍自拍| 欧美高清视频一二三区| 99亚洲视频| 国模套图日韩精品一区二区| 欧美jizz19hd性欧美| 99re66热这里只有精品4| 午夜精品久久久久久久久| 国模大胆一区二区三区| 欧美韩日视频| 亚洲综合第一页| 蜜桃精品久久久久久久免费影院| 亚洲精品色婷婷福利天堂| 国产精品在线看| 男人的天堂亚洲在线| 亚洲天堂av电影| 亚洲电影一级黄| 久久久999精品视频| 99精品久久久| 国产日韩综合| 亚洲欧美高清| 欧美成人精品在线播放| 久久精品国产91精品亚洲| 欧美精品成人在线| 女女同性女同一区二区三区91| 国产精品欧美久久| 亚洲精品免费一区二区三区| 国产精品乱子久久久久| 亚洲国产精品成人久久综合一区| 性一交一乱一区二区洋洋av| 亚洲精品久久久久| 狼狼综合久久久久综合网| 亚洲午夜视频在线| 欧美日韩在线三区|