(58)【調査した分野】(Int.Cl.,DB名)
前記メモリにレイに対する保存された情報がない場合、前記レンダリング処理(process)を終了するステップを含むことを特徴とする請求項1に記載のレイ生成方法。
【発明の概要】
【発明が解決しようとする課題】
【0005】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、1つ以上の実施形態はメモリに保存する光線に対する情報の量を調節してメモリを効率的に使用し、レンダリングシステムの性能を向上させるためのレンダリングシステム及びそのレイ生成方法を提供することにある。
【課題を解決するための手段】
【0006】
前記目的を達成するための本発明の一実施形態に係るレンダリングシステムのレンダリング処理を行うための方法において、前記方法は、イメージをレンダリング(render)するための第1レイ(ray)を生成するステップと、前記第1レイが少なくとも1つのセカンダリレイを生成することができるか否かを判断するステップと、前記第1レイが前記少なくとも1つのセカンダリレイを生成することができると判断された場合、前記第1レイに関する情報をメモリに保存するステップと、前記メモリに保存された前記第1レイに関する情報に基づいて前記少なくとも1つのセカンダリレイを生成するステップとを含む。
【0007】
前記判断するステップは、前記第1レイがオブジェクトと交差し、前記第1レイがシャドウレイ(shadow ray)ではない場合、前記第1レイが前記少なくとも1つのセカンダリレイが生成することができると判断するステップを含んでよい。
【0008】
前記方法は、前記第1レイが前記少なくとも1つのセカンダリレイを生成することができないと判断された場合、前記メモリから前記第1レイに関する情報を削除するステップを更に含んでよい。
【0009】
前記方法は、前記少なくとも1つのセカンダリレイがシャドウレイを生成し、反射レイまたは屈折レイを生成しないと判断された場合、前記メモリから前記第1レイに関する情報を削除するステップを更に含んでよい。
【0010】
前記方法は、前記メモリがレイに関する情報を含むかを判断するステップと、前記メモリに保存された情報が複数個である場合、前記複数個の情報のうち前記メモリに最後に保存されたレイに関する情報に基づいてセカンダリレイを生成するステップとを更に含んでよい。
【0011】
前記方法は、前記第1レイがシャドウレイである場合、前記第1レイのレンダリング結果をカラー値としてフレームバッファ(frame buffer)に保存するステップを更に含んでよい。
【0012】
前記方法は、前記メモリがレイに関する情報を含まない場合、前記レンダリング処理(process)を終了するステップを更に含んでよい。
【0013】
前記第1レイに関する情報は、前記第1レイの方向ベクトルに関する情報を含んでよい。
【0014】
本発明の別の実施形態に係るレンダリングシステムは、第1レイを生成するレイ生成部と、前記生成された第1レイに基づいてイメージをレンダリング(rendering)するレンダリング部(renderer)と、メモリと、前記第1レイが少なくとも1つのセカンダリレイを生成することができるか否かを判断し、前記第1レイが前記少なくとも1つのセカンダリレイを生成することができると判断されると、前記第1レイに関する情報を前記メモリに保存するように制御し、前記メモリに保存された前記第1レイに関する情報に基づいて前記少なくとも1つのセカンダリレイを生成するように制御する制御部とを含む。
【0015】
前記制御部は、前記第1レイがオブジェクトと交差し、前記第1レイがシャドウレイ(shadow ray)ではない場合、前記第1レイが前記セカンダリレイを生成することができると判断してよい。
【0016】
前記制御部は、前記少なくとも1つのセカンダリレイがセカンダリレイを生成しないと判断された場合、前記メモリから前記第1レイに関する情報を削除するように制御してよい。
【0017】
前記制御部は、前記メモリがレイに関する情報を含むか否かを判断し、前記メモリに保存された情報が複数個である場合、前記複数個の情報のうち前記メモリに最後に保存されたレイに関する情報に基づいてセカンダリレイを生成するように制御してよい。
【0018】
前記制御部は、前記第1レイがシャドウレイである場合、前記第1レイのレンダリング結果をフレームバッファ(frame buffer)に保存するように制御してよい。
【0019】
前記制御部は、前記メモリがレイに関する情報を含むかを判断し、前記メモリにレイに関する情報が含まない場合、前記レンダリング処理を終了するように制御してよい。
【0020】
前記第1レイに関する情報は、前記第1レイの方向ベクトルに関する情報を含んでよい。
【0021】
本発明の別の実施形態に係るレンダリングシステムのレンダリング処理実行方法は、イメージをレンダリングするための第1レイ(primary ray)を生成するステップと、前記第1レイが派生され得る第2レイ(derivable secondary ray)を生成することができる場合、前記第1レイに関する情報を保存するステップと、前記第1レイが追加的に派生され得る第2レイを生成することができない場合、前記第1レイに関する情報を削除するステップとを含む。
【0022】
前記派生され得る第2レイは、オブジェクトと交差する屈折レイまたは反射レイに対応してよい。
【0023】
前記派生され得る第2レイは、前記第1レイが生成した複数個の第2レイのうちの1つであってよく、前記保存するステップは、前記派生され得る第2レイをメモリのメインスタックに保存するステップと、前記派生され得る第2レイ及びシャドウレイではない前記複数個の第2レイを前記メモリの第2スタックに保存してよい。
【0024】
前記派生され得る第2レイは、前記第1レイから派生された屈折レイまたは反射レイであってよく、前記保存するステップは、メモリのメインスタックに前記屈折レイに関する情報または前記反射レイに関する情報を保存するステップと、前記反射レイが前記メインスタックに保存された場合、前記メモリの第2スタックに前記屈折レイを保存するステップと、前記屈折レイが前記メインスタックに保存された場合、前記第2スタックに前記反射レイに関する情報を保存するステップとを含む。
【0025】
前記メモリは、前記第2スタックに保存された前記屈折レイに関する前記情報または前記反射レイに関する前記情報を前記メインスタックにローディングするステップを更に含んでよい。
【発明の効果】
【0026】
以上説明したように本発明によれば、レンダリングシステムのレンダリング処理実行方法を行うためのコンピュータによって実行され得るプログラムを保存する非一時的コンピュータ記録保存媒体を提供する。
【0027】
また、本発明の多様な実施形態によれば、ユーザはメモリに保存する光線に関する情報の量を調節してメモリを効率的に使用し、性能の向上されたレンダリングシステムを利用することができるようになる。
【発明を実施するための形態】
【0029】
以下に添付図面を参照しながら、本発明の好適な実施形態についてより詳細に説明する。本発明を説明するうえで、関連の公知機能或いは構成に対する具体的な説明が、本発明の要旨を不要に曖昧とすると判断された場合には、その詳細な説明は省略する。そして、後述の用語は、本発明における機能を考慮して定義された用語として、それは使用者や運用者の意図または慣例等によって異なってよい。そのため、その定義は本明細書全般にわたる内容に基づいて下されるべきである。
【0030】
図1は、本発明の一実施形態に係るレンダリングシステム100の構成を示すブロック図である。
図1に示すように、レンダリングシステム100は、レイ生成部110と、参照メモリ120と、レンダリング部130と、制御部140及びフレームバッファ150を含む。
【0031】
レイ生成部110は、レイを生成するための構成要素である。レイ生成部110は、レイ生成情報に基づいて少なくとも1つのレイを生成することができる。すなわち、レイ生成部110は、プライマリレイ(Primary Ray)を生成することができ、後述の保存されたレイ生成情報を基にセカンダリレイ(Secondary Ray)を生成することができる。なお、セカンダリレイは、シャドウレイ(Shadow Ray)、屈折レイ(Refraction Ray)及び反射レイ(Reflection Ray)を含んでよい。なお。セカンダリレイを生成する場合、レイ生成部110はシャドウレイを先に生成することができる。シャドウレイに対するレンダリングの後、レイ生成部110は屈折または反射レイを生成することができる。
【0032】
一方、参照メモリ120は、レイに関する情報を保存するための構成要素である。すなわち、参照メモリ120は、セカンダリレイを生成するために必要な情報を保存することができる。参照メモリ120は、スタック(Stack)またはキュー(Queue)のようなメモリが使用されてよいが、それは一実施形態に過ぎず、メモリの種類に限定されない。
【0033】
なお、参照メモリ120に保存されるレイに関する情報は、レイの方向ベクトルに関する情報を含んでよい。具体的に、参照メモリ120は、三角インデックス、レイデプス(depth)、レイが派生された方向、位置そしてレイ及びオブジェクトが交差した位置に関する情報等を含んでよい。
【0034】
レンダリング部130は、レイ生成部110を介して生成されたレイをレンダリングするための構成要素である。すなわち、レンダリングを行うために必要な構成要素のうち、レンダリング部130はレイ生成部110を除く全ての構成要素を含んでよい。
【0035】
例えば、光線追跡法(Ray Tracing)で使用される加速構造を探索し、交差点を検査してシェーディングを行うための構成要素がレンダリング部130に含まれてよい。
【0036】
一方、制御部140は、レンダリングシステム100の動作全般を制御する。特に、制御部140は、生成されたレイによってセカンダリレイが生成され得るか否かを判断することができる。そして、判断の結果に応じて、制御部140はレイに関する情報を参照メモリ120に保存するように制御してよい。
【0037】
すなわち、制御部140は、生成されたレイがシャドウレイではないと同時にオブジェクトと交差した場合、セカンダリレイを生成することができるレイであると判断することができる。シャドウレイによってセカンダリレイが生成されない。そして、シャドウレイではないレイであっても、オブジェクトと交差しない場合、セカンダリレイを生成しない。よって、生成されたレイがシャドウレイではなく、オブジェクトと交差する場合、制御部140はセカンダリレイを生成することができるレイと判断することができる。
【0038】
そして、生成されたレイがセカンダリレイを生成することができるレイと判断された場合、制御部140は、生成されたレイに関する情報を参照メモリ120に保存するように制御することができる。そして、制御部140は、参照メモリ120に保存されたレイに関する情報に基づいてセカンダリレイを生成するようにレイ生成部110を制御することができる。
【0039】
一方、生成されたレイがシャドウレイである場合、制御部140は、生成されたレイのレンダリング結果によるカラー値をフレームバッファ(Frame Buffer)に記録するように制御することができる。すなわち、シャドウレイによってセカンダリレイが生成されないため、制御部140は、シャドウレイに対するレンダリング結果によるカラー値をフレームバッファに保存して当該レイに対するレンダリングを完了することができる。なお、制御部140は、参照メモリ120に保存されたレイに関する情報があるか否かを判断することができる。参照メモリ120に保存された情報がないと判断された場合、制御部140はレンダリングを終了することができる。
【0040】
レイによって少なくとも1つのセカンダリレイが順次に生成され、生成された少なくとも1つのセカンダリレイが全てセカンダリレイをそれ以上生成しない場合、制御部140は参照メモリ120に保存されたレイに関する情報を削除することができる。すなわち、レイによってセカンダリレイがそれ以上生成されないと判断された場合、制御部140は参照メモリ120からレイに関する情報を削除することができる。
【0041】
そして、制御部140は、参照メモリ120から第1レイに関する情報を削除した後、参照メモリ120に保存された情報がある場合、参照メモリ120に最後に保存されたレイに関する情報に基づいて別のセカンダリレイを生成することができる。
【0042】
すなわち、参照メモリ120に順次にレイに関する情報を保存する場合、制御部140は最も最近保存されたレイに関する情報を基にセカンダリレイを生成することができるか否かを判断することができる。そして、最も最近保存されたレイがセカンダリレイを生成することができる場合、制御部140は、判断されたレイに関する情報を基に別のセカンダリレイを生成することができる。
【0043】
レイに関する情報を参照メモリ120に保存する方法及びレイに関する情報を参照メモリ120から削除する具体的な方法については後述する。
【0044】
上述のようなレンダリングシステム100によって、ユーザは小さいサイズのメモリを利用しつつも、効率的にメモリを管理してレンダリングを行うことができるレンダリングシステム100を利用することができるようになる。
【0045】
以下では、
図2ないし
図4を参照し、レンダリングシステム100がレイに関する情報を参照メモリ120に保存しつつ、レンダリングを行う方法について具体的に説明する。
【0046】
図2は、レイ生成内容を示す図である。すなわち、プライマリレイ200はシャドウレイ210と、屈折レイ220及び反射レイ230のうち少なくとも1つを生成することができる。特に、プライマリレイ200は、シャドウレイ210を先に生成し、屈折レイ220または反射レイ230を生成することができる。
【0047】
シャドウレイ210は、それ以上のセカンダリレイを生成しない。しかし、屈折レイ220及び反射レイ230は少なくとも1つのセカンダリレイを生成することができる。例えば、
図2に示すように、屈折レイ220がセカンダリレイとしてシャドウレイ240、屈折レイ250及び反射レイ260を生成することができる。そして、反射レイ230がセカンダリレイとしてシャドウレイ270、屈折レイ280及び反射レイ290を生成することができる。
【0048】
なお、各セカンダリレイである屈折レイ250及び280、並びに反射レイ260及び290のセカンダリレイとして、屈折レイ250及び280、並びに反射レイ260及び290から少なくとも1つの追加シャドウレイ、屈折レイ及び反射レイが生成されてよい。
【0049】
結果的に、
図2に示すように、セカンダリレイの数は急増するようになる。よって、生成されるセカンダリレイに関する情報を順次にスタックまたはキューのようなメモリに保存する場合、メモリが不足してレイの一部を損失したり、レンダリングシステムそのものに膠着状態が発生するおそれがある。なお、生成されるレイの数が一定ではないため、レンダリング部130の作業量の変動が大きくなりかねない。
【0050】
図3は、本発明の一実施形態に係るセカンダリレイを生成して保存する方法を示す。
【0051】
プライマリレイ310のセカンダリレイとして、第1シャドウレイ320、第1屈折レイ330及び第1反射レイ410がプライマリレイ310から生成される。そして、第1屈折レイ330のセカンダリレイとして第2シャドウレイ340、第2屈折レイ350及び第2反射レイ370が第1屈折レイ300から生成される。第2屈折レイ370のセカンダリレイとして第2屈折レイ370から第3シャドウレイ360が生成される。第2屈折レイ370から第4シャドウレイ380及び第4屈折レイ390が生成される。第4屈折レイ390から第5シャドウレイ400が生成される。
【0052】
図3は、ただ最初に生成されたレイ310をプライマリレイとして示しているが、セカンダリレイを生成する光線はセカンダリレイに関連するプライマリレイとして参照することができる。例えば、第1屈折レイ330及び第2屈折レイ350の間の関係で、第1屈折レイ330はプライマリレイであってよい。
【0053】
図4は、レイの生成手順による参照メモリ120の保存状態を示す図である。レイ生成部110を介してプライマリレイ310が生成された場合、制御部140は、生成されたプライマリレイ310がシャドウレイであるかを判断することができる。プライマリレイ310はシャドウレイではないため、制御部140はプライマリレイ310がオブジェクトと交差するか否かを判断する。
【0054】
生成されたプライマリレイ310がシャドウレイではなく、オブジェクトと交差すると判断された場合、プライマリレイ310からセカンダリレイが生成されてよい。よって、制御部140は、プライマリレイ310に関する情報を参照メモリ120に保存するように参照メモリ120を制御することができる。
【0055】
具体的に、レイに関する情報は、レイの方向ベクトルに関する情報を含んでよい。
【0056】
そして、レイ生成部110は、参照メモリ120に保存されたプライマリレイ310に関する情報を基にセカンダリレイを生成することができる。シャドウレイがセカンダリレイの中で先に生成されてよい。すなわち、レイ生成部110は、セカンダリレイとしてシャドウレイを先に生成し、シャドウレイ生成の後、屈折または反射レイを生成することができる。
【0057】
よって、セカンダリレイとして第1シャドウレイ320が生成された場合、制御部140は、第1シャドウレイ320によってそれ以上セカンダリレイが生成されないため、第1シャドウレイ320に関する情報を参照メモリ120に保存しないように制御することができる。結果的に、セカンダリレイとして第1シャドウレイ320が生成された後の参照メモリ120は第1シャドウレイ320の生成前の参照メモリ120と比較して変化が生じなくてよい。
【0058】
そして、制御部140は、第1シャドウレイ320に対するレンダリング結果カラー値をフレームバッファ150に保存することができる。
【0059】
なお、制御部140は、参照メモリ120に保存されたレイに関する情報があるか否かを判断することができる。参照メモリ120にプライマリレイ310に関する情報が保存されているため、制御部140はプライマリレイ310に関する情報に基づいてセカンダリレイを生成するようにレイ生成部110を制御することができる。
【0060】
セカンダリレイとして第1屈折レイ330が生成された場合、制御部140は生成されたセカンダリレイがシャドウレイか否かを判断することができる。第1屈折レイ330はシャドウレイではないため、制御部140は第1屈折レイ330がオブジェクトと交差するか否かを判断することができる。第1屈折レイ330がオブジェクトと交差する場合、第1屈折レイ330によってセカンダリレイが更に生成され得るため、制御部140は第1屈折レイ330に関する情報を参照メモリ120に保存することができる。
【0061】
参照メモリ120に保存された第1屈折レイ330に関する情報に基づいてレイ生成部110がセカンダリレイとして第2シャドウレイ340を生成すると、第2シャドウレイ340によってそれ以上セカンダリレイが生成されないため、制御部140は生成された第2シャドウレイ340に関する情報を保存しなくてよい。よって、第2シャドウレイ340がセカンダリレイとして生成された時間T540に参照メモリ120の状態は第2シャドウレイ340が生成される前である時間T530に参照メモリの状態と比較して変更されなくてよい。
【0062】
本発明の一実施形態によると、参照メモリ120はセカンダリスタック(secondary stack)を更に含んでよい。このとき、セカンダリスタックを除く参照メモリ120の残りの領域はメインスタックであってよい。また、セカンダリスタックは、参照メモリ120と区分された保存部に実現されてよい。制御部140は、第1屈折レイ410を時間T530にセカンダリスタックに保存することができる。制御部140が時間T600に第1屈折レイ330から派生された全てのセカンダリレイ処理を終えた際、T600の後に制御部140がどのようなデータを処理するかを判断するために、制御部140はセカンダリスタックを参照することができる。
【0063】
そして、制御部140は、第2シャドウレイ340のレンダリング結果カラー値をフレームバッファ150に保存するように制御することができる。
【0064】
なお、制御部140は、参照メモリ120がレイに関する情報を含むかを判断することができる。判断の結果、参照メモリ120に保存されたレイがある場合、制御部140はセカンダリレイを生成するようにレイ生成部110を制御することができる。
【0065】
しかし、第2シャドウレイ340に関する情報が保存されない。すなわち、参照メモリ120に最も最後に保存された情報は第1屈折レイ330に関する情報である。よって、制御部140は、参照メモリ120に保存された情報である第1屈折レイ330に関する情報を基にセカンダリレイを生成するように制御することができる。
【0066】
参照メモリ120に保存された第1屈折レイ330に関する情報に基づいてレイ生成部110がセカンダリレイとして第2屈折レイ350を生成すると、制御部140は生成された第2屈折レイ350がシャドウレイか否かを判断することができる。第2屈折レイ350はシャドウレイではないため、制御部140は第2屈折レイ350がオブジェクトと交差するか否かを判断することができる。第2屈折レイ350がオブジェクトと交差する場合、第2屈折レイ350によってセカンダリレイが更に生成され得るため、制御部140は第2屈折レイ350に関する情報を参照メモリ120に時間T550に保存することができる。
【0067】
なお、制御部140は、時間T550にセカンダリスタックに第2反射レイ370を保存して第2反射レイ370が第1反射レイ410にスタックされるようにすることができる。制御部140が、T560に第2屈折レイ350から派生された全てのセカンダリレイを処理することが終わる際、時間T570に制御部140がどのようなデータを処理するか判断するために制御部140はセカンダリスタックを参照することができる。
【0068】
参照メモリ120に保存された第2屈折レイ350に関する情報を基にレイ生成部110がセカンダリレイとして第3シャドウレイ360を生成すると、制御部140は第3シャドウレイ360のレンダリング結果によるカラー値をフレームバッファ150に保存することができる。そして、保存された第2屈折レイ350をそれ以上処理する必要がないため、制御部140は保存された第2屈折レイ350に関する情報を時間T560に削除することができる。よって、参照メモリ120は、第1屈折レイ330及びプライマリレイ310に関する情報のみを時間T560に保存することができる。
【0069】
そして、制御部140は、参照メモリ120に保存されたレイに関する情報があるか否かを判断することができる。判断の結果、参照メモリ120に保存されたレイがある場合、制御部140はセカンダリレイを生成するようにレイ生成部110を制御することができる。
【0070】
第2屈折レイ350に関する情報を削除したため、時間T560に参照メモリ120に保存された最も最近の情報は第1屈折レイ330に関する情報である。よって、制御部140は、第1屈折レイ330に関する情報を基にセカンダリレイを生成するように制御することができる。
【0071】
参照メモリ120に保存された第1屈折レイ330に関する情報を基にレイ生成部110がセカンダリレイを生成することができる。特に、レイ生成部110は、参照メモリ120に保存された第1屈折レイ330に関する情報を基にセカンダリレイである第2シャドウレイ340を先に生成したため、反射または屈折レイをセカンダリレイとして生成することができる。
【0072】
よって、レイ生成部110がセカンダリレイとして第2反射レイ370を生成すると、制御部140は生成された第2反射レイ370がシャドウレイか否かを判断することができる。第2反射レイ370はシャドウレイではないため、制御部140は第2反射レイ370がオブジェクトと交差するか否かを判断することができる。
【0073】
第2反射レイ370がオブジェクトと交差する場合、第2反射レイ370によってセカンダリレイが更に生成されてよい。よって、制御部140は、第2反射レイ370に関する情報を時間T570に参照メモリ120に保存することができる。
【0074】
時間T570に、制御部140は第2屈折レイ350及び第2屈折レイ370の間に何がまだ処理されていないかを判断するために、セカンダリスタックを参照することができる。
図4に示すように、セカンダリスタックは第2屈折レイ370が時間T570に処理されることを示す。制御部140は、セカンダリスタックから第2屈折レイ370をロードし、時間T570に参照メモリ120のメインスタックにそれを保存することができる。
【0075】
制御部140は、シャドウレイではない屈折または反射レイと判断された場合でも、屈折または反射レイがオブジェクトと交差しないと判断された場合、レイに関する情報を参照メモリ120に保存しなくてよい。
【0076】
そして、制御部140は、参照メモリ120に保存された第2反射レイ370に関する情報を基にセカンダリレイを生成するようにレイ生成部110を制御することができる。
【0077】
レイ生成部110が第2反射レイ370によるセカンダリレイとして先に第4シャドウレイ380を生成することができる。制御部140は、生成されたレイがシャドウレイか否かを判断することができる。そして、第4シャドウレイ380によってそれ以上セカンダリレイが生成されないため、制御部140は生成された第4シャドウレイ380に関する情報を時間T580に保存しなくてよい。よって、第4シャドウレイ380がセカンダリレイとして生成された時間T580に参照メモリ120の状態は、第4シャドウレイ380の生成前である時間T570に参照メモリ120の状態と比較して変化がない。
【0078】
そして、制御部140は、参照メモリ120に保存されたレイに関する情報があるか否かを判断することができる。判断の結果、参照メモリ120に保存されたレイがある場合、制御部140はセカンダリレイを生成するようにレイ生成部110を制御することができる。
【0079】
なお、参照メモリ120に保存された第2反射レイ370に関する情報に基づいてレイ生成部110が第4屈折レイ390を生成し、第2反射レイ370によってそれ以上セカンダリレイが生成されないと判断された場合、制御部140は第2反射レイ370に関する情報を削除するように参照メモリ120を制御することができる。
【0080】
よって、第4屈折レイ390のレンダリング結果、制御部140の制御によって参照メモリ120は時間T590に第2反射レイ370に関する情報を削除することができる。
【0081】
そして、制御部140は、第4屈折レイ390がシャドウレイか否かを判断することができる。第4屈折レイ390はシャドウレイではないため、制御部140は第4屈折レイ390がオブジェクトと交差すると判断することができる。第4屈折レイ390がオブジェクトと交差する場合、レイ生成部110は第4屈折レイ390によるセカンダリレイを生成することができる。レイ生成部110は、セカンダリレイとしてシャドウレイを先に生成することができる。よって、セカンダリレイとして第5シャドウレイ500が生成されると、制御部140は第5シャドウレイ500のレンダリング結果カラー値をフレームバッファ150に保存するように制御することができる。そして、第1屈折レイ330によってセカンダリレイがそれ以上生成されないため、制御部140は時間T600に第1屈折レイ330に関する情報を削除するように参照メモリ120を制御することができる。
【0082】
そして、制御部140は、参照メモリ120に保存されたレイに関する情報があるか否かを判断することができる。
図4に示すように、時間T600にプライマリレイ310が参照メモリ120に保存されているため、レイ生成部110は保存されたプライマリレイ310に関する情報を基にセカンダリレイを生成することができる。
【0083】
よって、制御部140は、参照メモリ120に保存されたプライマリレイ310に関する情報を基に第1反射レイ410をセカンダリレイとして生成することができる。例えば、制御部140は、時間T600の後にセカンダリスタックから第1反射レイ410をロードして参照メモリ120のメインスタックに保存することができる。それにより、制御部140は、第1屈折レイ330と第1反射レイ410との間で第1反射レイ140がまだ処理されていないことを判断することができ、時間T600の後に第1反射レイ410を進めることができる。そして、レンダリングシステム100は、第1反射レイによるセカンダリレイに対して上述のような過程を経てレンダリングを行うことができる。
【0084】
全てのセカンダリレイに対するレンダリングを行い、参照メモリ120にそれ以上保存されたレイに関する情報がない場合、レンダリングシステム100はレンダリングを終了することができる。
【0085】
図4を参照して上述した例においては、制御部140がセカンダリスタックを用いて進行を判断することを例として挙げたが、それは単なる1つの例示に過ぎない。制御部140は、第1屈折レイ330に関する情報がメモリ120から削除されると、その削除に関する情報をメモリ120に別途に記録し、次の過程を進める際にそれを参照し、削除された記録がない過程を進める方式で次に進める過程を判断することもできる。この場合には、別途のセカンダリスタックが必要でなくなる。
【0086】
図5は、本発明の一実施形態に係るセカンダリレイ生成手順を示すフローチャートである。まず、レンダリングシステム100は、第1レイを生成し(S610)、生成された第1レイをレンダリングする(S620)。
【0087】
レンダリングシステム100は、第1レイによってセカンダリレイが生成され得ると判断されると(S630−Y)、第1レイに関する情報を参照メモリ120に保存する(S640)。具体的に、生成されたレイがシャドウレイではないと同時にオブジェクトと交差する場合、レンダリングシステム100はセカンダリレイを生成することができるレイと判断することができる。そして、生成されたレイによってセカンダリレイが生成され得ると判断された場合、レンダリングシステム100は生成されたレイに関する情報を参照メモリ120に保存することができる。
【0088】
そして、レンダリングシステム100は、保存された第1レイに関する情報を基に第2レイを生成してレンダリングする(S650)。なお、レイに関する情報は、レイの方向ベクトルを含んでよい。よって、レンダリングシステム100は、保存されたレイの方向ベクトルに対する情報等を用いて、第1レイによるセカンダリレイである第2レイを生成することができる。特に、レンダリングシステム100は、セカンダリレイのうちシャドウレイを生成することができる。シャドウレイの生成後、レンダリングシステム100はセカンダリレイとして屈折レイまたは反射レイを生成することができる。
【0089】
一方、
図6は、本発明の一実施形態に係る再帰的なセカンダリレイ生成手順を示す具体的なフローチャートである。
【0090】
まず、レンダリングシステム100はレイを生成し(S700)、生成されたレイをレンダリングする(S710)。そして、レンダリングシステム100は、生成されたレイがシャドウレイか否かを判断する(S720)。
【0091】
シャドウレイではない場合でも、レイがオブジェクトと交差しない場合、セカンダリレイが生成されない。よって、レンダリングシステム100は、レイがオブジェクトと交差するか否かを判断する(S730)。
【0092】
レイがオブジェクトと交差する場合(S730−Y)、レンダリングシステム100はレイのセカンダリレイを生成するために、レイに関する情報を参照メモリ120に保存する(S740)。そして、レンダリングシステム100は、参照メモリ120に保存されたレイに関する情報を基にレイを生成することができる。このとき、レンダリングシステム100は、セカンダリレイのうちシャドウレイを先に生成することができる。例えば、レンダリングシステム100がセカンダリレイとしてシャドウレイ及び屈折レイを生成する場合、レンダリングシステム100はシャドウレイを先に生成することができる。
【0093】
生成されたレイがシャドウレイである場合(S720−Y)、レンダリングシステム100はレンダリング結果をフレームバッファ150に保存する(S750)。そして、レンダリングシステム100は、参照メモリ120が空いているかを判断する(S760)。
【0094】
なお、レイがオブジェクトと交差せずにシャドウレイではないと判断されると、レンダリングシステム100は参照メモリ120が空いているか判断することができる(S760)。
【0095】
そして、レイによってセカンダリレイがそれ以上生成されないと判断された場合、レンダリングシステム100は参照メモリ120からレイに関する情報を削除することができる。
【0096】
よって、レンダリングシステム100は、レイ生成部110から生成するレイの量を一定に制御することができる。
【0097】
図7は、スタック構造またはスタック基板メモリ割当を用いた参照メモリ830を含むレンダリングシステム1000を示す。しかし、それは一実施形態に過ぎず、キューを含み多様な形態のメモリ構造またはメモリ割当方法の使用が可能である。
【0098】
レンダリングシステム1000は、
図7のレイ生成部800を介してレイを生成することができる。そして、生成された光線に対してレンダリングシステム1000は、加速構造を探索し、交差点を検査してシェーディングを行うための構成要素が含まれたレンダラ810を介してレンダリングを行うことができる。
【0099】
そして、参照メモリマネージャ820は、生成されたレイからセカンダリレイが生成され得るか否かを判断することができる。そして、判断の結果、生成されたレイがセカンダリレイを生成することができるレイと判断されると、参照メモリマネージャ820は生成されたレイに関する情報を参照メモリ830に保存することができる。
【0100】
レイがシャドウレイではなくオブジェクトと交差すると、参照メモリマネージャ820はセカンダリレイを生成することができるレイであると判断することができる。
【0101】
なお、シャドウレイに対するレンダリングが行われると、レンダリングシステム1000はシャドウレイに対するレンダリング結果をフレームバッファ150に保存することができる。すなわち、レンダリングシステム1000は、シャドウレイに対するカラー値をフレームバッファ150に保存することができる。
【0102】
参照メモリマネージャ820は、レンダリングを行ったレイからそれ以上セカンダリレイが生成され得ないと判断されると、当該レイに関する情報を削除するように参照メモリ830を制御することができる。
【0103】
一方、
図8は、本発明の別の実施形態に係るレンダリングシステム2000を示す図である。
図8に示すレンダリングシステム2000もレイ生成部900を介してレイを生成することができる。そして、生成された光線に対してレンダリングシステム2000は加速構造を探索し、交差点を検索してシェーディングを行うための構成要素が含まれたレンダラ910を介してレンダリングを行うことができる。
【0104】
なお、レンダリングシステム2000は、レイリファレンスマネージャ920によって、レイに関する情報を管理することができる。具体的に、リファレンスデータカルキュレータ930は生成されたレイによってセカンダリレイが生成され得るか否かを判断することができる。そして、判断の結果、生成されたレイがセカンダリレイを生成することができるレイと判断されると、リファレンスデータカルキュレータ930は生成されたレイに関する情報を演算し、演算された情報を参照メモリ940に保存することができる。生成されたレイがシャドウレイではなくオフジェクトと交差すると、リファレンスデータカルキュレータ930はセカンダリレイを生成することができるレイと判断し、生成されたレイに関する情報を演算することができる。例えば、リファレンスデータカルキュレータ930は生成されたレイに対して、三角インデックス、レイデプス、レイが派生された方向、位置、そしてレイ及びオブジェクトが交差した位置に関する情報を演算することができる。
【0105】
なお、シャドウレイに対するレンダリングが行われると、レンダリングシステム2000はシャドウレイに対するレンダリング結果をフレームバッファ150に保存することができる。すなわち、レンダリングシステム2000は、シャドウレイに対するカラー値をフレームバッファ150に保存することができる。
【0106】
エリミネータ950は、レンダリングを行ったレイによってそれ以上セカンダリレイが生成され得ないと判断されると、当該レイに関する情報を削除するように参照メモリ940を制御することができる。すなわち、エリミネータ950は、参照メモリ940に保存されたレイに関する情報をプル(pull)し、レイに関する情報を削除することができる。例えば、レンダリングを行ったレイによってセカンダリレイとしてシャドウレイのみ生成された場合、エリミネータ950は参照メモリ940に保存されたレイに関する情報を削除することができる。
【0107】
よって、
図8に示すようなレンダリングシステム2000によって、ユーザは参照メモリ940で効率的にメモリを管理してレンダリングを行うことができるレンダリングシステム2000を利用することができるようになる。
【0108】
図9は、本発明の一実施形態に係るレンダリングシステムのレイ生成方法を示すフローチャートである。まず、レンダリングシステム100は、レイを生成し(S1000)、生成されたレイをレンダリングする(S1010)。そして、レンダリングシステム100は、生成されたレイに対するレンダリング結果によるカラー値をフレームバッファ150に保存して当該レイに対するレンダリングを完了することができる。
【0109】
レンダリングシステム100は、生成されたレイがシャドウレイかを判断する(S1020)。判断の結果、生成されたレイがシャドウレイではない場合(S1020−N)、レンダリングシステム100は生成されたレイがオブジェクトと交差するか否かを判断する(S1040)。
【0110】
生成されたレイがオブジェクトと交差すると判断されると(S1040−Y)、レンダリングシステム100は生成されたレイに関する情報を演算する(S1050)。そして、演算された情報を参照メモリに保存する(S1060)。生成されたレイがシャドウレイではなく、オブジェクトと交差すると、セカンダリレイが生成されてよい。よって、レンダリングシステム100はセカンダリレイを生成するために、演算された情報を参照メモリに保存することができる。
【0111】
生成されたレイがシャドウレイである場合(S1020−Y)、レンダリングシステム100はレンダリング結果をフレームバッファ150に保存する(S1030)。すなわち、レンダリングシステム100は、シャドウレイに対するレンダリング結果としてカラー値をフレームバッファ150に保存することができる。そして、レンダリングシステム100は、参照メモリが空いているかを判断する(S1070)。なお、レイがシャドウレイでなくても、オブジェクトと交差しない場合、レンダリングシステム100は参照メモリが空いているかを判断することができる(S1070)。
【0112】
参照メモリが空いている場合(S1070−Y)、レンダリングシステム100はレンダリングを終了することができる。ただ、参照メモリが空いていない場合(S1070−N)か、演算された情報が参照メモリに保存された場合(S1060)、レンダリングシステム100は参照メモリに保存された情報のうち、最後に保存された情報を獲得し(S1080)、シャドウレイを除くセカンダリレイが生成可能か否かを判断する(S1090)。シャドウレイを除くセカンダリレイが生成可能な場合とは、情報が保存されたレイがオブジェクトと交差する場合を意味することができる。
【0113】
シャドウレイを除くセカンダリレイが生成不可と判断された場合(S1090−N)、レンダリングシステム100は獲得した情報を削除する(S1100)。
【0114】
具体的に、獲得した情報に対するレイがそれ以上反射レイまたは屈折レイのようなセカンダリレイを生成しない場合、レンダリングシステム100は獲得した情報を削除することができる。そして、レンダリングシステム100は、獲得した情報に対するレイがセカンダリレイとして、ただシャドウレイのみを生成する場合でも、シャドウレイが生成されてレンダリングされると、獲得した情報に対するレイを削除することができる。
【0115】
シャドウレイを除くセカンダリレイが生成可能な場合(S1090−Y)、レンダリングシステム100は獲得した情報を基にレイを生成することができる(S1000)。すなわち、レンダリングシステム100は、参照メモリに保存された情報が全て削除されてなくなるまで、再帰的にレイを生成することができるようになる。
【0116】
本発明の多様な実施形態によると、ユーザはメモリに保存されるレイに対する情報の量を制御することで、メモリを効果的に使用するレンダリングシステムを利用することができるため、それによって性能を向上させることができる。
【0117】
それに限られるものではないが、1つ以上の実施形態はコンピュータ読取可能な記録媒体にコンピュータが読取可能なコードで実現されてよい。コンピュータ読取可能な記録媒体は、コンピュータシステムによって読み取られ得るデータが保存される全種類の記録装置を含む。コンピュータ読取可能記録媒体の例は、読取専用メモリ(ROM)、ランダムアクセルメモリ(RAM)、CD−ROM、磁気テープ、フロッピーディスク、光データ保存装置を含む。コンピュータ読取可能記録媒体は、コンピュータ読取可能コードが分散方式で保存された実行されるように、ネットワークで接続されたコンピュータシステムに分散されてよい。なお、一実施形態は、搬送波(carrier wave)のようなコンピュータ読取可能な伝送媒体を通じて伝送されたコンピュータプログラムで記録されてよく、プログラムを実行する汎用または特殊の目的のデジタルコンピュータに受信されて実現されてよい。なお、実施形態において、上述の装置の1つ以上のユニットは、回路、プロセッサ、マイクロプロセッサ等を含んでよく、コンピュータ読取可能媒体に保存されたコンピュータプログラムを実行することができると理解される。
【0118】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明は以上の実施形態に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的趣旨の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。