Phong-árnyalás

Ez a szócikk nem tünteti fel a független forrásokat, amelyeket felhasználtak a készítése során. Emiatt nem tudjuk közvetlenül ellenőrizni, hogy a szócikkben szereplő állítások helytállóak-e. Segíts megbízható forrásokat találni az állításokhoz! Lásd még: A Wikipédia nem az első közlés helye.
Phong-árnyalás interpolációjára példa

A Phong-árnyalás az illuminációs képletben felhasznált normálvektort interpolálja a háromszög csúcspontjaiban érvényes normálvektorokból. Az illuminációs képletet pedig minden pixelre külön határozza meg.

A phong-árnyalás a színtérben nemlineáris interpolációnak felel meg, így nagyobb poligonokra is megbirkózik a tükrös felületek gyorsan változó radianciájával.

Az algoritmus

A Phong-árnyalás programja a következő:

X s t a r t = X 1 + 0.5 ,       X e n d = X 1 + 0.5 ,       N s t a r t = N 1 {\displaystyle X_{start}=X_{1}+0.5,~~~X_{end}=X_{1}+0.5,~~~{\overrightarrow {N}}_{start}={\overrightarrow {N}}_{1}}

f o r       Y = Y 1   t o   Y 2       d o {\displaystyle {\mathtt {for}}~~~Y=Y_{1}~{\mathtt {to}}~Y_{2}~~~{\mathtt {do}}}

            N = N s t a r t {\displaystyle ~~~~~~{\overrightarrow {N}}={\overrightarrow {N}}_{start}}

            f o r       X = T r u n c ( X s t a r t )   t o   T r u n c ( X e n d )       d o {\displaystyle ~~~~~~{\mathtt {for}}~~~X={\mathtt {Trunc}}(X_{start})~{\mathtt {to}}~{\mathtt {Trunc}}(X_{end})~~~{\mathtt {do}}}

                        ( R , G , B ) = S h a d i n g M o d e l ( N ) {\displaystyle ~~~~~~~~~~~~(R,G,B)={\mathtt {ShadingModel}}({\overrightarrow {N}})}

                        P i x e l ( X ,   Y ,   T r u n c ( R ) ,   T r u n c ( G ) ,   T r u n c ( B ) ) {\displaystyle ~~~~~~~~~~~~{\mathtt {Pixel}}(X,~Y,~{\mathtt {Trunc}}(R),~{\mathtt {Trunc}}(G),~{\mathtt {Trunc}}(B))}

                        N + = δ N X {\displaystyle ~~~~~~~~~~~~{\overrightarrow {N}}\mathrel {+} =\delta {\overrightarrow {N}}_{X}}

            e n d f o r {\displaystyle ~~~~~~{\mathtt {endfor}}}

            X s t a r t + = δ X Y s ,       X e n d + = δ X Y e ,       N s t a r t + = δ N Y s {\displaystyle ~~~~~~X_{start}\mathrel {+} =\delta X_{Y}^{s},~~~X_{end}\mathrel {+} =\delta X_{Y}^{e},~~~{\overrightarrow {N}}_{start}\mathrel {+} =\delta {\overrightarrow {N}}_{Y}^{s}}

e n d f o r {\displaystyle {\mathtt {endfor}}}


  • Informatika Informatikai portál • összefoglaló, színes tartalomajánló lap
Ez az informatikai tárgyú lap egyelőre csonk (erősen hiányos). Segíts te is, hogy igazi szócikk lehessen belőle!