JP6487578B1 - プログラム、記録媒体、及び影描画方法 - Google Patents

プログラム、記録媒体、及び影描画方法 Download PDF

Info

Publication number
JP6487578B1
JP6487578B1 JP2018000761A JP2018000761A JP6487578B1 JP 6487578 B1 JP6487578 B1 JP 6487578B1 JP 2018000761 A JP2018000761 A JP 2018000761A JP 2018000761 A JP2018000761 A JP 2018000761A JP 6487578 B1 JP6487578 B1 JP 6487578B1
Authority
JP
Japan
Prior art keywords
shadow
light source
depth
texel
depth buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018000761A
Other languages
English (en)
Other versions
JP2019121193A (ja
Inventor
雄介 徳吉
雄介 徳吉
智博 溝口
智博 溝口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Square Enix Co Ltd
Original Assignee
Square Enix Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Square Enix Co Ltd filed Critical Square Enix Co Ltd
Priority to JP2018000761A priority Critical patent/JP6487578B1/ja
Application granted granted Critical
Publication of JP6487578B1 publication Critical patent/JP6487578B1/ja
Publication of JP2019121193A publication Critical patent/JP2019121193A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

【課題】好適な精度のハードシャドウの描画に要する演算量及び演算時間を低減する。
【解決手段】プログラムは、シーンを描画する視点の情報に基づき、該視点からの投影において描画されるスクリーンの各ピクセルについて、影が生じるか否かを判定するシェーディング点を設定させ、シーンについて定義される光源を示す光源情報とシーンに配置される描画オブジェクトの情報とに基づいて、光源からの投影にて描画オブジェクトの深度を示す深度バッファをコンピュータに生成させる。またプログラムは、設定されたシェーディング点群と生成された深度バッファとに基づいて、照明状態が確定するシェーディング点を特定して判定対象から除外させ、除外後のシェーディング点群の各々について、シーンに配置される描画オブジェクトに起因する照明状態をコンピュータに判定させる。
【選択図】図6

Description

本発明は、プログラム、記録媒体、及び影描画方法に関し、特に3次元シーンの描画における影描画技術に関する。
レイトレーシングのような非リアルタイム演算を行うことなく、高精細なハードシャドウを高速に描画する技術がある(非特許文献1)。
クリス・ワイマン(Chris Wyman)、外2名著、"Frustum-Traced Raster Shadows: Revisiting Irregular Z-Buffers"、i3D 2015 ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games、2015年2月27日
非特許文献1の技術(Frustum Traced Shadows)では、視点情報に基づくシーンの描画に先立って、各ピクセルに描画される描画オブジェクト(シェーディング点)に影が生じるか否かを判定した可視性マスク(visibility mask)を生成している。より詳しくは、視点からシーンを捉える視点空間(eye-space)について深度バッファを生成し、該深度バッファに基づき特定されるシェーディング点を光源からシーンを捉える光源空間(light-space)に変換することで生成した2次元テクスチャ(irregular z-buffer)に基づいて、影が生じるか否かの判定が行われる。ここで、irregular z-bufferは、光源から観たシェーディング点の情報をグリッドの対応するセルに格納するデータ構造であり、セルに対応する空間に複数のシェーディング点が存在する場合には、それらをリンクリストとして格納する。
Frustum Traced Shadowsでは、シェーディング点の全てについて、シーンに存在する描画オブジェクトのポリゴン(三角形)の、光源空間に係るピクセルシェーダを実行し、該ポリゴンによってシェーディング点への光線が遮られるのであれば、該シェーディング点に影が生じるものとして判定する。より詳しくは、ポリゴンに光源から照射される光線の方向の長さを持たせることで形成される三角柱の空間(frustum)に、各シェーディング点が含まれるかを判定することで、影が生じるか否かの判定が行われる。このFrustumとシェーディング点との交差判定をFrustum Tracingという。
一方で、Frustum Tracingを用いた影が生じるか否かの判定は、シェーディング点よりも光源寄りに存在するポリゴンについてのみ行えればよいものであるため、シーンに存在する全てのポリゴンに行う必要はない。このため、非特許文献1の技術では、判定にかかる演算量を低減すべく、irregular z-bufferに格納されている、図2(a)に示されるような、光源200から最も遠方のシェーディング点201の深度値を上限として定め、該深度値よりも手前にあるポリゴンとirregular z-bufferに含まれる全シェーディング点と、を対象として判定を行なっていた。換言すれば、光源空間のirregular z-bufferの各セルについて、最奥のシェーディング点201の深度値をもって、判定対象とするポリゴンのカリング(depth culling)を行い、演算量の低減を行なっていた。
しかしながら、非特許文献1のようなdepth cullingの手法は、図2(a)のような最奥のシェーディング点よりも奥に存在する描画オブジェクトが多いシーンでは好適な演算量の低減が見込めるが、図2(b)のような最奥のシェーディング点201よりも手前に存在する描画オブジェクト202が多いシーンでは演算量の低減が見込めない可能性があった。即ち、Frustum Tracingにおけるシェーディング点に影が生じるか否かの処理は、シェーディング点の数に対し、カリング後のポリゴンについて起動するピクセルシェーダの数を乗じた分の演算が必要となるため、上記のようなシーンでは、高速化が困難であった。
本発明の少なくとも1つの実施形態は、上述の問題点に鑑みてなされたものであり、好適な精度のハードシャドウの描画に要する演算量及び演算時間を低減するプログラム、記録媒体及び描画方法を提供することを目的とする。
前述の目的を達成するために、本発明の少なくとも1つの実施形態に係るプログラムは、コンピュータに、シーンに配置される描画オブジェクトについて、影が生じるか否かを示す影情報を生成させるプログラムであって、シーンを描画する視点の情報に基づき、該視点からの投影において描画されるスクリーンの各ピクセルについて、影が生じるか否かを判定するシェーディング点を設定する処理と、シーンについて定義される光源を示す光源情報とシーンに配置される描画オブジェクトの情報とに基づいて、光源からの投影の2次元テクスチャである、シーンに配置される描画オブジェクトの深度を示す深度バッファを生成する処理と、設定されたシェーディング点群と生成された深度バッファとに基づいて、照明状態が確定するシェーディング点を特定する処理と、シェーディング点群から、照明状態が確定したシェーディング点を除外する処理と、除外後のシェーディング点群の各々について、光源からの投影においてシーンに配置される描画オブジェクトに起因する照明状態を判定する処理と、照明状態が確定したシェーディング点と、照明状態が判定されたシェーディング点とに基づいて、視点からの投影における影情報を生成する処理と、を有する。
このような構成により本発明の少なくとも1つの実施形態によれば、好適な精度のハードシャドウの描画に要する演算量及び演算時間を低減することが可能となる。
本発明の実施形態及び変形例に係るPC100の機能構成を示したブロック図 従来技術及び本発明の課題を説明するための図 従来技術の影描画を説明するための図 本発明の実施形態及び変形例に係る第1の前処理及びカリング処理を説明するための図 本発明の実施形態及び変形例に係る第1の前処理及びカリング処理を説明するための別の図 本発明の実施形態1に係るPC100で実行される、画面生成処理を例示したフローチャート 本発明の実施形態2及び変形例に係る第2の前処理及びカリング処理を説明するための図 本発明の実施形態2及び変形例に係る第2の前処理及びカリング処理を説明するための別の図 本発明の実施形態2に係るPC100で実行される、画面生成処理を例示したフローチャート 本発明の実施形態及び変形例に係る第1の前処理をハードウェア実装する例を説明するための図
[実施形態1]
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、描画方法を実現するコンピュータの一例としての、シーンに配置される描画オブジェクトに影が生じるか否かを示す影情報を生成し、該影情報を用いてシーンの描画を行うPCに、本発明を適用した例を説明する。しかし、本発明は、影情報を生成することが可能な任意の機器に適用可能である。
また、本明細書において「影情報」とは、視点からの投影において描画されるスクリーンの各ピクセルに、ハードシャドウ(影)を生じさせるか否かを示した2次元テクスチャであり、各テクセルがシェーディング点と対応するものとして説明する。しかしながら、本発明の実施はこれに限られるものではなく、影情報はスクリーンの各ピクセルに影を生じさせるか否かを判別可能に構成された情報であれば、2次元テクスチャの態様である必要はない。
《PC100の構成》
図1は、本発明の実施形態に係るPC100の機能構成を示すブロック図である。
制御部101は、例えばCPU等であり、PC100が有する各ブロックの動作を制御する。制御部101は、記録媒体102に記憶されている各ブロックの動作プログラムを読み出し、メモリ103に展開して実行することにより各ブロックの動作を制御する。
記録媒体102は、例えば書き換え可能なROMやHDD、あるいは所定の光学ドライブに装填されることにより読み取り可能になる光学メディア等の着脱可能な記録媒体を含む、恒久的にデータを保持可能に構成された不揮発性の記憶装置である。記録媒体102は、PC100が有する各ブロックの動作プログラムに加え、各ブロックの動作において必要なパラメータ、及び影描画を伴うアプリケーション(描画アプリケーション)のデータやプログラム等を格納する。ここで、描画アプリケーションは、影情報の生成を行い、シーンに配置された描画オブジェクトを視点について描画した画面を生成する際に、該影情報に基づいて影の適用を行う処理を伴うアプリケーションである。
メモリ103は、例えばRAM等の揮発性の記憶装置である。メモリ103は、各ブロックの動作プログラムの展開領域としてだけでなく、各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域として用いられる。
前処理部104は、本発明に係る影描画に際し、シーンに定義される光源からの投影において、該シーンに配置される描画オブジェクトについての影判定用深度バッファを生成する第1の前処理を行う。詳細は後述するが、本実施形態のPC100では、後述の判定部106において、Frustum Tracingを用いて各シェーディング点に影が生じるか否かの判定を行う。一方で、上述したように非特許文献1に記載の手法で行うFrustum Tracingは、シーンにおける描画オブジェクトの配置や視点の設定によっては演算量が増大し得る。このため、本実施形態の描画アプリケーションでは、本前処理部104によって深度バッファを生成することで、そもそもFrustum Tracingの対象としなくてもよいシェーディング点を除外し、対象数を低減することを実現する。
カリング部105は、前処理部104により生成された影判定用深度バッファに基づき、上述した通り、スクリーンの全ピクセルの各々について定められたシェーディング点群のうちから、Frustum Tracingの対象としないシェーディング点を除外するカリング処理を行う。
判定部106は、カリング部105によるカリング後のシェーディング点群の各々について、Frustum Tracingを行い、影が生じるか否かの判定を行う。
生成部107は、カリング部105によるカリング結果及び判定部106による判定結果に基づき、影情報の生成を行う。当該影情報は、定められた視点についてシーンを描画する際に参照され、スクリーンの各ピクセルのピクセルシェーダにおいて、影を反映した色変化を生じさせるかの判断に用いられる。上述したように、影情報は、視点からの投影において、各シェーディング点にハードシャドウが生じるか否かを示す2次元テクスチャであり、描画する画面と同一の画素数を有する。
描画部108は、例えばGPU等のゲーム画面に係る描画処理を行う描画装置である。描画部108は、ゲームに係る処理の結果生成された描画命令に応じてゲーム画面の描画を行う。また、GPUは複数処理の並行演算処理能力に長けているため、描画部108は前処理部104、カリング部105、判定部106、生成部107及び制御部101の少なくともいずれかが実行する処理を代替して行ってもよい。
表示制御処理部109は、描画部108により描画されたスクリーン(画面)を、PC100に接続された表示装置に所定の頻度(フレームレート)で出力する表示制御を行う。表示装置は、PC100に外部接続するものであってもよいし、PC100と同一の筐体に内蔵されるものであってもよい。
操作入力部110は、例えばアナログスティックやボタン、キーボード、マウス、タッチ検出センサ等の、PC100が有する操作入力を行うためのユーザインタフェースである。操作入力部110は、なされた操作入力を検出すると該操作入力を識別するための情報を制御部101に伝送する。本実施形態のPC100では、操作入力部108により受け付けられた操作入力に応じて、表示出力される画面の描画内容が変化し得るため、毎フレームの画面描画に際し、操作入力に応じた各種処理がなされる。本実施形態では簡単のため、操作入力部110は、シーンを描画する視点の移動に係る操作入力を受け付けるものとする。
《影情報の生成》
次に、本実施形態の描画アプリケーションにおいて、画面の描画に際して生成される影情報の詳細について説明する。
〈第1の前処理(Depth Prepass)〉
上述したように、本実施形態の描画アプリケーションでは、Frustum Tracingに係る演算量を低減すべく、前処理部104が、本発明の第1の深度バッファとしての、光源からの投影の2次元テクスチャである影判定用深度バッファを生成する。影判定用深度バッファの生成は、光源からの投影において、該深度バッファの各テクセルについて、光源からシーンに配置される描画オブジェクトのポリゴンまでの深度値を導出し、格納する。
ところで、従来のシャドウマップの生成において参照される、光源からの投影の深度バッファでは、光源から該テクセルの中心に向かうレイ(光線)をキャストした際に、該レイが最初に交差するポリゴンまでの深度値が、各テクセルに格納される。しかしながら、このような深度バッファは、Frustum Traced Shadowsが解決しようとしている通り、図3に示されるような、光源からの投影のテクセルの範囲に含まれるシェーディング点301〜303のうち、厳密にはポリゴン300による影304が生じないシェーディング点301についても影が生じるものとして判断されることになるため、視点からの投影の画面を描画した場合に、ハードシャドウにアーティファクトが発生し得る。
このため、非特許文献1のFrustum Tracingでは、光源からの投影において、図4に示されるような光源と各ポリゴンとで規定される空間範囲(Frustum)に、各シェーディング点が含まれるか否かを判定している。ここで、図4(a)の例では光源は平行光源(directional light)であり、光源からの投影におけるポリゴン401の正射影402を断面とする三角柱403で規定される空間範囲について、シェーディング点が含まれるか否かの判定が行われる。
即ち、非特許文献1の手法では、光源からの投影に係る2次元テクスチャ(Irregular z-buffer)の各テクセルに含まれるシェーディング点群に、該テクセルに係る空間範囲を部分的に遮断するポリゴンの存在によって、影の発生有無に違いが生じることが考慮されている。このため、光源からの投影において、各テクセルに対応するポリゴンについてのピクセルシェーダで上記判定をシェーディング点ごとに行う。ここで、テクセルに係る空間範囲を遮断するとは、該範囲に進入してポリゴンが配置された場合に、該ポリゴンよりも奥に存在する領域に対して、光源からの光線が到達しなくなることを示しているものとする。
一方で、上述したような光源からの投影の1テクセルの範囲に含まれるシェーディング点の全てについて、より光源に近い位置に存在するポリゴンによって影が生じると判断することが可能なケースも存在する。即ち、図4(b)のようにシェーディング点との比較対象であるポリゴン411が、光源と1テクセル412とで定まる空間413を完全に遮断しているのであれば、該テクセル412に含まれるシェーディング点(より詳しくはポリゴン411よりも光源から遠離しているシェーディング点414)については、Frustum Tracingの判定を行わずとも、影が生じるものと照明状態を判定することができる。
従って、本実施形態の描画アプリケーションにおいて前処理部104が生成する影判定用深度バッファは、シーンに配置される描画オブジェクトのポリゴンによって完全に遮断されるテクセルについてのみ、該ポリゴンに係る深度値を格納するように構成される。このとき、1つのテクセルについて、光源と該テクセルとで定まる空間を完全に遮断するポリゴンが複数存在する場合、このうちの光源に最も近接しているポリゴンに係る深度値が格納される。また、完全に遮断するポリゴンが存在しないその他のテクセルについては、深度値の初期値(例えば最奥を示す値)が入力されればよい。
より詳しくは、前処理部104が行う第1の前処理では、シーンに配置される描画オブジェクトのポリゴンが、光源からの投影における影判定用深度バッファのテクセルと光源とで定まる空間を完全に遮断する場合、次のように該テクセルの深度値が確定される。例えば図5に示されるように、光源とテクセル500で定まる空間範囲501が存在し、この空間範囲に対して光源から照射される光線をポリゴン502が遮るよう配置される場合について考える。
本実施形態ではシーンに提供される光源は平行光源であり、空間範囲501は、光線方向に延びる四角柱(直方体)であるものとする。前処理部104は、1つのテクセル500についての空間範囲を規定するため、光源から該テクセル500の四隅に向かう光線(レイ)503a〜dをキャストする。このとき、ポリゴン502が空間範囲501を完全に遮断しているのであれば、4つのレイ503a〜dはポリゴン502の面と交点504a〜dを有する。本実施形態では、該ポリゴン502上の、テクセル500に係る範囲にシェーディング点が存在した場合であっても正しく判定が可能なよう、これら交点504a〜dのうちの最奥の交点(図では504c)の深度値を、テクセル500の深度値として影判定用深度バッファに格納する。
従って、第1の前処理により生成された影判定用深度バッファは、対応する空間範囲を完全に遮断するポリゴンが存在するテクセルには、該ポリゴン上の交点に基づく深度値が格納されている。また、対応する空間範囲にポリゴンが存在しない、またはあったとしても空間範囲を完全には遮断しないテクセルには、影判定用深度バッファ初期化時の初期値(最奥)が格納されている。
〈シェーディング点のカリング〉
次に、このように生成された影判定用深度バッファに基づき、Frustum Tracingによる判定を行う必要がないシェーディング点のカリングを行う。
より詳しくは、まず描画部108はカリングに先立ち、視点からの投影の深度バッファが取得され、視点情報及び該深度バッファに基づいて、描画する画面に係るシェーディング点群を決定する。ここで、視点からの投影の深度バッファは、生成する画面と同一の画角を捉え、同一の画素数を有して構成される2次元テクスチャであってよく、例えば遅延レンダリング(Deferred Rendering)の描画プリパスにおいて生成されるGバッファから取得されるものであってよい。深度バッファでは、視点からの距離(深度値)が取得可能であるため、視点情報に基づき、描画する画面の、各テクセルと対応する位置に存在する描画オブジェクトについて定義するシェーディング点の3次元座標を特定することが可能である。
なお、本実施形態では画面描画に遅延レンダリングが用いられるものとし、生成されたGバッファに含まれる深度バッファをシェーディング点群の定義に流用するものとして説明するが、本発明の実施はこれに限られるものではない。即ち、前方レンダリング(Forward Rendering)を用いて画面描画が行われる態様であっても、深度バッファを描画に先行して生成すれば、同様に適用可能である。また、後述の影情報が生成された後は、視点や光源が動かないのであれば当該影情報は再利用可能であり、深度バッファの生成、シェーディング点の定義は必ずしも毎フレーム実行が必須の処理ではない。
また描画部108は、シェーディング点群の3次元座標を特定すると、これを光源からの投影での2次元座標に変換する。即ち、上述した影判定用深度バッファと同じ2次元座標系のいずれの位置(テクセル)に各シェーディング点が配置されるかが導出される。当該変換において、描画部108は、各シェーディング点と光源との距離(深度値)も導出するものとする。
カリング部105は、このように光源からの投影の2次元座標系及び深度値に変換されたシェーディング点群を、前処理部104により生成された影判定用深度バッファに基づいてカリングする。即ち、図4(b)について上述したように、光源からの投影において、テクセルに係る空間を遮断するポリゴンが存在するのであれば、該ポリゴンよりも奥に存在するシェーディング点については、該ポリゴンによって確実に影が生じることになる。このため、該当のシェーディング点については、Frustum Tracingを行うまでもなく照明状態が確定することになる。
従って、カリング部105は、影判定用深度バッファにおいて初期値以外の深度値が格納されているテクセルが存在している場合、座標変換により該テクセルに係る空間に存在することが判明したシェーディング点を、その深度値に応じてFrustum Tracingの対象とするか否かを決定する。より詳しくは、該当のシェーディング点の深度値と、影判定用深度バッファのテクセルの深度値とを比較し、前者が後者よりも光源から奥の値を示す場合に、カリング部105は該シェーディング点をFrustum Tracingの対象から除外(カリング)する。
描画部108は、このようなカリング処理がなされた後、カリング後のシェーディング点に基づいて、影判定用深度バッファのテクセルごとに、該テクセルに対応付けられるシェーディング点のリンクリストを生成する。該リンクリストは、非特許文献1におけるirregular z-bufferと対応するが、深度に基づくシェーディング点のカリングを行っている点で内容が異なっている。
また生成部107は、カリングを行ったシェーディング点については、影が生じることが確定したため、影情報の対応するテクセルに影が生じることを示す値を格納する。本実施形態では影情報は、ハードシャドウを描画するピクセルを特定するための情報であるため、各テクセルに格納される情報は論理型の情報であってよく、初期値では影が生じないことを示す情報が格納されているものとする。
〈Frustum Tracingによる照明状態の判定〉
判定部106は、カリング後のシェーディング点について、シーンに配置される描画オブジェクトのポリゴンによる影が生じるか否かの判定を、Frustum Tracingを用いて行う。詳細は省略するが、判定部106は、シーンに配置される描画オブジェクトのポリゴンの各々について、該ポリゴンによって空間の少なくとも一部が遮断され得る影判定用深度バッファのテクセルを特定する。そして判定部106は、該テクセルに対応するシェーディング点のリンクリストに含まれるシェーディング点の各々について、対象ポリゴンとの間でFrustum Tracingを行い、影が生じるか否かの判定を行う。
また、本発明に必須の構成ではないが、演算量を低減するため、影判定用深度バッファのテクセルのうちの、描画オブジェクトのポリゴンにより完全に遮断されると判断されていないテクセルについては、非特許文献1と同様に最遠のシェーディング点の深度値が格納されてもよい。この場合、影判定用深度バッファを参照して、テクセルに係るシェーディング点との判定を行うポリゴンの深度値が、該テクセルの深度値よりも奥を示す場合には、該ポリゴンについてはFrustum Tracingを行わないものとしてよい。
〈影情報の生成〉
各シェーディング点について判定部106による判定がなされると、生成部107は判定結果に応じて影情報の更新を行う。影情報の各テクセルの値は、いずれかのポリゴンについて影が生じるものと判定された場合に、影が生じていることを示す値に変更され、以降は他のポリゴンについて影が生じていると判定されても値の更新は行われないものとしてもよい。換言すれば、描画オブジェクトのポリゴンごとにFrustum Tracingを行う過程において、既に影が生じるものとして判定されたシェーディング点は、判定対象から除外するものとしてもよい。
このように生成された影情報は、視点からの投影にてシーンの描画オブジェクトを描画して画面を生成する際に参照され、影が生じるピクセルについては、該ピクセルに係るピクセルシェーダにおいて影を反映した色値で描画オブジェクトの描画がなされる。
なお、本実施形態では、カリングされたシェーディング点に係るテクセルの影情報は、カリング部105における処理の時点で更新されるものとして説明したが、更新のタイミングはこれに限られるものではない。即ち、影情報は、視点についてシーンを描画する処理が行われる際に参照できればよいため、Frustum Tracingによる判定が行われた際に、カリングされたシェーディング点についての影情報の更新も行われて生成されるものとしてもよい。
《画面生成処理》
上述の構成をもつ本実施形態のPC100にて、描画アプリケーションに係り実行される画面生成処理について、図6のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、制御部101が、例えば記録媒体102に記憶されている描画アプリケーションのプログラムを読み出し、メモリ103に展開して実行することにより実現することができる。なお、本画面生成処理は、例えば描画アプリケーションが実行された際に開始されるものとして説明する。
S601で、制御部101は、シーンを描画する視点の情報を決定する。描画する視点は、上述したようになされた操作入力に応じて変更されるものであってよく、制御部101は、例えばなされた操作入力に応じて視点の情報を決定すればよい。
S602で、前処理部104は、シーンに配置される描画オブジェクトのポリゴンの情報に基づいて、影判定用深度バッファを生成する第1の前処理を実行する。即ち、各ポリゴンについて、光源からテクセルの四隅に向かうレイをキャストし、全てのレイがポリゴンに交差するのであれば、このうちの最奥の交点の深度値を影判定用深度バッファに格納する。上述した通り、本ステップにおける影判定用深度バッファへの深度値の格納は、光源とテクセルとで定まる空間を完全に遮断するポリゴンが存在するテクセルについてのみ行われる。
S603で、描画部108は、視点について描画する範囲の深度バッファを生成し、シェーディング点群を決定する。このとき、描画部108は視点情報と深度情報とに基づいて、各シェーディング点の3次元位置を示す位置情報を導出する。また描画部108は、導出したシェーディング点群の位置情報を、光源からの投影の座標系(光源座標系)に変換する。
S604で、カリング部105は、光源座標系に変換されたシェーディング点群の位置情報と影判定用深度バッファとに基づいて、影が生じることが確定しているシェーディング点を除外するカリング処理を行う。即ち、カリング部105は、第1の前処理において影判定用深度バッファに深度値が格納されたテクセルの範囲(光源からの投影の2次元空間)に変換後の位置情報が含まれるシェーディング点について、深度値の比較を行う。そしてカリング部105は、影判定用深度バッファに格納された深度値よりも奥の深度値を有する(光源から遠離する)シェーディング点をカリングし、Frustum Tracingの判定対象から除外する。
S605で、生成部107は、S604においてカリングされたシェーディング点に対応する影情報のテクセルを、影が生じることを示す情報に更新する。
S606で、判定部106は、S604におけるカリング後に残ったシェーディング点について、シーンに配置された描画オブジェクトのポリゴンによる影が生じるか否かの判定をFrustum Tracingを用いて行う。
S607で、生成部107は、S606において行われた判定結果に基づき、影が生じると判定されたシェーディングに対応する影情報のテクセルを、影が生じることを示す情報に更新する。
S608で、描画部108は、視点情報と影情報とに基づいてシーンの描画処理を行い、描画アプリケーションにより提供される画面を生成する。本ステップの描画処理では、影情報において影が生じることを示す情報が格納されているテクセルに対応するピクセルには、該当の描画オブジェクトのピクセルシェーダにおいて、ハードシャドウに応じた状態となるよう色情報の変更が行われる。生成された画面は、表示制御処理部109に伝送され、描画アプリケーションの提供画面として接続された表示装置(不図示)に送出され、表示される。
このようにすることで、判定が不要なシェーディング点をFrustum Tracingの対象から除外することができるため、非特許文献1の手法に比べて演算量を低減し、シーンに依らず好適な精細なハードシャドウを適用した画面を生成することができる。
なお、本実施形態ではソフトウェアとして本発明の手法を実装する例について説明したが、本発明の実施はこれに限られるものではない。上述したように、前処理部104、カリング部105、判定部106、生成部107の処理はハードウェア(GPU)を用いて行われるものであってもよい。
例えば前処理部104における影判定用深度バッファの生成において、テクセルがポリゴンによって完全に遮断されているか否かの判定処理は、GPUのHWラスタライザに固定機能として組み込まれていることがある。この場合、ピクセルシェーダでレイキャストを行わずとも遮断の判定が可能である。また、深度値をピクセルシェーダを用いて導出すると、演算コストが高いため、GPUのHWラスタライザのslope scaled depth biasを利用して導出させるものとしてもよい。例えば図10のような態様(光源から観て最近が深度値1で、最奥が深度値0の態様)においてslope scaled depth biasの値をdとしたとき、HWラスタライザが出力する深度値は以下の式の左辺となる。
右辺はレイキャストによって得られる深度値であり、この不等式を満たすdを用いて影判定用深度バッファに格納する深度値を得るものとしてもよい。この不等式を満たすdとして例えばd=1がある。
[実施形態2]
上述した実施形態1では、光源からの投影にて生成された影判定用深度バッファのテクセルについて、光源と該テクセルとで定まる空間を完全に遮断するポリゴンが存在する場合に、該ポリゴンよりも奥に存在するシェーディング点には必ず影が生じるとして、Frustum Tracingの判定対象から除外する態様について説明した。即ち、光源と描画オブジェクトとの関係に基づき、光線を遮断することが確定するシェーディング点を特定して判定対象から除外することで、演算量を低減させる態様について説明した。本実施形態では、描画に採用される方式や描画するシーンを考慮して、照明状態が確定するシェーディング点をさらに特定し、これを判定対象から除外することで演算量を低減させる態様について説明する。
《照明状態を確定可能なシーン》
上述した実施形態では、カリング後のシェーディング点を判定対象として、シーンに配置される描画オブジェクトのポリゴンとシェーディング点とについて、判定部106がFrustum Tracingを行って影が生じるか否かの判定を行うものとして説明した。ところで、図7(a)に示されるように、シーンに配置される描画オブジェクトのうち、閉じた(全周の面が形成された)3次元モデルが存在する場合、光源からの投影において、奥行き方向に1つの描画オブジェクトの前面(front-face)と背面(back-face)が並ぶことになる。
このように、1つの光線(テクセル)上に同一の描画オブジェクトの複数のポリゴン(前面と背面)が存在する場合、該オブジェクトによる影が生じるかを判定する、他の描画オブジェクト上のシェーディング点について、判定部106は各ポリゴンのピクセルシェーダを実行するため、前面と背面の双方について判定を行うことになる。しかしながら、閉じた描画オブジェクトであれば、照明条件にもよるが、いずれか一方の面のみについて判定を行っても結果への影響は少ない。故に、影描画に係る処理において、前面と背面のいずれかをカリングして処理対象から除外する、front-face culling(図7(b))やback-face culling(図7(c))が従来使用されている。
本実施形態では、このうち前面のポリゴンをカリングするfront-face cullingが使用される場合に、照明状態を判定するための新たな深度バッファを生成し、これに基づいて、照明状態が確定するシェーディング点をさらにカリングする。
front-face cullingを用いるか否かは、主として描画されるシーンの条件に応じて定まる。例えば、屋外シーンのように、光源が上空に存在し、配置される描画オブジェクトの大半が上向きの面を有するようなシーンでは、特に閉じていない地面などを演算対象から除外できるため、front-face cullingの採用が効果的である。故に、front-face cullingが採用されるようなシーンでは、カリングされた前面については所謂「日向」であり、影が生じないものとして照明状態が確定する可能性がある。
従って、本実施形態の描画アプリケーションでは、front-face cullingを採用して影が生じるか否かの判断を行う態様において、そもそも影が生じないことが確定するシェーディングをさらにカリングした後に、判定部106における判定を行う態様について説明する。
《影情報の生成》
本実施形態では、実施形態1において説明した影判定用深度バッファに加えて、本発明の第2の深度バッファとしての日向判定用深度バッファを生成し、シェーディング点のカリングを行う。このため、以下では、影情報の生成にあたり、実施形態2に特有の処理について説明する。
〈第2の前処理(Depth Prepass)〉
第1の前処理では影判定用深度バッファを生成したが、第2の前処理では、光源からの投影の2次元テクスチャである日向判定用深度バッファを生成する。本実施形態では、簡単のため、日向判定用深度バッファの生成は前処理部104が行うものとして説明するが、本発明の実施はこれに限られるものではなく、影判定用深度バッファとは異なる構成により行われるものであってもよい。
図7(b)に示したように、front-face cullingを採用すれば、地面オブジェクト701のように閉じていない描画オブジェクトは、基本的には他の描画オブジェクト上に定義されるシェーディング点に対して影を生じさせるポリゴンから除外される。一方で、地面オブジェクト701よりも光源寄りに配置される上方オブジェクト702については背面のポリゴンはカリングされずに残る。即ち、該背面のポリゴンは、地面オブジェクト701上に定義されるシェーディング点に対して影を生じさせ得る。
これらを考慮すると、シーンに配置される描画オブジェクトのポリゴンのうち、front-face culling後に残るポリゴンであって、光線方向において光源に最も近接しているポリゴンを基準とすることで、必ず日向となる(影が生じない)シェーディング点を特定することができる。即ち、図7(b)の例でば、上方オブジェクト702のカリングされた前面ポリゴン上に定義されるシェーディング点703は、日向であることが確定する。つまり、シーンに配置される描画オブジェクトをfront-face cullingした後に存在する背面ポリゴンが、光源とテクセルとで定まる空間の少なくとも一部を遮断しているのであれば、該背面ポリゴンよりも手前に定義されるシェーディング点については、Frustum Tracingの判定を行わずとも、影が生じないと照明状態を判定することができる。
従って、本実施形態の描画アプリケーションでは前処理部104は、シーンに配置される描画オブジェクトのfront-face culling後のポリゴンに基づいて、日向判定用深度バッファをさらに生成する。より詳しくは、前処理部104が行う第2の前処理では、シーンに配置される描画オブジェクトの背面ポリゴンが、光源からの投影における日向判定用深度バッファのテクセルと光源とで定まる空間の少なくとも一部を遮断する場合、次のように該テクセルの深度値が確定され、日向判定用深度バッファの生成が行われる。
例えば図8(a)に示されるように、光源とテクセル800a〜cで定まる空間範囲801a〜cが存在し、この空間範囲に対して光源から照射される光線の少なくとも一部を、オブジェクト802a〜cの背面のポリゴン群が遮るよう配置される場合について考える。なお、シーンに提供される光源は、実施形態1と同様に平行光源であるものとし、空間範囲801の各々は同様に光線方向に延びる四角柱であり、図8(b)に示されるように、光源から各テクセルの四隅に向かうレイ803a〜dをキャストすることで規定されるものとする。
日向判定用深度バッファのテクセルの深度値は、影判定用深度バッファとは異なり、ポリゴンが空間範囲801を完全に遮断していることを要件としない。これは、日向判定用深度バッファが、確実に日向であるシェーディング点を特定可能であればよいことに依る。換言すれば、ある描画オブジェクトの背面が空間範囲801の少なくとも一部を遮断し、かつ光源に最も近接しているのであれば、該オブジェクトの前面に定義されたシェーディング点については、日向である(影が生じない)と照明状態を確定できるからである。
従って、前処理部104は日向判定用深度バッファの生成において、各テクセルに係る空間に配置されている背面を形成するポリゴンに対してレイをキャストし、その交点の深度値を格納する。より詳しくは、背面に定義されるシェーディング点の照明状態は確定するものではないため、前処理部104は、4つの交点のうちの光源に最も近接している交点の深度値を、テクセルの深度値として日向判定用深度バッファに格納する。
ここで、日向判定用深度バッファに深度値を格納するテクセルは、該テクセルに係る空間の少なくとも一部を背面のポリゴンが遮断していることを条件としているため、光源に対するポリゴンの正射影がテクセルよりも小さい面積を有する場合、4つの交点が得られない。このため、前処理部104は、日向判定用深度バッファについての深度値を導出する際には、ポリゴンを含む平面(ポリゴンを延長して形成される平面)に対してレイをキャストして4つの交点を特定すればよい。このとき、深度値は、テクセルの空間内に含まれる背面のポリゴンが有する最大の深度値(光源が1、最奥が0にて深度が定義される態様)に設定されるものとする。
例えば、図8(a)の例において光源とテクセル800bとで定まる空間範囲801bには、オブジェクト802bの背面の一部のポリゴンが含まれる。このとき、背面のポリゴンの各々について、該ポリゴンを延ばした平面と光源からキャストされたレイ803との交点を導出することで、結果的に交点804が光源に最も近接している交点となる。故に、前処理部104は、交点804の深度値をテクセル800bの深度値として日向判定用深度バッファに格納する。
また例えば、光源とテクセル800cとで定まる空間範囲801cには、オブジェクト802bの背面の一部のポリゴン、及びオブジェクト802cの背面の一部のポリゴンが含まれる。このとき、もっと光源に最も近接しているポリゴンはオブジェクト802cの背面に含まれる。オブジェクト802cの背面のポリゴンを延ばした平面に対して光源からキャストされたレイ803との交点を導出すると、背面のポリゴンが有する最大の深度値を超える位置となる。この場合、前処理部104は、点805の深度値をテクセル800cの深度値として日向判定用深度バッファに格納してもよい。
このようにすることで、シェーディング点が日向であるものとしてより判断可能な深度値を日向判定用深度バッファに格納することができる。日向判定用深度バッファは影判定用深度バッファと同様に、front-face culling後の残りの背面のポリゴンが対応する空間内に存在するテクセルについてのみ、その光源に最も近接しているとする点の深度値を格納するものであってよく、背面のポリゴンが存在しないテクセルについては、初期値(例えば最奥)が格納されるものであってよい。
なお、front-face culling後に背面のポリゴンが存在しない領域についても、初期値として最奥の深度値が格納されているのであれば、必ず日向となるシェーディング点を特定することができ、Frustum Tracingに要する処理を低減することが可能である。
〈シェーディング点のカリング〉
本実施形態の描画アプリケーションにおいてカリング部105が行うシェーディング点のカリングは、実施形態1において影判定用深度バッファに基づいて行うカリングに加え、日向判定用深度バッファに基づいて行うカリングを含む。即ち、カリング部105は、影判定用深度バッファに基づいて、影が生じることが確定するシェーディング点をカリングするとともに、日向判定用深度バッファに基づいて、日向である(影が生じない)ことが確定するシェーディング点をカリングする。
日向判定用深度バッファのテクセルに格納されている深度値よりも、光源に近接する深度値を示すシェーディング点については、Frustum Tracingを行うまでもなく、照明状態が日向であることが確定する。従って、カリング部105は、日向判定用深度バッファにおいて初期値以外の深度値が格納されているテクセルが存在している場合、光源座標系への変換により、該テクセルに係る空間に存在することが判明したシェーディング点を、その深度値に応じてFrustum Tracingの対象とするか否かを決定する。より詳しくは、該当のシェーディング点の深度値と、日向判定用深度バッファのテクセルの深度値とを比較し、前者が後者よりも光源に近接している値を示す場合に、カリング部105は該シェーディング点をFrustum Tracingの対象から除外する。
従って、描画部108は、このような影判定用深度バッファ及び日向判定用深度バッファを用いたカリング処理がなされた後、カリング後のシェーディング点に基づいて、テクセルに対応付けられるシェーディング点のリンクリストを生成する。故に、本実施形態の描画アプリケーションで生成されるリンクリストは、実施形態1で生成される同リンクリストよりも、さらに影が生じないことが確定するシェーディング点のカリングを行っている点で内容が異なっている。
また生成部107は、日向判定用深度バッファに基づくカリングを行ったシェーディング点については、影が生じないことが確定したため、影情報の対応するテクセルに影が生じないことを示す値を格納する。実施形態1では、影情報の各テクセルは、影が生じないことを初期値とし、影が生じるか否かを示す論理型の情報を格納しているものとして説明したが、本実施形態では、格納する値は初期値と同じなので格納処理を省略することも可能である。あるいは、影情報は照明状態が確定した(影が生じることが確定した、影が生じないことが確定した)ことを示す論理型の情報をさらに関連付けて有する構成としてもよい。
《画面生成処理》
以下、本実施形態のPC100にて、描画アプリケーションに係り実行される画面生成処理について、図9のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、制御部101が、例えば記録媒体102に記憶されている描画アプリケーションのプログラムを読み出し、メモリ103に展開して実行することにより実現することができる。なお、本画面生成処理は、例えば描画アプリケーションが実行された際に開始されるものとして説明する。また本実施形態の画面生成処理において、実施形態1と同様の処理を行うステップには同一の参照番号を付して説明を省略し、以下では本実施形態の画面生成処理に特徴的な処理を行うステップの説明に留める。
S601において視点の情報が決定されると、制御部101はS901で、シーンの影描画についてfront-face cullingを用いるか否かを判断する。当該判断は、シーンについて予めデザイナ等により設定された情報を参照することにより行われるものであってもよいし、シーンの照明条件やシーンに配置される描画オブジェクトの属性(例えばオブジェクトの3次元モデルが閉じているか否か等)に基づいて行われるものであってもよい。制御部101は、シーンの影描画についてfront-face cullingを用いると判断した場合は処理をS902に移し、用いないと判断した場合は処理をS602に移す。
S902で、前処理部104は、シーンに配置される描画オブジェクトのポリゴンの情報に基づいて、影判定用深度バッファを生成する第1の前処理と、日向判定用深度バッファを生成する第2の前処理とを実行する。即ち、第1の前処理では、各ポリゴンについて、光源からテクセルの四隅に向かうレイをキャストし、全てのレイがポリゴンに交差するのであれば、このうちの最奥の交点の深度値を影判定用深度バッファに格納する。また第2の前処理では、front-face culling後の背面ポリゴンを含む平面について、光源からのテクセルの四隅に向かうレイをキャストし、全てのレイと該平面の交点のうちの光源に最も近接している交点の深度値を日向判定用深度バッファに格納する。
S603においてシェーディング点群の決定と光源座標系への変換がなされると、カリング部105はS903で、該変換されたシェーディング点群の位置情報と、影判定用深度バッファ及び日向判定用深度バッファとに基づいて、照明状態が確定しているシェーディング点を除外するカリング処理を行う。即ち、カリング部105は、第1の前処理において影判定用深度バッファに深度値が格納されたテクセルの範囲に変換後の位置情報が含まれるシェーディング点について、深度値の比較を行う。そしてカリング部105は、影判定用深度バッファに格納された深度値よりも奥の深度値を有する(光源から遠離する)シェーディング点をカリングし、Frustum Tracingの判定対象から除外する。
またカリング部105は、第2の前処理において日向判定用深度バッファに深度値が格納されたテクセルの範囲に変換後の位置情報が含まれるシェーディング点についても、深度値の比較を行う。そしてカリング部105は、日向判定用深度バッファに格納された深度値よりも手前の深度値を有する(光源に近接する)シェーディング点をカリングし、Frustum Tracingの判定対象から除外する。
このようにすることで、照明状態が確定するシェーディング点をさらに判別可能とし、シーンの影描画に採用されるカリング方式によっては、さらに好適に演算量を低減し、精細なハードシャドウを適用した画面を生成することができる。
[変形例]
上述した実施形態2では、影判定用深度バッファと日向判定用深度バッファの両方を用いて、Frustum Tracingの対象となるシェーディング点を削減する態様について説明した。しかしながら、シェーディング点を削減するとの観点では、いずれかの深度バッファを用いたカリング処理でもその効果は実現される。即ち、実施形態1のように影判定用深度バッファのみを用いてカリングを行っても、Frustum Tracingの対象となるシェーディング点は削減可能であるし、日向判定用深度バッファのみを用いてカリングを行っても同様である。
換言すれば、本発明は、シェーディング点の照明状態を、光源からの投影で生成した深度バッファに基づいて照明状態を特定し、シーンに配置される描画オブジェクトに起因する照明状態の判定対象から除外するものであればよく、深度バッファの生成基準や特定に使用する深度バッファの数等は上述した態様に限られるものではない。
[その他の実施形態]
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。また本発明に係る描画方法は、1以上のコンピュータに描画方法の各工程を実行させるプログラムによっても実現可能である。該プログラムは、コンピュータが読み取り可能な記録媒体に記録されることにより、あるいは電気通信回線を通じて、提供/配布することができる。
100:PC、101:制御部、102:記録媒体、103:メモリ、104:前処理部、105:カリング部、106:判定部、107:生成部、108:描画部、109:表示制御処理部、110:操作入力部

Claims (14)

  1. コンピュータに、シーンに配置される描画オブジェクトについての、影が生じるか否かを示す影情報を生成させるプログラムであって、
    前記シーンを描画する視点の情報に基づき、該視点からの投影において描画されるスクリーンの各ピクセルについて、影が生じるか否かを判定するシェーディング点を設定する処理と、
    前記シーンについて定義される光源を示す光源情報と前記シーンに配置される描画オブジェクトの情報とに基づいて、前記光源からの投影の2次元テクスチャである、前記シーンに配置される描画オブジェクトの深度を示す深度バッファを生成する処理と、
    前記設定されたシェーディング点群と前記生成された深度バッファとに基づいて、照明状態が確定するシェーディング点を特定する処理と、
    前記シェーディング点群から、前記照明状態が確定したシェーディング点を除外する処理と、
    前記除外後のシェーディング点群の各々について、前記光源からの投影において前記シーンに配置される描画オブジェクトに起因する照明状態を判定する処理であって、前記光源と前記深度バッファの各テクセルとで定まる空間を部分的に遮断する描画オブジェクトに起因する、前記除外後のシェーディング点群の各々の照明状態を判定する処理と、
    前記照明状態が確定したシェーディング点と、前記照明状態が判定されたシェーディング点とに基づいて、前記視点からの投影における前記影情報を生成する処理と、
    を有するプログラム。
  2. 前記深度バッファは、互いに深度値の導出基準が異なる第1の深度バッファ及び第2の深度バッファの少なくともいずれかを含む請求項1に記載のプログラム。
  3. 前記深度バッファが前記第1の深度バッファである場合に、前記特定する処理において、影が生じることが確定するシェーディング点が特定され、
    前記除外する処理において、前記影が生じることが確定したシェーディング点が除外される
    請求項2に記載のプログラム。
  4. 前記第1の深度バッファの1テクセルの深度値は、前記光源と該1テクセルとで定まる空間を完全に遮断する描画オブジェクトのうちの、光源に最も近接している描画オブジェクトに基づいて決定される請求項2または3に記載のプログラム。
  5. 前記第1の深度バッファの1テクセルの深度値は、前記完全に遮断する描画オブジェクトが存在する場合に、前記光源から該1テクセルの四隅に向かう光線と該完全に遮断する描画オブジェクトの面との交点のうち、最奥の交点の深度値に決定される請求項4に記載のプログラム。
  6. 前記特定する処理において、前記第1の深度バッファのテクセルに対応するシェーディング点のうち、前記光源からの深度が該テクセルの深度値よりも奥の値を示すシェーディング点について、照明状態が確定する請求項5に記載のプログラム。
  7. 前記第1の深度バッファの1テクセルの深度値は、前記完全に遮断する描画オブジェクトが存在しない場合に、初期値に決定され、
    前記特定する処理において、前記初期値を有する前記第1の深度バッファのテクセルに対応するシェーディング点については、照明状態は確定しない
    請求項4乃至6のいずれか1項に記載のプログラム。
  8. 前記深度バッファが前記第2の深度バッファである場合に、前記特定する処理において、影が生じないことが確定するシェーディング点が特定され、
    前記除外する処理において、前記影が生じないことが確定したシェーディング点が除外される
    請求項2乃至7のいずれか1項に記載のプログラム。
  9. 前記第2の深度バッファの1テクセルの深度値は、前記光源と該1テクセルとで定まる空間の少なくとも一部を遮断する描画オブジェクトであって、影生成において前面カリングが行われる描画オブジェクトのうちの、光源に最も近接している描画オブジェクトに基づいて決定される請求項2乃至8のいずれか1項に記載のプログラム。
  10. 前記第2の深度バッファの1テクセルの深度値は、前記少なくとも一部を遮断する描画オブジェクトが存在する場合に、前記光源から該1テクセルの四隅に向かう光線と該少なくとも一部を遮断する描画オブジェクトのメントの背面との交点のうち、光源に最も近接している交点の深度値に決定される請求項9に記載のプログラム。
  11. 前記特定する処理において、前記第2の深度バッファのテクセルに対応するシェーディング点のうち、前記光源からの深度が該テクセルの深度値より手前の値を示すシェーディング点について、照明状態が確定する請求項10に記載のプログラム。
  12. 前記第2の深度バッファの1テクセルの深度値は、前記少なくとも一部を遮断する描画オブジェクトが存在しない場合に、初期値に決定され、
    前記特定する処理において、前記初期値を有する前記第2の深度バッファのテクセルに対応するシェーディング点については、照明状態は確定しない
    請求項乃至11のいずれか1項に記載のプログラム。
  13. 請求項1乃至12のいずれか1項に記載のプログラムを記録した、コンピュータ読み取り可能な記録媒体。
  14. シーンに配置される描画オブジェクトについて、影が生じるか否かを示す影情報を生成して描画を行う描画方法であって、
    前記シーンを描画する視点の情報に基づき、該視点からの投影において描画されるスクリーンの各ピクセルについて、影が生じるか否かを判定するシェーディング点を設定する設定工程と、
    前記シーンについて定義される光源を示す光源情報と前記シーンに配置される描画オブジェクトの情報とに基づいて、前記光源からの投影の2次元テクスチャである、前記シーンに配置される描画オブジェクトの深度を示す深度バッファを生成する第1の生成工程と、
    前記設定工程において設定されたシェーディング点群と前記第1の生成工程において生成された前記深度バッファとに基づいて、照明状態が確定するシェーディング点を特定する特定工程と、
    前記シェーディング点群から、前記特定工程において照明状態が確定したシェーディング点を除外する除外工程と、
    前記除外工程における除外後のシェーディング点群の各々について、前記光源からの投影において前記シーンに配置される描画オブジェクトに起因する照明状態を判定する判定工程であって、前記光源と前記深度バッファの各テクセルとで定まる空間を部分的に遮断する描画オブジェクトに起因する、前記除外後のシェーディング点群の各々の照明状態を判定する判定工程と、
    前記照明状態が確定したシェーディング点と、前記判定工程において照明状態が判定されたシェーディング点とに基づいて、前記視点からの投影における前記影情報を生成する第2の生成工程と、
    前記第2の生成工程において生成された前記影情報に基づいて、前記視点からの投影において前記シーンに配置される描画オブジェクトに影を付して描画する描画工程と、
    を有する描画方法。
JP2018000761A 2018-01-05 2018-01-05 プログラム、記録媒体、及び影描画方法 Active JP6487578B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018000761A JP6487578B1 (ja) 2018-01-05 2018-01-05 プログラム、記録媒体、及び影描画方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018000761A JP6487578B1 (ja) 2018-01-05 2018-01-05 プログラム、記録媒体、及び影描画方法

Publications (2)

Publication Number Publication Date
JP6487578B1 true JP6487578B1 (ja) 2019-03-20
JP2019121193A JP2019121193A (ja) 2019-07-22

Family

ID=65802269

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018000761A Active JP6487578B1 (ja) 2018-01-05 2018-01-05 プログラム、記録媒体、及び影描画方法

Country Status (1)

Country Link
JP (1) JP6487578B1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6290772A (ja) * 1985-10-17 1987-04-25 Fujitsu Ltd 三次元物体表示処理方式
JP2009163610A (ja) * 2008-01-09 2009-07-23 Canon Inc 画像処理装置及び画像処理方法
JP2010071976A (ja) * 2008-08-19 2010-04-02 Panasonic Corp 距離推定装置、距離推定方法、プログラム、集積回路およびカメラ
JP2012522283A (ja) * 2009-03-27 2012-09-20 トムソン ライセンシング 画像における陰影生成方法
JP2016510473A (ja) * 2013-02-12 2016-04-07 トムソン ライセンシングThomson Licensing デプスマップのコンテンツを強化するための方法およびデバイス

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6290772A (ja) * 1985-10-17 1987-04-25 Fujitsu Ltd 三次元物体表示処理方式
JP2009163610A (ja) * 2008-01-09 2009-07-23 Canon Inc 画像処理装置及び画像処理方法
JP2010071976A (ja) * 2008-08-19 2010-04-02 Panasonic Corp 距離推定装置、距離推定方法、プログラム、集積回路およびカメラ
JP2012522283A (ja) * 2009-03-27 2012-09-20 トムソン ライセンシング 画像における陰影生成方法
JP2016510473A (ja) * 2013-02-12 2016-04-07 トムソン ライセンシングThomson Licensing デプスマップのコンテンツを強化するための方法およびデバイス

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
岩尾友秀, 外2名: ""視点とオブジェクトの位置関係を考慮したシャドウマップの動的生成法"", 映像情報メディア学会技術報告, vol. 第29巻, 第9号, JPN6018050117, 4 February 2005 (2005-02-04), JP, pages 83 - 88 *

Also Published As

Publication number Publication date
JP2019121193A (ja) 2019-07-22

Similar Documents

Publication Publication Date Title
CN111105491B (zh) 场景渲染方法、装置、计算机可读存储介质和计算机设备
CN112513712B (zh) 具有虚拟内容翘曲的混合现实系统和使用该系统生成虚拟内容的方法
US9406100B2 (en) Image processing techniques for tile-based rasterization
EP3080781B1 (en) Image rendering of laser scan data
US10970920B2 (en) Systems and methods for ray-traced shadows of transparent objects
US7948487B2 (en) Occlusion culling method and rendering processing apparatus
US9508191B2 (en) Optimal point density using camera proximity for point-based global illumination
US7812837B2 (en) Reduced Z-buffer generating method, hidden surface removal method and occlusion culling method
US11468630B2 (en) Rendering scenes using a combination of raytracing and rasterization
KR20170040698A (ko) 그래픽스 파이프라인을 수행하는 방법 및 장치
US20230230311A1 (en) Rendering Method and Apparatus, and Device
JP7460641B2 (ja) 光強度画像を生成するための装置及び方法
JP5937957B2 (ja) リアルタイム大局照明レンダリングシステム
KR101118597B1 (ko) 모바일용 컴퓨터 그래픽 랜더링 방법 및 시스템
JP6487578B1 (ja) プログラム、記録媒体、及び影描画方法
KR20190067070A (ko) 가상 공간에서의 프로젝션 맵핑 시스템 및 방법
JPH10162161A (ja) ユーザ定義によるルームおよびウインドウを用いた効率的レンダリング
JP6235926B2 (ja) 情報処理装置、生成方法、プログラム及び記録媒体
CN116993894B (zh) 虚拟画面的生成方法、装置、设备、存储介质及程序产品
JP2019046080A (ja) 情報処理装置、方法及びプログラム
JP2007299080A (ja) 画像生成方法及び画像生成装置
WO2022131949A1 (en) A device for performing a recursive rasterization
KR20160142166A (ko) 그래픽 프로세서
JPH0729034A (ja) 影付け処理装置および画像生成装置
JP5321385B2 (ja) 画像処理プログラムおよびコンピュータ読み取り可能な記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190221

R150 Certificate of patent or registration of utility model

Ref document number: 6487578

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250