(57)【要約】  エリア光源（Ａ）によって照らされる表面の鏡面反射部分のレンダリングのため、シェーディングポイント（ｘ）においてレンダリング予定の画像と関連付けられた視線反射ベクトル（Ｒ）が確立される。光源をシェーディングポイントを中心とする単位球に投影するものである投影エリアの各球面エッジＵｉＵｉ＋１に対し、局所的な放射輝度は、エッジＵｉＵｉ＋１およびシェーディングポイントによって定義される平面への視線反射ベクトルの正規化投影ベクトルＳを確立すること、ベクトルＳと関連付けられた点ＳがＵｉＵｉ＋１の内側にあるかどうかを判断すること、ならびに、内側にある場合は、Ｕｉ、ＳおよびＵｉ＋１の中間変換ならびにＵｉ、ＳおよびＳ、Ｕｉ＋１のエッジ積分を実行することによって確立される。すべてのエッジにわたって反復が実行され、局所的な放射輝度の総和が求められ、それに従って表面がレンダリングされる。
2018527666.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのエリア光源（Ａ）によって照らされる表面の鏡面反射部分をレンダリングする方法であって、
前記表面のシェーディングポイント（ｘ）においてレンダリング予定の画像と関連付けられた、前記表面に対する視線方向
【数１】
2018527666.tif 000093
の反射である視線反射ベクトル
【数２】
2018527666.tif 000094
を確立することと、
前記シェーディングポイントに向けた前記少なくとも１つのエリア光源（Ａ）を前記シェーディングポイントを中心とする単位球に投影するものである投影エリアの各球面エッジＵｉＵｉ＋１に対し、（ａ）前記球面エッジＵｉＵｉ＋１および前記シェーディングポイントによって定義される平面への前記視線反射ベクトル
【数３】
2018527666.tif 000095
の正規化投影ベクトル
【数４】
2018527666.tif 000096
を確立すること（７０２）、（ｂ）前記ベクトル
【数５】
2018527666.tif 000097
と関連付けられた単一の点ＳがエッジＵｉＵｉ＋１の内側にあるかどうかを判断すること（７０６、７０８）、ならびに、内側にある場合は、放射輝度を確立するために、（ｃ）Ｕｉ、ＳおよびＵｉ＋１の中間変換を実行すること（７２０、７２２）、および、（ｄ）Ｕｉ、ＳおよびＳ、Ｕｉ＋１のエッジ積分を実行すること（７１４、７２４、７２６、７２８）によって、局所的な放射輝度を確立することと、
すべてのエッジにわたって反復すること（７０４、７１６）と、
すべてのエッジの前記局所的な放射輝度の総和を求めること（７１４）と、
前記確立された放射輝度に従って前記表面をレンダリングすること（７１８）と
を含む、方法。
【請求項２】
リアルタイムのレンダリング方法である、請求項１に記載の方法。
【請求項３】
鏡面のレンダリングのものである、請求項１または２に記載の方法。
【請求項４】
ＳがＵｉＵｉ＋１の内側にない場合（７０８）は、Ｕｉ、ＳおよびＳ、Ｕｉ＋１の中間変換を実行し、Ｕｉ、ＳおよびＳ、Ｕｉ＋１のエッジ積分を実行する代わりに、ＵｉおよびＵｉ＋１の中間変換を実行し（７１０）、Ｕｉ、Ｕｉ＋１の前記エッジ積分を評価する（７１２）、請求項１または３に記載の方法。
【請求項５】
前記中間変換が、視線方向と位置合わせされた停留変曲をもたらす、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
少なくとも１つのエリア光源（Ａ）によって照らされる表面の鏡面反射部分をレンダリングする装置（６００）であって、
データおよびプログラム命令を格納するメモリ（６１０、６１８、６２０）と、
（１）前記表面のシェーディングポイント（ｘ）においてレンダリング予定の画像と関連付けられた、前記表面に対する視線方向
【数６】
2018527666.tif 000098
の反射である視線反射ベクトル
【数７】
2018527666.tif 000099
を確立することと、（２）前記シェーディングポイントに向けた前記少なくとも１つのエリア光源（Ａ）を前記シェーディングポイントを中心とする単位球に投影するものである投影エリアの各球面エッジＵｉＵｉ＋１に対し、（ａ）前記球面エッジＵｉＵｉ＋１および前記シェーディングポイントによって定義される平面への前記視線反射ベクトル
【数８】
2018527666.tif 000100
の正規化投影ベクトル
【数９】
2018527666.tif 000101
を確立すること（７０２）、（ｂ）前記ベクトル
【数１０】
2018527666.tif 000102
と関連付けられた単一の点ＳがエッジＵｉＵｉ＋１の内側にあるかどうかを判断すること（７０６、７０８）、ならびに、内側にある場合は、放射輝度を確立するために、（ｃ）Ｕｉ、ＳおよびＵｉ＋１の中間変換を実行すること（７２０、７２２）、および、（ｄ）Ｕｉ、ＳおよびＳ、Ｕｉ＋１のエッジ積分を実行すること（７１４、７２４、７２６、７２８）によって、局所的な放射輝度を確立することと、（３）すべてのエッジにわたって反復すること（７０４、７１６）と、（４）すべてのエッジの前記局所的な放射輝度の総和を求めること（７１４）と、（５）前記確立された放射輝度に従って前記表面をレンダリングすること（７１８）とを行うように構成されたグラフィカル回路（６０６）と、
前記グラフィカル回路を制御するマイクロプロセッサ（６０４）と、
前記メモリ、グラフィカル回路および前記マイクロプロセッサを相互接続するバス（６０２）と
を含む、装置（６００）。
【請求項７】
リアルタイムのレンダリングの装置である、請求項６に記載の装置（６００）。
【請求項８】
鏡面のレンダリングのものである、請求項６または７に記載の装置（６００）。
【請求項９】
ＳがＵｉＵｉ＋１の内側にない場合（７０８）は、前記グラフィカル回路が、Ｕｉ、ＳおよびＵｉ＋１の中間変換を実行し、Ｕｉ、ＳおよびＳ、Ｕｉ＋１のエッジ積分を実行する代わりに、ＵｉおよびＵｉ＋１の中間変換を実行し（７１０）、Ｕｉ、Ｕｉ＋１の前記エッジ積分を評価する（７１２）、請求項６〜８のいずれか一項に記載の装置。
【請求項１０】
前記中間変換が、視線方向と位置合わせされた停留変曲をもたらす、請求項６〜９のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、鏡面の画像のレンダリングに対する技法に関する。
【背景技術】
【０００２】
エリア光を用いた鏡面の物理ベースの照明は、コンピュータグラフィックスにおいて非常に難易度の高いタスクを構成する。エリア光は、より自然な照明を提供し、コントラストを低減するかまたは１つもしくは複数の芸術的基準と整合させるために、シーン内のバランスを取る光を（視覚効果を表す）ＶＦＸ／ゲームアーティストが微調整できるようにする。エリア光および鏡面に関与する多くのリアルタイムのレンダリングの解決法は、リアルタイムの性能を達成するために放射輝度を粗近似する。そのような解決法は、視界に関する強い想定の下、簡単なエリア光ジオメトリ（球体、ディスクまたは長方形）に限定され、何より、通常は、鏡面に対するフォンモデルに限定される。
【０００３】
鏡面の正確なリアルタイムレンダリングは、演算集約的なモンテカルロ法を使用する以外に面積分を評価するための実用的な解決法が存在しないことに存する困難を招く。最も代表的なポイントアプローチのような最近の技法は、この問題を緩和するが、リアルタイムの性能を達成するために正確度を犠牲にし、これらの技法は、いまだに、鏡面に対するフォンモデルにのみ有効である。James Arvoは、Computer Graphics Proceedings, Annual Conference Series, ACM SIGGRAPH, 1995で公開された論文“Applications of Irradiance Tensors to the Simulation of Non-Lambertian Phenomena”において、多角形光源を考慮する周回積分を使用する解析的解決法を開発した。残念ながら、この解決法は、多大な時間を要するループの評価を必要とするため、いまだに、グラフィックス処理ユニット（ＧＰＵ）上での使用に対して実用的ではない。その上、この解決法は、鏡面に対するフォンモデルに限定される。
【０００４】
従って、先行技術の前述の不利な点、具体的には、鏡面に対するフォンモデルの制約を克服する、鏡面を正確にレンダリングする技法が必要とされている。
【発明の概要】
【０００５】
以下では、外向き放射の艶がある部分をレンダリングしなければならない表面のシェーディングポイントについて考慮する。「艶がある」という用語は、一般に、光沢度（shininess）を指し、本開示では、鏡面反射に関連する。典型的には、滑らかな表面は、かなりの量の光が特権的な方向（privileged direction）の周りに集中するため、光沢があるまたは艶があるように目に見える。
【０００６】
当業者によく知られているように、そのシェーディングポイントを中心とし、そのシェーディングポイントにおける表面の法線に沿って方向付けられる単位半球を形成する上半球領域が事実上形成される。その半球上のいかなる点も、シェーディングポイントを始点とし、半球上の点を終点とするベクトルと関連付けることができる。それに従って、「関連付ける」という用語を以下で使用する。また、単位半球の代わりに、場合により、その代替として、同じ結果になる場合は、シェーディングポイントを中心とする単位球について言及する。
【０００７】
少なくとも１つのエリア光源によって照らされる表面の鏡面反射部分をレンダリングする方法は、その表面のシェーディングポイントにおいてレンダリング予定の画像と関連付けられた、その表面に対する視線方向の反射である視線反射ベクトルを確立することによって開始される。シェーディングポイントに向けたエリア光源をシェーディングポイントを中心とする単位球に投影するものである投影エリアの各球面エッジＵｉＵｉ＋１に対し、（ａ）球面エッジＵｉＵｉ＋１およびシェーディングポイントによって定義される平面への視線反射ベクトルの正規化投影ベクトル
【数１】
2018527666.tif 000003
を確立すること、（ｂ）ベクトル
【数２】
2018527666.tif 000004
と関連付けられた単一の点ＳがＵｉＵｉ＋１の内側にあるかどうかを判断すること、ならびに、内側にある場合は、放射輝度を確立するために、（ｃ）Ｕｉ、ＳおよびＵｉ＋１の中間変換（halfway transform）を実行すること、ならびに、（ｄ）Ｕｉ、ＳおよびＳ、Ｕｉ＋１のエッジ積分を実行することによって、局所的な放射輝度は確立される。すべてのエッジにわたって反復が実行され、すべてのエッジの局所的な放射輝度の総和が求められる。確立された放射輝度に従って、表面がレンダリングされる。
【０００８】
方法はリアルタイムのレンダリング方法であることおよび／または方法は鏡面のレンダリングのものであることが好ましい。
【０００９】
本原理の別の態様によれば、ＳがＵｉＵｉ＋１の内側にない場合は、Ｕｉ、ＳおよびＳ、Ｕｉ＋１の中間変換を実行し、Ｕｉ、ＳおよびＳ、Ｕｉ＋１のエッジ積分を実行する代わりに、ＵｉおよびＵｉ＋１の中間変換を実行し、Ｕｉ、Ｕｉ＋１のエッジ積分を評価する。
【００１０】
本原理のさらなる別の態様によれば、中間変換は、視線方向と位置合わせされた停留変曲（stationary inflection）をもたらす。
【００１１】
本原理のさらなる別の態様によれば、少なくとも１つのエリア光源によって照らされる表面の鏡面反射部分をレンダリングする装置は、データおよびプログラム命令を格納するメモリを含む。グラフィカル回路は、（１）その表面のシェーディングポイントにおいてレンダリング予定の画像と関連付けられた、その表面に対する視線方向の反射である視線反射ベクトルを確立し、（２）シェーディングポイントに向けたエリア光源をシェーディングポイントを中心とする単位球に投影するものである投影エリアの各球面エッジＵｉＵｉ＋１に対し、ａ）球面エッジＵｉＵｉ＋１およびシェーディングポイントによって定義される平面への視線反射ベクトルの正規化投影ベクトル
【数３】
2018527666.tif 000005
を確立すること、（ｂ）ベクトル
【数４】
2018527666.tif 000006
と関連付けられた単一の点ＳがエッジＵｉＵｉ＋１の内側にあるかどうかを判断すること、ならびに、内側にある場合は、放射輝度を確立するために、（ｃ）Ｕｉ、ＳおよびＵｉ＋１の中間変換を実行すること、ならびに、（ｄ）Ｕｉ、ＳおよびＳ、Ｕｉ＋１のエッジ積分を実行することによって局所的な放射輝度を確立し、（３）すべてのエッジにわたって反復し、（４）すべてのエッジの局所的な放射輝度の総和を求め、（５）確立された放射輝度に従って表面をレンダリングするように構成されている。マイクロプロセサは、グラフィカル回路、ならびに、メモリ、グラフィカル回路およびマイクロプロセッサを相互接続するバスを制御する。
【００１２】
装置は、好ましくは、リアルタイムのレンダリングのおよび／または鏡面のレンダリングの装置である。
【００１３】
本原理のさらなる別の態様によれば、装置のグラフィカル回路は、ＳがＵｉＵｉ＋１の内側にない場合は、Ｕｉ、ＳおよびＵｉ＋１の中間変換を実行し、Ｕｉ、ＳおよびＳ、Ｕｉ＋１のエッジ積分を実行する代わりに、ＵｉおよびＵｉ＋１の中間変換を実行し、Ｕｉ、Ｕｉ＋１のエッジ積分を評価する。
【００１４】
有利には、中間変換は、視線方向と位置合わせされた停留変曲をもたらす。
【００１５】
本開示の目的は、エリア光によって照明が当てられた、物理的に妥当な鏡面をレンダリングする技法を提供することである。
【００１６】
本発明の別の目的は、マイクロファセットモデルを利用する、物理的に妥当な鏡面をレンダリングする技法を提供することである。
【００１７】
本発明の別の目的は、小さな演算オーバーヘッドを招く、物理的に妥当な鏡面をレンダリングする技法を提供することである。
【００１８】
本発明の別の目的は、グラフィックスハードウェアおよびゲームエンジンを含む並列アーキテクチャ上の実装が可能な、物理的に妥当な鏡面をレンダリングする技法を提供することである。
【００１９】
本発明の別の目的は、高速のリアルタイムのレンダリングによく適している、物理的に妥当な鏡面をレンダリングする技法を提供することである。
【図面の簡単な説明】
【００２０】
【図１】鏡面に対するフォンモデルを示す光線図を描写する。
【図２】鏡面に対するブリンフォンモデルを示す光線図を描写する。
【図３】半球に投影されたエリア光の平面図を描写する。
【図４】本原理による、反射ベクトル
【数５】
2018527666.tif 000007
と共に分割点Ｓを示す図３の平面図を描写する。
【図５】本原理による、分割点Ｓを確立する技法を示す半球の光線図を描写する。
【図６】本原理のレンダリングを実行する装置のブロック概略図を描写する。
【図７】本原理による、レンダリングの方法のステップを示すフローチャートを描写する。
【発明を実施するための形態】
【００２１】
以下で詳細に説明されるように、鏡面を有する画像のレンダリングの改善は、前述のArvoの論文で説明されるように、周回積分を使用することによって放射輝度を確立する本原理による技法によって起こり、欧州特許第３０５７０６７号で明白に教示されるように、高速近似を利用することができる。さらに、レンダリング方法は、物理的に妥当な鏡面を表すために、中間変換を利用する。本原理のレンダリング技法は、マイクロファセットモデル（ブリンフォン）によって説明される鏡面および多角形エリア光源を考慮する。
【００２２】
本原理のレンダリング方法を理解するため、鏡面に対するフォンモデルを示す光線図を描写する図１と、鏡面に対するブリンフォンモデルを示す光線図を描写する図２とを参照する。各図では、ベクトル
【数６】
2018527666.tif 000008
は、視線方向を定義し、
【数７】
2018527666.tif 000009
は、法線
【数８】
2018527666.tif 000010
を有する表面に対する反射視線ベクトルを表し、
【数９】
2018527666.tif 000011
は、入射光方向を定義する。図２では、ベクトル
【数１０】
2018527666.tif 000012
は、以下のように定義される中間ベクトル（halfway vector）に対応する。
【数１１】
2018527666.tif 000013
【００２３】
フォンモデルの制約を克服するための手法の１つは、中間変換をエリア光上の頂点にのみ適用し、次いで、Arvoの公式を垂直軸の周りに適用することであろう。残念ながら、ハーフベクトル変換はアフィン変換ではなく、それにより、歪みが導入され得る。歪みを追従するようにエッジポイントを規則的にサンプリングすることでこの問題は軽減されるが、この手法は、許容できる結果を得るために多数のサンプリングが必要であり、それにより、多大な時間を要する。
【００２４】
上記で説明される先行技術の欠陥を克服するため、本原理のレンダリング技法は、マイクロファセット鏡面反射放射輝度を近似するためにエッジ分割戦略を利用する。本原理に従って放射輝度を確立するエッジ分割手法を理解するため、半球に投影されたエリア光の平面図を描写する図３と、中間変換後の図３の平面図を描写する図４とを参照する。図３は、視線方向と完全に位置合わせされた変曲エリアを示す。ここでは、反射ベクトル
【数１２】
2018527666.tif 000014
によって駆動される場所Ｓの単一の点からのエッジ分割を考慮する。この分割を使用することにより、放射輝度を確立するための簡単な高速のエッジ分割戦略が可能になる。図３を注意深く観察すると、中間変換は、エリア光照射野の停留変曲を示すことがわかる。この変曲は、実質的に完全な視線方向との位置合わせを享受し、図４で描写されるように、良い分割位置を表している。
【数１３】
2018527666.tif 000015
および視線反射
【数１４】
2018527666.tif 000016
ベクトルによって形成される平面にある点は、中間変換後も
【数１５】
2018527666.tif 000017
と位置合わせされた状態であることに留意されたい。
【００２５】
図５は、法線
【数１６】
2018527666.tif 000018
を有する、照らされている表面のシェーディングポイントｘに対する分割点の位置を位置付ける本原理の技法を示す光線図を図示する。
【００２６】
技法は以下を伴う。
１．視線反射ベクトル
【数１７】
2018527666.tif 000019
を演算する。
２．ｘを中心とし、法線
【数１８】
2018527666.tif 000020
に従って方向付けられる半球に投影されるようなエリア光源Ａの光エッジにわたって反復する。
３．各球面エッジＵｉＵｉ＋１に対し、球面エッジＵｉＵｉ＋１およびポイントｘによって定義される平面への
【数１９】
2018527666.tif 000021
の正規化投影ベクトル
【数２０】
2018527666.tif 000022
を考慮する。
４．ベクトル
【数２１】
2018527666.tif 000023
と関連付けられた点ＳがＵｉＵｉ＋１の内側にある場合は、Ｓを分割点として考慮する。
ａ．Ｕｉ、ＳおよびＵｉ＋１の中間変換を実行する。
ｂ．欧州特許第３０５７０６７号の教示に従って、Ｕｉ、ＳおよびＳ、Ｕｉ＋１（変換された）のエッジ積分を評価し、次いで、マイクロファセット鏡面反射放射輝度に近似するために、局所的な放射輝度に結果を追加する。
５．内側になければ、分割しない。
ａ．ＵｉおよびＵｉ＋１の中間変換を実行する。
ｂ．欧州特許第３０５７０６７号の教示を使用してＵｉ、Ｕｉ＋１（変換された）のエッジ積分を評価し、マイクロファセット鏡面反射放射輝度に近似するために、局所的な放射輝度に結果を追加する。
６．反復終了時に局所的な放射輝度を返す。
マイクロファセット鏡面反射放射輝度を近似した後、レンダリングが行われる。
【００２７】
上記で説明される手順の明確な利点は、エッジ分割が系統的なものではなく、従って、演算オーバーヘッドが制限されることである。この点において、現代のＧＰＵ（グラフィックス処理ユニット）に存在する並列アーキテクチャは、有利には、同時画素のための鏡面エリア照明を評価する上で役立ち得る。全解決法は、フラグメントシェーダ（例えば、ＧＬＳＬ、ＨＬＳＬなど）またはＧＰＵ並列演算能力を有する任意の言語（例えば、Compute Shader、ＣＵＤＡ、ＯｐｅｎＣＬなど）で容易に実装することができる。
【００２８】
放射輝度を確立することは、以下で要約される欧州特許第３０５７０６７号の教示に従って、以下のように起こり得る。点Ｍ（上述ではｘと記述される）における照明が当てられた表面の反射特性（表面材料に依存する）は、
【数２２】
2018527666.tif 000024
と記述されるＢＲＤＦ関数（双方向反射率分布関数）によって表され、（ここで、
【数２３】
2018527666.tif 000025
は、点Ｍへの照明方向とは反対方向の単位ベクトルであり、
【数２４】
2018527666.tif 000026
は、観察者に向けた視線方向に対応する単位ベクトルであり、従って、上記の
【数２５】
2018527666.tif 000027
に対応する）。当業者によく知られているように、ＢＲＤＦ関数は、表面上の点における入射放射輝度をその点から反射した放射輝度と関連付ける。次いで、点Ｍにおいて観察者に向けて散乱する放射輝度（目で知覚される色）
【数２６】
2018527666.tif 000028
は、光源表面Ａによって維持される立体角Ω（Ａ）の半球積分によって定義される。
【数２７】
2018527666.tif 000029
式中、ｄωｉは、立体角の微分変動（differential variation）を表す。
【００２９】
欧州特許第３０５７０６７号では、フォン分布モデルがＢＲＤＦ関数を定義することができる。しかし、本原理によれば、ブリンフォンモデルがＢＲＤＦ関数を定義する上で役立ち得る。
【００３０】
以下の論考では、鏡面反射成分のみが考慮される。なぜなら、その成分は、表面によって反射された放射の艶がある（または鏡面反射）部分に最も関連しているからである。特定の状況では、考慮される表面は、それ自体に艶があり（またはほぼ鏡面反射性である）、その結果、放射は、演算のために、その艶がある部分で識別される。表現の艶がある成分は、考慮される表面が完全には滑らかではなく、その結果、光の反射はスネルの法則に従わないという事実を説明する。代わりに、関連する反射光は、鏡面反射光の好ましい方向辺りの分布を有する。その分布の集中度は、艶度（glossiness）を制御するフォンまたは鏡面反射指数とも呼ばれる光沢係数ｎによって表される。
【００３１】
入射光の鏡面反射項の反射率を提供する鏡面反射率ρＳを記述し、フォンモデルにおいて（またはブリンフォンモデルにおいて）通常行われるように、この項が点Ｍにおいて一定である（少なくとも所定の色チャネルに対して）と仮定することにより、２つの表現は、艶がある部分に明白に関連する。
【数２８】
2018527666.tif 000030
方程式（２）に対応するそれらの表現の第１の表現は、一軸モーメントフォン分布モデルに関連し、Robert R. Lewis in “Making Shaders More Physically Plausible”, in Fourth Eurographics Workshop on Rendering, pp. 47-62, 1994によって明白に説明されている。方程式（３）と関連付けられた第２の表現は、二軸モーメントに関連し、Eric P. Lafortune and Yves D. Willems in “Using the Modified Phong Reflectance Model for Physically Based rendering”, Technical Report RP-CW-197, 1994によって明白に説明されている。
【００３２】
より一般的には、変形形態の実装において、フォン分布モデル以外の鏡面反射成分の他のＢＲＤＦ表現を使用することができる。これは、特に、方向付けられた軸の周りの分布挙動を有し、光沢係数ｎによって調整される余弦関数によって制御される放射に当てはまり、余弦は、方向付けられた軸と視線方向との角度によって得られる。
【００３３】
多角形であり、ｍ個のエッジを有する光源表面Ａを考慮すると、方程式（１）の２Ｄ面積分は、エッジの周りの１Ｄ周回積分の総和として表すことができる。これは、ストークスの定理ならびに上記で引用される博士号論文および記事におけるArvoによる開発に基づく。
【００３４】
それに従って、ＵｉＵｉ＋１などの方向付けられたｍ個のエッジの各々に対し、点ＭからエッジＵｉＵｉ＋１の第１の頂点Ｕｉまでを指し示す単位ベクトル
【数２９】
2018527666.tif 000031
および
【数３０】
2018527666.tif 000032
に直交し、エッジＵｉＵｉ＋１の平面にある単位ベクトル
【数３１】
2018527666.tif 000033
を定義することができ、その結果、
【数３２】
2018527666.tif 000034
は、正規直交基底を構成する。これは、エッジＵｉＵｉ＋１に対するパラメータを定義するために使用することができる（
【数３３】
2018527666.tif 000035
は考慮されるエッジに依存することに留意する）。
【数３４】
2018527666.tif 000036
【００３５】
さらに、エッジ開口Φｉは、点Ｍの周りのおよび方向
【数３５】
2018527666.tif 000037
の半球に投影されるようなエッジＵｉＵｉ＋１に対応する開き角度として定義される。また、単位法線ベクトル
【数３６】
2018527666.tif 000038
は、光源表面Ａの境界の外側にある法線（すなわち、エッジの外側にある半球の接線）として定義される。
【００３６】
上記で引用されるArvoの開発に従って、点Ｍにおける光源の放射輝度
【数３７】
2018527666.tif 000039
は、方向
【数３８】
2018527666.tif 000040
とは無関係に表され（便宜上、ＬＡ（Ｍ）と記述する）、要するに、光源にわたって一定していると見なすことになり、放射輝度
【数３９】
2018527666.tif 000041
は、
【数４０】
2018527666.tif 000042
および
【数４１】
2018527666.tif 000043
によって、方程式（２）と関連付けられた第１のＢＲＤＦフォン表現に対して得られる。
【００３７】
調和加法定理に従って、三角関数の式は、以下のように簡素化することができ、
ａ  ｃｏｓφ＋ｂ  ｓｉｎφ＝ｃ  ｃｏｓ（φ−δ）            （７）
それにより、
【数４２】
2018527666.tif 000044
が得られる。
【００３８】
簡潔にするため、関数ｆ（φ，ｃ，ｎ）およびパラメータｑが導入され、その結果、
【数４３】
2018527666.tif 000045
となる。
【００３９】
公式（８）において総和演算子および積分を逆演算することができ、それにより、等比級数が得られることに留意されたい。関数Ｇは、
【数４４】
2018527666.tif 000046
に値する。
【００４０】
積分範囲においてδだけ移動することにより、関数Ｇは、以下のように記載することができ、
【数４５】
2018527666.tif 000047
その被積分関数は、
【数４６】
2018527666.tif 000048
である。
【００４１】
被積分関数Ｉは、既知の不定積分を有する専用のピーク形状関数のおかげで、以下で説明されるように近似される。それにより、最良の実装形態では、被積分関数Ｉは、高い正確度で評価することができ、少数のパラメータ化演算の対象となる。パラメータｓは、以下によって得られる。
【数４７】
2018527666.tif 000049
【００４２】
ｓを知っていることにより、
【数４８】
2018527666.tif 000050
と記述される正規化関数は、被積分関数Ｉから誘導することができる（０〜１の範囲）。これらは、偶数のｎについて被積分関数Ｉをあらかじめシフトダウンすることによって、そして、偶数及び奇数のｎについて、それをパラメータｓで除する（スケーリングする）ことによって得られる。別の追加のパラメータは、被積分関数Ｉがその最大値ｓの半分に値する半値幅ｘωである。ｎが偶数の場合およびｎが奇数の場合の半値幅ｘωの値は、被積分関数Ｉがその最大値ｓの半分に値するφの正の値によって得られる。
【００４３】
方程式Ｉ（φ，ｃ，ｎ）＝ｓ／２は、解析解を有さず、パラメータｘωの値は、例示的な本実装形態では、以下の通り近似値
【数４９】
2018527666.tif 000051
を与える公式によって近似される。
【数５０】
2018527666.tif 000052
【００４４】
その近似の関連性は、ｎが無限である傾向がある場合は、半値幅パラメータｘωの楕円形状に依存し、ｃが０である傾向がある場合は、ｘωは、ｎが奇数の場合はπ／３におよびｎが偶数の場合はπ／４にそれぞれ収束し、ｃが１である傾向があり、ｎが無限である傾向がある場合は、ｘωは、０に収束することが証明されている。
【００４５】
上記で説明される近似は、ｎ指数が高い値の場合はかなり正確であり、低い値の場合は平均である。しかし、有利には、低い精度推定は、後者には十分であると見なされ、高レベルの正確度は、前者に当てはまる。実際に、ｎが低い値の場合は、大きな幅を有する滑らかなピーク曲線が得られ、その結果、ｘωの小さな変動は、被積分関数Ｉの小さな変動に対応する。対照的には、ｎが高い値の場合は、傾きが非常に大きくなり、ｘωの小さな変動は、恐らくは、被積分関数Ｉの大きな変動に対応し得る。
【００４６】
演算されたそれらのパラメータｃ、ｓおよびｘωは、適切なピーク形状関数を指定するために使用され、ピーク形状関数は、以下で説明されるように、被積分関数Ｉ（φ，ｃ，ｎ）の近似
【数５１】
2018527666.tif 000053
の構築に利用される。φ、ｃ、ｎへの従属性を有するＩのようなピーク形状関数は、一般的な方法で、Ｐ（φ，ｃ，ｎ）と記述される。
【００４７】
ピーク形状関数は、近似方法の上流選択の組合せを通じて、および、特定の構成状況（ジオメトリ、照明が当てられた表面の光の挙動、考慮されるエリア光源光に対する考慮される点の配置、視線方向など）に依存する現行のパラメータの演算を通じて決定される。
【００４８】
ピーク形状関数を有する実装形態の２つのファミリ（すなわち、洗練されたものおよびより簡単なもの）を解説するために以下で説明する。両者間の選択は、演算コストと推定正確度との間のトレードオフに依存する。以下では、考慮される関数は対称である。
【００４９】
洗練された実装形態の場合は、近似において使用するために、トリプルピーク形状関数Ｑ（φ，ｃ，ｎ）が単一正規化ピーク形状関数Ｐ（φ，ｃ，ｎ）から導き出される。そのトリプルピーク形状関数Ｑ（φ，ｃ，ｎ）は、πだけ下方移動したＰ（φ＋π，ｃ，ｎ）およびπだけ上方移動したＰ（φ−π，ｃ，ｎ）のようなものとして取られた同じピーク形状関数Ｐ（φ，ｃ，ｎ）の線形関数を構築することによって得られ、考慮される角度間隔は、−π／２とπ／２によって有界のままである（ただし、定義域はより広く、恐らくは有界ではない）。むしろ、それにより、驚くべきことに、特に効率的な近似関数が利用可能になる。
【００５０】
より正確には、特に効率的な組合せは、以下のトリプルピーク形状関数Ｑ（φ，ｃ，ｎ）を考慮することによって決定される。
【数５２】
2018527666.tif 000054
【００５１】
次いで、移動因子（translation factor）ｖＳｈｉｆｔ（ｃ，ｎ）およびスケーリング因子（scaling factor）ｓＮｏｒｍ（ｃ，ｎ）の演算によって、中間因子（intermediary factor）ｄ（ｃ，ｎ）と共に、近似された被積分関数
【数５３】
2018527666.tif 000055
がＱから得られる。それらは、以下の式から得られ、簡潔にするために、関数の独立変数のｃおよびｎ従属性が省略されている。
【数５４】
2018527666.tif 000056
【００５２】
次いで、以下の式によって、近似された被積分関数
【数５５】
2018527666.tif 000057
の式がＱ（φ，ｃ，ｎ）の関数で得られる。
【数５６】
2018527666.tif 000058
【００５３】
チェックできるように、ｓＮｏｒｍおよびｖＳｈｉｆｔの選択のおかげで、以下の関係が成立する（簡潔にするために、
【数５７】
2018527666.tif 000059
の独立変数のｃおよびｎ従属性が省略されている）。
【数５８】
2018527666.tif 000060
【００５４】
次いで、以下の式によって、方程式（１０）、（１４）および（１６）に基づいて、Ｇ（ｘ，ｃ，δ，ｎ）の近似
【数５９】
2018527666.tif 000061
が得られることを記述することができる（簡潔にするために、右側の独立変数のｃおよびｎ従属性が省略されている）。
【数６０】
2018527666.tif 000062
【００５５】
本原理によれば、ピーク関数Ｐは、既知の不定積分式を有し、それにより、方程式（１７）は、演算に対して特に魅力的なものになる。
【００５６】
変形形態の構成では、上方および下方Ｐ移動は、πとは異なり、有利には、３π／４〜３π／２であり、好ましくは、πより大きい。
【００５７】
より簡単なファミリの実装形態の場合は、近似において、単一正規化ピーク形状関数Ｐ（φ，ｃ，ｎ）が使用される。それに従って、以下の式
【数６１】
2018527666.tif 000063
によって、近似された被積分関数
【数６２】
2018527666.tif 000064
が得られる（簡潔にするために、独立変数のｃおよびｎ従属性が省略されている）。
【数６３】
2018527666.tif 000065
【００５８】
ここでは、洗練されたファミリとより簡単なファミリの両方の実装形態との関連で、適切な正規化ピーク形状関数Ｐ（φ，ｃ，ｎ）の選択およびパラメータ化を展開する。以下では、偶数値のｎ指数が考慮されるが、同様のプロセスは奇数値にも当てはまる。
【００５９】
ピーク形状関数Ｐの第１の選択では、それらは、以下の形態のローレンツ関数ＰＬであり、
【数６４】
2018527666.tif 000066
式中、は、ｃおよびｎに従属するパラメータであり、それにより、関数ＰＬが指定される。
【００６０】
ＰＬの有利な決定モードでは、半値幅ｘωにおけるＩ（φ，ｃ，ｎ）の値は、ｘωに対してシフトされた横座標におけるＰＬの値と等しくなる。biasと記述されるオフセットにより、近似された被積分関数
【数６５】
2018527666.tif 000067
を構成するためにＰＬに適用される演算（移動シフト、スケーリング、総和）を説明することができる（トリプルピーク関数の場合は公式（１６）および単一ピーク関数の場合は（１８））。すなわち、
【数６６】
2018527666.tif 000068
であり、これは、
【数６７】
2018527666.tif 000069
に至る。
【００６１】
biasの値は、トリプルピークまたは単一ピーク公式の選択に応じて異なる。トリプルピーク（洗練された解）では、以下の値を選択することが適切であり、
【数６８】
2018527666.tif 000070
単一ピーク解では、以下の選択が適切であることが証明されている。
【数６９】
2018527666.tif 000071
【００６２】
bias因子に対するそれらの経験公式の関連性は、実験的測定によって確認される。
【００６３】
以前に言及した通り、選択されたピーク形状関数の主要な態様は、それらの不定積分の解析式の知識にある。公式（２０）のローレンツ関数に関しては、これは、以下の式によって得られ（簡潔にするために、関数における独立変数ｃおよびｎが省略されている）、
【数７０】
2018527666.tif 000072
これは、以下の式に明白に至る。
【数７１】
2018527666.tif 000073
【００６４】
以下の式を念頭におくと、
【数７２】
2018527666.tif 000074
これは、以下の公式に至る。
【数７３】
2018527666.tif 000075
【００６５】
公式（２５）は、逆正接関数の限られた数の演算を伴い、それは、コストが高く、ＧＰＵの約２０のＡＬＵ（算術論理演算ユニット）命令を典型的に必要とすることに留意されたい。特に、公式（１７）に対して、そのような逆正接関数評価を３回実行すれば十分である。次いで、近似された被積分関数
【数７４】
2018527666.tif 000076
を演算することができる。
【００６６】
正規化ピーク形状関数Ｐの第２の選択によれば、それらは、ローレンツ関数ＰＬと、ＰＰｍと記述される既定の数ｍでパラメータ化されたピアソンタイプＶＩＩ関数との線形結合である。そのようなピアソンタイプ関数は、以下の式によって定義され、
【数７５】
2018527666.tif 000077
式中、βは、ｃ、ｎおよびｍに従属するパラメータであり、それにより、ＰＰｍが指定される。
【００６７】
より正確には、ピーク形状関数の線形結合は、アフィン結合である（すなわち、関連係数の総和が１である線形結合）。これは、ローレンツおよびピアソンピーク形状関数にそれぞれ対応する近似された被積分関数
【数７６】
2018527666.tif 000078
とのアフィン結合である近似された被積分関数
【数７７】
2018527666.tif 000079
を有することになる（ただし、ピーク形状関数と近似された被積分関数の係数は同じではない）。その関係は、以下の式によって得られ、
【数７８】
2018527666.tif 000080
係数μは、０〜１で構成される。
【００６８】
特定の実装形態では、係数μは、（最大値ｓおよび半値幅横座標ｘωに加えて）被積分関数Ｉから導き出されるさらなるパラメータから演算される。値Ｉ（ｘｔａｉｌ，ｃ，ｎ）は、尾部横座標ｘｔａｉｌにおいて被積分関数Ｉが取ったものである。後者は、有利には、以下のように選択される。
ｘｔａｉｌ＝ｘω＋０．３９４６（１−（１−ｘω）１２）        （２８）
【００６９】
次いで、係数μは、ｃおよびｎに従属し、近似された被積分関数
【数７９】
2018527666.tif 000081
および被積分関数Ｉのｘｔａｉｌにおける値を等しくすることによって得られる。これは、以下の値に至る。
【数８０】
2018527666.tif 000082
【００７０】
この選択は、効率的な実装形態において特に適切であることが証明されており、それは、被積分関数の尾部では、ローレンツ近似は過大評価される傾向にあるが、対照的に、ピアソン近似は過少評価される傾向にあるという事実によって説明することができる。従って、重み付けは、両者間の相対バランスを提供する。
【００７１】
同様に、ローレンツ関数に関しては、パラメータβは、近似された半値幅横座標ｘωおよびオフセットｂｉａｓｍを使用することによって、ｔによって演算され、ｃ、ｎおよびｍに従属する。
【数８１】
2018527666.tif 000083
その結果、
【数８２】
2018527666.tif 000084
である。
【００７２】
ピアソン関数におけるパラメータｍの２つの特定の値は、有利な実施形態（すなわち、１．５および２）を提供する。これらの両方とも、比較的簡単な不定積分式が知られている（簡潔にするために、関数における独立変数ｃおよびｎが省略されている）。
【数８３】
2018527666.tif 000085
【００７３】
ｍ＝１．５の場合の積分は、評価がより簡単であるが、ｍ＝２の場合の積分は、放射輝度の推定をわずかにより正確に行う。
【００７４】
ローレンツ関数の場合のように、ｂｉａｓｍの値は、トリプルピークまたは単一ピーク公式の選択に依存する。トリプルピーク（洗練された解）の場合は、以下の値を選択することが適切であるように思え、
【数８４】
2018527666.tif 000086
単一ピーク（より簡単な解）の場合は、以下の値を選択することが適切であるように思える。
【数８５】
2018527666.tif 000087
【００７５】
図６は、本原理による、局所的なマイクロファセット鏡面反射放射を確立することによってレンダリングを実行する本原理による装置６００を描写する。装置６００は、アドレス、データおよびクロック（図示せず）からのクロック信号を伝えるバス６０２によって互いに接続される様々な要素を含む。装置は、装置の様々な要素を制御するマイクロプロセッサ６０４（「ＣＰＵ」の指定表示を有する）を含む。マイクロプロセッサ６０４は、バス６０２を介して、グラフィックス回路６０６（図６では、グラフィクスカードとして識別される）に接続される。グラフィックス回路は、様々な動作を並列に実行するいくつかのグラフィックス処理ユニット（またはＧＰＵ）６０８およびグラフィカルランダムアクセスメモリ（ＧＲＡＭ）６１０を含む。ＧＲＡＭ  ６１０は、（１）画像におけるシーンを表すパラメータ、（２）ピーク形状関数データおよび（３）レンダリングの間にフレーム内で演算される局所的な放射輝度情報をそれぞれ格納するレジスタ６１２、６１４および６１６によって例示的に描写される多数のレジスタを有する。ＧＲＡＭ  ６１０に加えて、装置６００は、不揮発性メモリのＲＯＭ（読み取り専用メモリ）６１８およびランダムアクセスメモリまたはＲＡＭ  ６２０を含み、いずれも、バス６０２を介してマイクロプロセッサ６０４に結合される。ランダムアクセスメモリ６２０は、（１）マイクロプロセッサ６０２用の動作プログラム、（２）画像におけるシーンを表すパラメータ（例えば、シーンの物体のモデリングパラメータおよびシーンの照明パラメータ）および（３）放射輝度を確立するために利用されるピーク形状関数データをそれぞれ格納するレジスタ６２２、６２４および６２６を含む多数のレジスタを有する。装置６００の電源が入り次第、マイクロプロセッサ６０２は、ＲＡＭ  ６２０のレジスタ６２２内のプログラムの命令をロードして実行する。
【００７６】
本原理の方法のステップを実装するアルゴリズムは、装置６００と関連付けられたグラフィクスカード６０６のメモリＧＲＡＭ  ６１０に格納される。装置６００の電源が入り次第、ＲＡＭ  ６２０は、そのレジスタ６２４にシーンパラメータをロードし、レジスタ６２６にピーク形状関数データをロードする。その後、ＲＡＭ  ６２０は、例えば、ＨＬＳＬ（高水準シェーダ言語）言語またはＧＬＳＬ（ＯｐｅｎＧＬシェーディング言語）を使用した「シェーダ」タイプのマイクロプログラムの形態のアルゴリズムを介して、ＧＰＵ  ６０８による実行のために、ＧＲＡＭ  ６１０のレジスタ６１２および６２４にこれらのパラメータをロードする。
【００７７】
変形形態によれば、プリミティブに関するデータの少なくともいくつかは、ＲＡＭ  ６２０に格納され、マイクロプロセッサ６０２によって処理される。しかし、この変形形態は、データはバス６０４を介してグラフィクスカード６０６からＲＡＭ  ６２０に送信されるため、ＧＰＵ  ６０８に含まれるマイクロプログラムから構成された環境の表現を含む画像の構成において多大な待ち時間が生じる。バス６０４は、一般に、ＧＰＵ  ６０８からＧＲＡＭ  ６１０（およびその逆）にデータを送信するためにグラフィクスカード６０６において利用可能なものより劣る送信能力を有する。
【００７８】
装置６００は、典型的には、例えば、キーボード、マウス、ジョイスティック、ウェブカメラ、および、音声認識などの他の入力様式など、１つまたは複数のＩ／Ｏ（入力／出力）デバイス６２８を含む。また、装置は、様々な要素に給電する電源６３０も含む。電源６３０は、装置６００内に存することも、その外部にあることもあり得る。装置６００内の無線周波数トランシーバ６３２は、他のデバイスおよびシステムとの情報の送受信のために各種のプロトコル（ＷｉＦｉ（登録商標）、Bluetooth（登録商標）、セルラおよび同様のもの）のうちの１つを介して無線接続を提供する。
【００７９】
さらに、装置６００は、例えばライブで、グラフィクスカードにおいて計算および構成された合成画像を表示するためにバス６３６を介してグラフィクスカード６０６に直接結合された表示デバイス６３４（例えば、モニタ）を含む。表示デバイス６３４をグラフィクスカード６０６に接続する専用バス６３６の使用は、はるかに高いデータ送信ビットレートの利点を提供し、従って、グラフィクスカードによって構成される画像を表示するための待ち時間を低減する。変形形態によれば、表示デバイス６４４は、装置６００の外部にあり得、表示信号を受信するためにケーブルまたは無線接続を利用することができる。例えば、表示デバイス６３４は、ＬＣＤ、プラズマ画面またはビデオプロテクタの形態を取ることができる。この点において、ＲＦユニット６３２は、表示信号を表示デバイスに送信するように動作することになる。
【００８０】
本明細書で使用される場合、「レジスタ」という用語は、計算されたまたは表示予定の）データを表すすべてのもしくは一部のデータが格納される予定の低容量（何らかのバイナリデータ）のメモリゾーンおよび大容量（全プログラムの格納が可能）のメモリゾーンを含み得る。さらに、レジスタは、互いに隣接する必要はなく、分散場所に存在することができ、そこでは、１つのレジスタは、いくつかのより小さなレジスタを含み得る。
【００８１】
図７は、本原理による、マイクロファセット鏡面反射放射輝度を確立するプロセス７００のステップを形成するフローチャートを描写する。プロセスは、ステップ７０２の間に視線反射ベクトル
【数８６】
2018527666.tif 000088
を演算することから始まる。その後、ステップ７０４の実行を行い、光源エッジの各々に対する反復ループを開始する。ステップ７０４に続いて、ステップ７０６が実行され、ＵｉＵｉ＋１およびｘによって得られるエッジ平面への
【数８７】
2018527666.tif 000089
の直交投影である
【数８８】
2018527666.tif 000090
を演算する。その後、ステップ７０８の間に、Ｓがエッジ上にあるかどうかを判断するためのチェックが行われる。Ｓがエッジ上にない場合は、プロセスはステップ７１０を続行し、ＵｉおよびＵｉ＋１の中間変換を演算する。次に、ステップ７１２が実行され、法線の周りのＵｉＵｉ＋１（変換された）エッジ積分を演算する。積分は、ステップ７１４の間に、（放射輝度への寄与として）光源エッジの総和を求める。その後、ステップ７１６の間に、エッジが最後のエッジであるかどうかのチェックが行われる。エッジが最後のエッジである場合は、上記で説明される欧州特許第３０５７０６７号からの技法を使用して、マイクロファセット放射が確立される。さらなるエッジが存在する場合は、プロセスは、ステップ７０４に戻る。
【００８２】
ステップ７０８の間、投影ベクトル
【数８９】
2018527666.tif 000091
と関連付けられたポイントＳは、エッジ上にあり得る。Ｓがエッジ上にある場合は、ステップ７２０の実行を行い、点Ｓにおいてエッジの分割を行う。次に、ステップ７２２が実行され、Ｕｉ、Ｕｉ＋１およびＳの中間変換を演算する。その後、ステップ７２４が続き、法線
【数９０】
2018527666.tif 000092
の周りのＵｉＳ（変換された）エッジ積分の演算が行われる。ステップ７２６の間に、放射輝度への光源エッジの積分の寄与の総和が起こり、その後、以前に説明される欧州特許第３０５７０６７号からの技法を使用して、法線の周りのＳＵｉ＋１（変換された）エッジ積分を演算するステップ７２８が続く。ステップ７１４による放射輝度へのそのエッジ積分の寄与の総和後、プロセスは、ステップ７１６に戻る。最終的に、ステップ７１８において、マイクロファセット鏡面反射放射輝度が確立される。
【００８３】
マイクロファセット鏡面反射放射輝度を確立した後、欧州特許第３０５７０６７号で説明されるものとほぼ同じ様式で、レンダリングが行われる。利用される入力は、幾何学的データ、光特性データおよびピーク形状関数データを含む。後者のデータは、特に、ローレンツまたは組み合わされたローレンツ・ピアソン、対応する関連パラメータ（ピアソン関数の場合はｍなど）、利用方法（上記で展開されたトリプルピークまたは単一ピーク方法）など、使用されたピーク形状関数のタイプを含み得る。
【００８４】
次の画素または表示サンプルが考慮され、それは、有利には、様々な画素に対して並列に処理される。次の表面点Ｍもまた、既知のレンダリングプロセスに準拠して、現行の画素に対して処理される。次いで、上記で説明されるように、視線方向と関連付けられた考慮される画素の点Ｍにおける局所的な放射輝度が演算され、その後、総和が求められる。全セットが処理されるまで、さらなる表面点およびさらなる画素が処理され、完全なレンダリング出力が利用可能になり、動画のために反復される。
【００８５】
グラフィックスプロセッサ６０８は、図７のステップのいくつかを並列に実行することができ、それにより、効率が高まる。
【００８６】
多くの実装形態について説明してきた。それにもかかわらず、様々な変更を行えることが理解されよう。例えば、異なる実装形態の要素は、他の実装形態を生み出すために、組み合わせることも、補足することも、変更することも、除去することもできる。それに加えて、当業者であれば、他の構造およびプロセスを開示されているものの代わりに代用することができ、結果として得られた実装形態は、開示されている実装形態と少なくとも実質的に同じ結果を達成するために、少なくとも実質的に同じ方法で、少なくとも実質的に同じ機能を実行することが理解されよう。それに従って、これらのおよび他の実装形態がこの出願によって企図される。
【００８７】
具体的には、欧州特許第３０５７０６７号で説明され、本開示で言及されるようなピーク形状関数による近似は特に有利であるが、開示されるエッジ分割方法と組み合わせて他の種類の被積分関数の演算を利用することができる。
【００８８】
本原理のレンダリング技法は、以下の利点を潜在的に提供することができる。
−  エリア光によって照明が当てられた物理的に妥当な鏡面の簡単で効率的なレンダリング
−  ＶＦＸ、アニメーションおよびゲーム産業において広く利用されるマイクロファセット理論との一致
−  小さな演算オーバーヘッド
−  並列アーキテクチャおよびグラフィックスハードウェア上での容易な実装
−  リアルタイムのレンダリングに適した高速解決法
−  生産レンダラまたはゲームエンジン上での容易な実装
【図１】
2018527666.tif 000103
【図２】
2018527666.tif 000104
【図３】
2018527666.tif 000105
【図４】
2018527666.tif 000106
【図５】
2018527666.tif 000107
【図６】
2018527666.tif 000108
【図７】
2018527666.tif 000109
【国際調査報告】
2018527666.tif 000110
2018527666.tif 000111