!!"#$#%&'%(&)! *+ +, ,-
.
/&0/1"!/ !21"!1"%34''0"5
6778
, 9 ! !!":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::; %/!)"<1%"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::= %/!)"/>'?@%::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::= %/!)"A'?@%::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::8 %/!)"A1!0@!'!B"%$3"5'0::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::C '2B"2::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::D7 !/"!E1F !'!"!::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::D7 !0 %'G0B"G-"/$&/1G)%5:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::D7 ,?!'"G &'B"GH)3''%0I:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::DD G0G$!'4G'5% G05B&'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::DD ,!4"G/&'G !"B"20J'G/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::DD *&1&0&"G:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::D6 %!>?&/"'!?!::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::D6 %E!'1F !'!"!:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::DA *G/&1K0!'2B":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::DA "!/%G)%5::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::DA KLLK/K1%" "!'!H 3'"%1?'%0I:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::DA K(M!$$!"3&H(!?"4)3!%0I::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::DN ,!4"G/&'G G05"!/O'!"/!H)%&/"!"I::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::DN '?4"!":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::DN 'P0%"!"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::D; "!)%'"!"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::D= '?4L'!(%0:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::D8 %"4!/!':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::DC &'G:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::67 %/!)"<$G@'$&/1G"31::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::67 %/!)"<G''&1GP!/!!"!::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::6D *!(!/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::6D
!1?'"!::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::66 (")&15?&":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::6A <M4/?&""5&$" !/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::6; %/!)"<%%)%'%G'G:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::6; 4G/&1(%1!%5 %'G0&L@!"31%'!?!!:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::AA ("&1!0$!'!'"!"!/!"%!(1&(!&L@!"31%::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::A= !4::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::A= !/"!E("&$!'(&'0&G!(!/"!E"1!"5(3'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::AQ (!E("&$!'(&'0&G!((!E"1!"5(3'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::A8 ?)%&G'%"!1?'"!M!$!'(&'0&G::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::A8 !/"!EM&/1G'%&0!!/G'G::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::AC ""/%LJ"31?3$$!/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::AC !4&L@!"31'"/!4&G::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::N7
/1!:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::N7 %1"%&!"3')&)'?J%1G)%5::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ND R3"!/%&&0K1L%%"!/?&'G)%5::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::NA 2/K::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::NN
@!'!!"1!0@!'!B"!::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::N; %"4(!/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::N= !(!/)!!::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::NQ ?("! /1! "/%)!:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::NQ /> /1!::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::N8 /> !4&"%!/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::N8 1!0@!'!B"?/1"!/!%! G'"&""G::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::NC <4/?!1''"!"2!K!%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::NC &(3'&:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::NC !" !"B"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::NC %/"3G'%1!/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;6
P0"3'@(&G0&:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;6 !0 %'G0B"G-G/P'G::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;N % !/2(%&1?&!!:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;; +/P'G:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;=
/$&/1G)%5:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;Q G"/%E!'!12::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;C
&//G4%!//)4%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=7 !&' 5O!!"!%::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=7 %1G)%5::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=7 /&0/1&5%"G1&0"G:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=D J05:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=6 0PL!KK::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=6 S!$&0''G::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=A /&('&1@!0P:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=N
O00!':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::== %/!)"< !/"!E$!'(&'0&5'?!%::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::== %/!)"<?%E!'$!'(&'0&5'?!%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=Q KK!"P%' GB"G:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=8
&?!/G)%5/!(!/%(!@L!&'P&$" !/!$!@'!"!-1!'PLG/1%'P!13'"%1(%G ?!00!'/!(!'!!""-1!0K !"!'"!4/( !/')&P%"F?/&0/1&GG"10%"F%1!/!"": %(!1!''!""O0 &'"!'1'!"%%1!/!"!/!-1!'P!!"?/&0/1&5'0&/%"13%!/!"O' $!'4G'":&/%"!%G/5'04% "G&@G"$!@'!"2@G"@ &'"?'(G3'"3(G-4&0P!'' %1G)%5"1!0@!'!B"!%: ?@%L!01G4!'P!"&'P!K'!"!O'!""!-1!'P!'!4!"2 "!%-4&0P 13'"%1(%G''1G&$!@'!"!4( !/K/P!!""2'1%'! L1!04"G/&&""15(&"K/"@!: !!K'!"!! !4!"2MH''1G$!@'!"2%%"!/$!I&'P/"!'!1L!-4&0P (&""4/( !/&'0G'""G%""!%4&G$/4!"2 !0P10LLL"/)%5%"!-%''!" !4/( !/ &'0G'""G%/ &"&51%(!/"!K'!"K !"B"4/( !/$!': 44&&L-4&0P@5''1G&O'!!!-!KK1!0'"!-2"-'?&%1!/!"!!1 !'!0!(2:0!LL!?/&0/1&5!''!""1!01&(%-1%"!/!"!'G"%-1!0!''!""1&(%" %4/( !/!-4&0P!''!"!'/%: !1!''K !"'!O'%1!/%T4&0PUM/ G'"4/( !/ !1?&"@GL5':'!0!(4!"!"'! %&""%"GL'!%/!(!'!/!G''5!KK!'-4&0P(&"" M"4&0P!''4G'%: G/"%(2&/G!1 G'"&&""-4&0PO0!!'1'!"-'0&/%"13&%1!/!"!% !'!0!(4!"!"'!://!"%?%3?'(G1B"50?%0/$%-10?&"&LL4G/&1(%1!%5?% 1!0@!'!B": B0/0!LL!0P&/'"%'0@G"$!@'!"2T% G'"G0U &'"?'(G3'&'P?!)%$%3 15(!/!%1!/!"!-4&0P!''?!!"1!0@!'!B"!% 0P%1G)%5"'"/!4&%-1?G0LG/%-% G'"'GL&$" !/$!@'!"!'$&0''&%-!1L!O'4!"%'P!$!'("&':"!/1!"!!1!01&(@- 1%""!4!"O1!04/( !//!'-1%'P!&'0G'""G% -(!!11&("J'&"//5'-!! 4&0P%1FK(!0P&/'"L: !4G"1%13'"%1(%G&$" !/$!@'!"L!"'? !"2K !"!'1P!!''?/&0/1&5 !'!0!""!%
/!(!'!/!G''5%1!/!"!-%''!" ! ''1G%"!/O'!"!1!0$!'!'2!'1'!"%%1!/!"!:
"?"'"-4&0P!0P4G'"G!'@G"B"G"KLLM! !!LL%(2'""-!0P%'!0"K/"%: P&/'"%'01%(!-'!K/L!4G'"1K0K""%0!@!'!"2$!'4G'5%M$!@'!"2%%"!/!"! KK0G'':4G'""P'!0!&""G %&"V4% &"&GL'!0'GLL%V10 G/"10G/: 1!0$!'!'2!'1'!"%%1!/!"!/!%"!'2&/L%"!/!"/2'-%''!" !"3(&1GP&$&//G&L5'@3" $!@'!"2:LL! &"&GLVP%' G(&"""!/O'!""2'$O002!V1%?-?'(G3' !0P!"!1%"3'1GP&%@!'!"2!0B"0!"PJ@"4": 9!'!(&'0&"L1%("-!'2LL$!' G&'"!1?&"&"!1!'2"""/" !0P&'P&$" !/"13""&L!- 1!'P%/!)"<&""GG4&1!0%1!/4!PJ@"4"!0B"0!":&$" !/4G/&1(%1!%50/$% "!/O'!"/!&)!"/G'-1% !'!!0P&'P"!/O'!"-1!'P!0P!"!1%1%?L!%!/!?!': '&1"!4G"!""2!/!"!0P&'P!1''"!"2&$" !/"L!13""%-1!'P!0P&/"!'1'!"% 0P&/'"%'?@%&""GG""G1&0"@-%''!" !?/&0/1&GG '1&"%1!/!(2G1G/ 4"&P!0B"0!"PJ@":)'&""$!'4G'5%/"!0!"!0P/"&'!!(2 0P!(2$!@'!"2'&"@G- %1G//!(!'!!L%&P&0/$%%!'2%1!/!"!!'-%''!" !?O&/G1&"%1!/!(! 4G/&1(%1!%51!0@!'!B"!':1G%)&?&/"L&?/&0/1&5 -%!/!"%/!)"< '? !"24G'"G"!'@G"B"%:&$" !/!/!"!%"!'2('!0!!&1?3"!/0/$%)B1F"G/0P "K/P0GG'%0P!!"!11!04J%:%&P&!!"!L!!/"&$" !/?!0!%"J'4'(@G%/!)"< G'"'"G1&0"&""$3)%5": 13G1&/G%/!)"<C:7) !/%5@G '(&'0&"1:&$" !/?/&0/1&G%P!' ! &'"- $!@'!"'?@: /1!>&/6:7MG !/%5@:/"@!'!(&'0&"L%/!)"<?/&0/1$!@'!"%'!" : /1!>&/MK""G1&0"5 0!(%/!)"<!/O'L!13""G/:
;
G/%/!)"<$!'4G'G%"!/O'!"!%1%""'!0"KLL!!"L!?/&0/1&GWWP!' !"K/"%- /"!!""10% G'"G&1?/&0/1&G%P!' /!-1% !' '!1P!1!/%"!(2?/&0/1&5 %''!" !%/!)"<?/&0/1&GG '1&"%1!/!(2G1G/%/!)"<1!0/""@&LL!'2!0B"25( G''B"4"5B0P!'2: %/!)"<$!'?B"!L!13""G3"G&""5&$" !/!'!1/!"/!/G:?/&0/1L (!1&"/G'"!'1'!"%P04G/&1(%1!%50/$%&"!/O'!"!%"/%"%!'2&/L-1!'P! 4G'"&/G%0!41/O0! G':&/"1!013""&1-4&0P"K/"%%/!)"<ML!!0P 4G/&1(%1!%5 %'G01!0@!'!B"!-&L@!"31&("%L!&' GG"5'!( !!0!1!/ "3'@(&G0%L!G''B"GG%0:?!)%G'% %0G'&1-1%'P!"KLL'!"!"@!'!"?/&0/1&G%!1?&"L5' %1G)%5!!'!-O'K40J'P"$!"!" !%1G)%5("%G''&1GPL5' '5%P!//!: !13""&1"& GLLG-?/&0/14&0P"G1&0"@4G/&1(%1!%5"/$&/1G)%5%''!" !4&1&0 "/$&/1G)%51G"/%E&4G'"G!'@G"B"GG"- '1%"1!0 %'G0B"GG/P'G'?@% 1!0%1!/":
< %"!1'B"!""!1-%/!)"<$!'$&04"5!0PL"/"/"!0!-1!'P13'"%1(%G4/( !/$K' !'2( !-&'0G'""G%"K !"B"%@G"10G'"'(!$%%G'"15(&X?/&0/1&5G1G/!" @!'!"%-4&0P%/!)"<1%(!&'0G'""G%"!/$!!!/!"O'/4!"2!': 0%/!)"<%0GL5'!1 !0P&/"-4!1!0PM0PF@"!1P:O'KLK2/!O'KLK2@!''!0F&'0G'""G&" PJ@"-/L!O'KLK2"B?3J4/( !/!'!1!!")'&1!0:@!'!'!0%1?'!1!"G'"/! K !"!2
%/!)"/> %(!&1!15/%0/$%34/( !/L%&P&$3)%5%!'/"L%"&B"@: !0B"0 !' %0G'4"5(&""4/( !/"3'@(&G0%-%''!" !!0P&/"4/( !/$3)%5 "G1&0"G%:!1%""0P&/'"%'01%(!0/$%G"4G'5''1G'?@-'!0P!5"M- 0P4G/&1(%1!%50/$%G/5':
%/!)"A*G/&1(%1!%50/$%G"4G'5''1G&$!@'!"""G1&0"@:
%/!)"?3"?3"M&3"?3"!KK!!'""!%'!4!"2 -O'KK"!%"!""!'@G"&G' 4G'"?!)%G'%!KK/!-?':@&P"%)-&/1GP:
%/!)"&3(4/( !/!&$" !/!40! !/"'!@G"G"!0B"%:
%/!)" 3%)*/( !/! 0P&$" !/!%"!"%G"&/!0B"0 !'!'2G''B"&""401%"G'(&'0&%:
%/!)"'P''1G&K!?)&'5(GG""!%'!4!"2 4G'5"&!/!"O'-!'2&/L "KLL@G"&O!115(1!0 '5B"G)'@GL5':
%/!)"!"3?O0!%/!)"<$3"G%(!@F&1?&!!"!'!?B"" 0P1!0'! 2K!"! 2 $/%B"" 0%!'''1G"!'!?B"!&/-%0P!%4!1/"!:
!0P!/F0!( /"%/!)"<- 0!(%/!)"<-%/!)"A1!0! !!4!'P!""4&'G'"'G&- 1!0@!'K'"4G'&1L!13""&""!K'!"/!: 9!'!(&'0&"K !"'!O'%/!)"A-%''!" !/L!V!!!/!"O'-K !" !V%/!)"/> %0G'"G '$&0''&%:
Y,9 %/!)"A?!)%$%34G/&1(%1!%50/$%%1!0@!'!B"/"$!'!'-'? !"20/$%3 &'0G'""G&"%/!)"/>M!/!"O'/%!'-10&/%-4(&""P!' %%1?'!1!"G)%5!"
=
/"!02(""/?/!"!%:%/!)"/>'P!0L!'!0K!'!LL%L"/"/"!00/$%34/( !/ $K'K""%/!)"<ML!-1!'PK !"!2$3)%5"L!G''B"G&"!!'%
0PO""1FK(%%"H)&&?!/"% !'! !'I
!0PO""1FK(%%""1&(@1!0-''1G1%'P!15(&4G'@0/$%3 !/2$&//G&":'!0!0P!/FLL!$&0'1 L!G''B"GG"@!'!"%-4&0P''1G"!'@! ?!/P215(L$3"H!&/0/$%3!/2$&//G&"%G/5'0&4G'@I- 0P&/1G' ''1GML'L:3"5LL%!!"L!"KLL''1G%4&G$/4!"30P44&0/$%3 !/2$&//G4&H?': %(!&1!15/%G4&I:"@!'!"%-4&0P1G$3"5?/&0/1&"! !P0!4"G' '!4!"''1G%/!)"<4B G%!/!(1P/!:
!0@!'!B"%15(&'!/(!!-L!G''B"G
1!0@!'!B"%15(&"'? !"2!!0P(&""$!'L&"GB1'P0&&B"@:1!0@!'!B"% 15(&)&?&/"&B"4"5!/%"-4&0PB!!"4&0P5(&'@G:%(!E!'"B!!'' B/"!!0P1!0$!'!'2%(!E"GL' 0P?'!""%(!E!%:&/1!0@!'B"%15(G'"'1!0(&"" B1'P0!!?'!""G1/!""4"G/&1!0:*&0P!0P(&""%(!E4!1%'P!&/"B $&0"/"&%-?'!""L!G''B"GG"5'$O00: * %&"1!0@!'!B"%15(!14G'?'!""G"-J0PB("&"K !"'!O'5(&'@X!&/ B1'P0!0P?%E!'B!'!B/GG/4G'4"5("1!P%0!"(@1!0: P%' G1%'0P&LL$!'L&"GL1!0(&""'!0-10G0%''!" !B1'P0-G' "KLL %(!&1!15/%O0!(&""15(4G'"G4&:'?!'4!"2-4&0P!0P!15(&"L%&P& /0!LL%4/( !/!!1"G1&0"-?'(G3'1!0$!'!'21!15/%4%GP1%"":/"%/!)"/> '!4!"2 "!%!'/4!"21!0@!'!B"%15(&G1L "!'" '1!P%!'/4!"215(4& "G1&0"G"PJ@":
3/$)!&L@!"31&!!'!
3/$)!0P&/'"%'0!0P$!'O'!"-1!'P/!/@&'G"K/"%:&"&$&0'1 3/$)!!0P K!$O0021!15/%L'&-1!'P?%%$&/1G)%5"G/&'GG/4G'4"5:1!15/%L'&'!4!" %(!&M- 0PG//!(!/1!15/%GL%:KLL$'!$!'O'!"!"4&4"3'"/!!'2('!0!$!'O'!"/2' L!'OH?/%1/P3/$)!I-4$!'O'!"4!/!(!'"1!15/%K !"'!1!0@!'!B"/!!/O':* $!'O'!"!'! 2%$&/1G)%5!1@!'!%1!0K !"'!O'?!/P2-&$$M)/!!$!'O'!"/2' 5: ?@%L!'0G'"'G&J:!""2?3$$!/!'4G'"-%'P!&/!'2('!0!$!'O'!"4! '!0'GLL!0P&$$M)/!!$!'O'!""/"&%:!'2('!0!?3$$!/"'!00P/LL!'O'2?3$$!/!-4&G "/"&5&$$M)/!!$!'O'!"!"4G"5?3$$!/!4B @G:J:1!0@!'!B"%$!'O'!"H/!(!/"/0!"I4G"5 ?3$$!/H!!"'!0!!4&G"/"&51'P0%?3$$!/$!'O'!""!'!0PO""I-1!'P/!%/@&'G'!0K!'!LL "K/"%$&0: %/!)"/>G'"'"G1&0"&""$3)%54/( !/!& !/'P%-&'P$!'O'!"!"4&4"3'"/!- 1!'P!"/"'11%"!0P!'2('!0!$!'O'!"T!'2""U@!'!%1!0:
G0G
%/!)"/>G'"' 0!"" G0G!11G-1%"?%%$&/1G)%5(&""-"0''?'J "/"&1GP&&B O'!2/!%!!'40PG:KLL%'P!"/"&1GP%(!$%%G'4"5-1!'P!J: G0G% 'G)&"H)'%?)4%I'&":
'%??%0
$&'P1"&1&0G4"GG1!02/!/(!L!?!"!0P1G&(?!/)'"""KLLK/% $/%B"!%!'':/"11G/!1)!0P$!'O'!"!"4G'/@&'G4&-4!1'!0'GLL!""2" 1%'""!0P%?'G"4"5-((%0!0P1G%$!'O'!"/!"K/"%/@&'G:$'%??%0!11G-1%""KLL $!'O'!"?!/%&(%3$!')!/'!: !'2LL1G/!1'B"!""!1!""2?3$$!/!'":&/$'%??%0K !"!21!)4%13"@!'!"%
Q
D: 6: A: N:
@&'G4G"5?3$$!//!: 4G"5?3$$!/"/"'1G1!0@!'!B"!: !'2LL%4G"5?3$$!/@!'!'!0%!'O'2?3$$!/'!: %DM/!:
$'%??%0%"!%"G!1'!4!"0P&LL-1%"1&%"&/$/%B"%$/! !)%G@-30P%$'%? 1!)4%131!0@!'!B"2PM%/&@!'4! %0B" :'(G3'!0P1&%"&/!!"&/ "K/"%$'%?-1%&/?!/P2 0%0?G"GGL!$!@!2(K""!'!"/&%(!"% G'@ 30G/ !"2!"-1B0@&LL'5/&L5'J@/L'$!'2L!?&B)%&G':!)'@%1G)%5 1!0@!'B"!&/"?"'4"5(G%!$$!"3%OKLK'!:(G/5'30P%&/L!'O-4 &L@!"311&0G$/%B"%1!)4%13KL!"K/"%-&L@!"31!0P%$!'!/0%-1G% $!'!J@4!'P!@!'!%1!0: 44&-4&0P!0P''1GLG/1%'P!1!0@!'!B"L!!(@!-!'2K/!!!"$3)%5" ?/1"!/!!"L!!''G''B"%:,G""3?'(G3'"-4&0P4''1G3L'&15(L$3"-&/ 1G?/&0/1&4"G"0P&/&'4"1%?/&0/130/$%34B G%%1!!"!'/!:0P& $&"&!/"-4&0P/!(!'!O!/2$&//G&4& '54&G$//2'%LG/1%'P!%/!)"<4B G!'2"": +'"'G&%/!)"/>%%)%'%G'GK !"!2'?!!"$&0''@10GL D: 6: A: N: ;:
%/!)"/>&L@!"31'"/!4&G1!0$!'!'2 %"!/$!!!/!"O': !0PO""1FK(%%"L!G''B"G: 1!0$!'!'21!0@!'!B"%15(% G'"G: ?/%1/P&$$)/!!$!'O'!"!'"/!4&G-$'%??%0L!G''B"G: ?'!""L!G''B"G-4O0!:
%"!1'B"!""!1-%/!)"<B0P%/!)"/>%')'''O'"-4&0P4/( !/"2'1%' $O00!"'!!LL15(&"!0P!4G'4"5 G&'0G'""G%":9!'!'!00P&/'"%'01%(!0/$%3 G/"P"G1&0"@%/!)"<M!"- %&"!"G1&0"G4/( !/!&$'!0!1%""O'KLK2%"F: /"%%)%'%G'5'?&&/%4G'@%/!)"/>%$&/1G)%5&'0G'""G%"%-?'(G3'A: '?':
A,9 %/!)"A%/!)"<6M! !/%5@G"5'!( !/!0PF@"!1P!:%/!)"A!K!%" )&?&/"/&"4"5 11!(%"! &(!')&P%"F-4/( !/K!'%!/"!'0/30'1%"!/$:?/&0/1&5 10(4"@1!0G/1!0@!'!B"1%(!'?"-&L@!"31&/!?/!!"G)%5@G": !"%!( &(!11!(%"! &(!M/?O' !"%!0B" !O'"-$2)'@!0P!/F 4G'":$!'4G'5G/&L@!"31&"/!?/!!"G'5("&!/!!""!1!''%1!/%!- !0P!/F!1!01&(@-1%'P!'"&"/'G"%:1!0@!'!B"@!'!"2!LL&)!?)%5% 'H?': 1!0 %'G0B"G- !"B"IL"/"!KKK!/!"O'!/O'?)&'"L$!'4G'5-!!?/1"!/!%" L%&P&!/!"!KK""15(&B"4"@: D:GL/G%/!)"A$!'?B"!-%''!" !L"/)%5!/!?!'G"4"5:
8
-4/( !/G'"'"G1&0"&""$3)%5"4/( !//!'!' 0!"! "!"%&?"%1G'% %0P!%1%(!- "!'@!B"1P/(!L!:"@ "@!'!"%-4&0P&?"%1G'%!!"L!*,H*/(>/!L /!L"/)"%&,P!/I /"!0!!/!"O'&'0G'@% %''1G0/$%34/( !/4!/!2%0P!%"V"!4G"1 G"104/( !/?! $&0(%&":''!!2!!"L! !"L!-4!"4/( !/?!0!%!1"!%'!4!"2 -% %/!)"<?! O0!$3)%5"&$" !/! /!!L%"&B"%-&1&'P"!'@!B"1P !"!00!':&/ &/0/$%3 &'0G'""G&"*,H*/(>/ >/!13'"%&,P!/IPJ@"@: %"GL/G/5'%'G"%-* *,4/( !/"2' "!'@!!$O00!"'!O'PJ@"&'0G &'0G'""G":+'"'GL!"'!4!"20!""!"!'%)'&/4 4G'@G:
A 9,. . Z, "/L!'%1&(!''?/%1%"B !L2'?O'$!':?/%1%"B !0P!0P!/F !/F"/L!'%'"-1!'P %/!)"<ML!1%(!"/L 'P!0L!1!0@!'!B"$!'(& !'(&'0&G%!0P0!: %(!?/%1%"B L%&P&G1J?&"" ""' 1!0( 4G/&1(%1!%5"/L!:%/!) %/!)"<!!!" !/"!E!!! !%:4G/&1(%1!%5 %'G03 G031%(!&L@!"31 02&/&&'P("$&'P1& &/?!2(%'!-1!'P! !/"!E!&/&"G""G/&'@G4& 4&G@3"/"&5 %$&/1G)%5'!0PO"": !0(4"5?/%1%"B "B?3-1!'P%$&/1G)%5"(M-4 -4&0P!0P! !/"!E! 1!0@!'!B"!'2""1!0( 1%'P!?)&'"L !0P !0P1G': %/!)"<K !"!2?/%1 /%1%"B "B?3&"4G'@
&"'%"L!1! 1!2("$&'P11%(! !/"!E!O'KG''5?&""@!'!% '!%1!0-!0P! ?&"&"!'@!!$O0 $O00!"'!!!0P1G"5':?/%1%"B "B?3K !"!2?/%1 ?/%1%"B !!"0!!/G'@ H %: !/"!E%?3"("$&'P1&-7[%[I:
&''%" !/"! !/"!E!!"?G/&""!%"%:1!0@!'!B"&/G! !0P!?G/&"0@% 1%"!0P!! & 0?&"@%@!'!!1!0:!'!"!2?/%1%"B ! : !/"!E!G1?G/&!''4&0P'!0P! \6:
M&/&" "!'2LL%?!)%G'%!!"!$!'"!O-4&0P&1(& !01!! ?)&'5(5:?/ ?/%1%"B !
*G/&1K0M'%" !/"!E!!"4G/1G '"!%"@O-1%"!0PM!0PO'KG''5 G''54G/&1K0)J)%": '!0G'"'G&L &LL4G'"?/%1%"B "B?34G/&1(%1!%51&(!''! ''!1!0@!'!B"!&/G- 4%!!1""!'! !'!$!'!11%'P!!'2%1!/!"!"4G/&1K0!KK""%?) ?)&'"&/5':!'2G''5
C
?/%1%"B ! )J)&G'"'1!04"G/&&"" 4G/&1K0!:
*G/&1K0M&/&"!0P1G"K !"24G/&1K0!!'!KK'O-K !"!2 &/&"G''!'2
&L@!"31&1!0@!'!B"!&/&L@!"31&"'&"51%(!?/%1%"B 1%(! !/"!E!0P 1!04"G/&&""'?&/&"&"!'' 0/!4@"%-1!'P!%0!'!!0P!/FB" !'P!0!4G/&1(%1!5 "/L!1!0(&"")J)?&"&'!?!!?!/P2B@G/:J:1!0@!'!B"%$3"5'0H/!(!/%0 ?%?!'%!I:!'! !3"'/G-4&0P!0P"KLL'?)2-!0P1G/?O'2'?!L2'G''5$&'P1"/5' 5: %/!)"A1F !'!"!!"4G/&1$2)&?&/"/L&"@: &"!!!"13""&1L!$&'P1"'?!%
O00!'L!"'G'4"5GL/G%'G"4"5: ,. !'2&?)%&G'%X&/O0!-4J:10LL/!(F?/%1%"B !1!0@!'!B"!O0!- 4/( !/"G1&0"@!"$3)%5":%/!)"<C10LL/!(F?/%1%"B !")&?&/"@G""G1&0"@
M")4!/!(!"%1&(!''$!'O'!"%"3'@(&G0%"4% "&""@ B"%J0P-4&0P!44!!11%'P!?'3 %$&/1G)%5/%)O0:%/!)"A !/"!E!L!1!0(&""?&B)%5$!'O'!"%&/1G'%&("% '?@G?/%1%"B !4!!0PM!0P?")4M!"0!!/G'-1!'P!""G4G/&1K0!/!L&":
M")4 !/"!E!!"&"/&''?&"&"!%"@O-1!0(@3-4&0PG''@&!'2%1$!'O'!"!! &"/&''?&"&'?@G:$!'O'!"?&"@%L%&P&$O00 P!J'P&&""K!0!"G''!'2-1!'P! ?/1"!/!%&"/&''?&"&:!LG%$O00 P!: %(!$!'O'!"!"LG%$O00 P!"B?3 '0!L/%$&G14"G/&1!0: %(""3'@(&G0%/!)"A!31!/G)%5"B?3%!/!"O'(4"5 1!0XLG%$O00 P!%!/-M?'%!%"!/?&'G'5"B?3J:$!'O'!"!1G&(M-4/1(M- !0P!(/!(F!'!4!"!:
%%(3'G%?/%1%"B !"!4G"!&/%30PJ0P 1!0( -1%"&/1G'!!"L!HG'"'GL 4G/&1K0!"I:LL!L?/%1%"B !4!"/"&5&"/&''?&"&0!!/G'G"K/"%-1@( !'!"!!""?/%1%"B 4G/&1K0!B"!K !"!%: < ], 1G&(%L!0P!)J)?&"&&/"!'1!!""1F !'!"!'!! 0/!4@" :! 1F !'!"!K !"!2
,+ .+- +Z %(! !/"!E4!4&G/!(!'O4G'"1!0 %'G0B"G%15('?@GG1B"&""B/"!"-!44! ?!(%0 !/"!E!!&&/(%G"M"/$/&1G)%5"4@"3 0/!:&/"&L@!"31'&G'% &&/(%G"/!(!/L2' !"B"%0J'&&/(%G"/!(!/L!"/$&/1G'@3?&"&":"/$&/1G)%5 !1K !"'!-!0P!G''&1G&K !"!2
&(!''M"/H &(!'?)!I %(!&L@!"31?&"@%&L@!"31@G"&&/(%G"/!(!/L!(&"": %%(3'G%G''?&":
9!'!!"M"/HY&/'(?)!I!0P!&L@!"31&@!'!!"M"/L!!0P1G4&?!" "/$&/1G' -"!4G"&'P&&/(%G"/!(!//!"/OG"-1!'P4G/&1(%1!%5 %'G031%(! &L@!"31G/ !0'&LG'%:!"!'/2"/$&/1G)%5" 021G"/%E%/&('&1LY&/'(1"/%E
D7
!%1!/":"/$&/1G)%5!0P!&L@!"31&$&/0"GG"-G'GGG"-!'"&'GG"%10GL $&0''4"@:
!"%"/H%!>?)!I2?&"L!G''B"G&L@!"31&0'&LG'%&&/(%G"M/!(!/L!: ?&"-4&1!0$%0P!'2'G"@4G/&1(%1!%5@!'!!"O!"-!/"!"0P/! !% 1!/"/!H1!/?)!I%:"/$&/1G)%51G"/%E!"%1G"/%EH%!>1"/%EI-1!'P /!(!/%"$&/0"G"!'"&'G"B/'!:
!"B"%"/H/&@!)"%&?)!I!0P!?&"&""%0J'GL(@1!0: !"B"%1G"/%EH/&@!)"%& 1"/%EIG'GG" 0!&L@!"31&&4G'" !"B"%15(1!0$!'!'2!:
&&/(%G"M'!?!!3"&'5!'!1!?!/P2B@G/H)/!!?)!I"K/"2'!?!-1!'P) 2LL"K/"%1!0:
,,+,.+H,, I &''?&'H%''!" !!!!"1!04"G/&5 !/"!E!!'I-1!'P!(&""?/1"!/!1!''!"" !1'G"4"5-$!'!'!0!"& GLL%G1B"G&" 0!%:'?/"!'1!!/%"&'?&'!!!'(&L - 1!'P! !/"!E!%!&//!(@!5/13""5@G/GG '!''!""!K/O'@G/G%%/GP"4"G/&1!0: &"&-4&0P '?!'"G &'B"G!1 !/"!E!L!"G/&'"&/1G'%&'?@G"K/"%-4!1(&""4G/&1K0!" "/"'15B&/1G' !"&/G" !O'?3':?!(%0 !/"!E!?&B)%5@GL5'KP!?4"54G/&1K0 B@G/1!/2'!0! !"&/LG/1!'P"-'%!G/%$O00!"'!' !"&/ !"&/%G'%&/""G''!'2:3"G 1!04"G/&3'?&/1G'%2?&"L13""5 !"&/K0"H" !"&/'G/%&/"K0 &%3G"(@1!0I:*!"&1?K0H'G/%&/"!0"B I-'?!'(&L4"5:'?!'"G &'B"G15(@ 3'' &(!L!G''B"GL(4"51!0HL!G''B"G&'""%""%"& GLL%L%1!0@!'!B"4!'"/!4&&"" ! %)!&L@!"31!(!/""!(""0@GL'! 2L!G''B"G&"$&0&1/"!%I:!'!4!"0!/"!% &! !1(&L3!'!0P!"'!'?&"!1: '&)Y%! &"'?&""!%"@O!'O'2'?&- 1!'P! !/"!E!%!&//!(@!5/13""5 @G/GG '1!0!0P!2K/O'@G/G%%/GP"(1!0: &3"!/'&)Y%! &"'?&""!%"@O!'O'2'?&- 1!'P! !/"!E!%!&//!(@!5/13""5 @G/GG '!''!""!K/O'@G/G%%/GP"(1!0:
+ + ,*+,Z+ Z., G0G"@!'!"%-4&0P1!04"G/&3?/%1%"B !L%&P&4"G/&'5B&&L!'O'!2/"-B O' !2/"?!(%0!'40P@3:4"G/ &'1!"J@ !/"!E!$&0!'!"!%:J@ !/"!EL!$!'O'!"% &/1G'%-"!E"J/&&/(%G"G-B("&1!"!""!01!!'! 2" !/"!E/"!%KK""% %"!/?&'G)%5 'G''!'2: $!'4G'5@G" G05B&"0P!0PO""4"5 !0B"0 !'(4"@1!0-1!'PB 'J'!B/GG""/@X !"&/B/1!/2'!0!:S!!4" $!'4G'5% G05B(!$%%G'4"5:
,*+,+. ^,+ !'2LL%!!/%"% G0G"4@"@3 0/!!"%0J'B@%/:
DD
* +
!((%0%"/$&/1G)%5!' 0!3"G !/"!E!4&1&0 &&/(%G"G'(&"""/L!'% ?&"&-1!'P!J:&%G'"!"%"/L!H'P!0L!!0P"0'"!"'J"//L!I4!'P!!(!!': 0P%K !"!2"!'@!O'!
4&1&0&"G- 0P%&1?&!!'"K/"2&"G!' 0!3"G&%G'"!"% &&/(%G"G/K !"!2"!'@!O'!
Y,
!0PO/!-4&0P !/"!E!!!?&"&101%(%0"/L!'%?&"&:4&1&0&"G3"G "K/"%1!0 !/"!E!'!?!!BL-&/1'%G'"4G/&1(%1!%5"/L!'%&&/(%G"G4& ?!/P2"(%1!%5B@G/"!'1!!""?&"&"/!(!'O:1!0@!'!B"%"!/O'!"G'"'(!$%%G'""!/O'!"!" &&/(%G""/$&/1G)%5!'22'?!%4!4&'5%"T"/!U! !%V!"/$&/1G)%5 '?'1G/!1'B"!""?!/P2"/H)/!!?)!I:'!?!"J: %!>?&/"(!$%%G'@: %!>?&/" ?!/P2B@G!0P"0''?'J"/"&1GP-1!'P1!0@!'!B""&/'G"&!0P/"BL- 1G/"1'P0!"%&/'G"& %"!/ ''31!0P//!: '?/"!'1!!/%" %!>?&/""!'@!?!/P2"!/!"H1!0@!'!B"4!/!(!'!/!G''5"!'@! "!/O'!"!"I"!'@!1'P0%"/"&1GP"4G'@:''1G %&"!"15(&B"4"@-K !"!2 ("&1!0(GG '
<- &&/(%G"G %!>?&/"L'$!'2/G&&/(%G"G%"!/O'!"!L'$!'2/G4& ?!"-1!'P!1!0@!'!B""K/"%:
'!0-10G0HY%("4-*!%04"I:
%- E1'P0%""&1GP"4"G/&1!0:!/"!"!4G"!1&/GLL'G"&"" G05B&4&?)&'5(-4!1M?3$$!/L!'! 2- ML!!2/"!!0P !"# #%"!/ ''31/'!!'!?! !:'?/"!'1!!/%" !"#/"!7- #/"!D- !&/"!'@!1'P0%"/"&1GP%'!4G' :*?': !"# # -1%(!&L@!"31 4G""/L!$&0!/O'%: %/!)"AK !"!21G"/%E&"4G'@ %!>?&/"'!?!4! %!&'( )*!+'& ( $ # !"# , %!&'( )*!+'& ( !"#
.
1G"/%E!' 0% !/"!E!&&/(%G"G%G'GGG" %!>?&/"1/!"!1'P0%"/"&1GP 1!0$!'!'2!-!'"&'@)J)?&"&"1!0$!'!'2?&B)%5L:
D6
<, ], $3"5'04/1(%'?&/&"1G/ %!>?&/"'!?!3"G?&""?%E!'!!"(&'0&$!' !0P!":
*+ S ,. """K/"%!0P! !/"!E!4!G1B"&""B/"!KK""% G'"&G%"!%"G1!04"G/&G-1!'P O0!4G/&1K0!4!'P!B%"K'"4!:
+Z LL!'?L!&L@!"31&4&?!/P2?&"@%!0P 0!4'1G"/!(!'@O4&G:!4G" /"!/%G)%5&/G!'(2'-4&0P(&""?/%1%"B 4!1!'P%?%E!'!"/"&?!/P2:,!0"KLL!!"L! ?%E!'!'!0$!'@!LL!0P&L@!"314&/!(!'4!"24&G:%&"(K"%4!'P!"G''!'2-4?'(G3'L%&P& &L@!"31&KK'!% :%/!)"A%'P!!!"!L!J:$!'2ML'H"&?M'!$"I%"K'"%& !)%5" ''1: %(!?%E!'!!"L!K??&"@'?@G4&3(K"": %(!?%E!'K??&"@!0 &&/(%G"G'/!(!'!%:& !)%5! "&?"-4&0P B%"!&!!"L' ''! 2?%E!'!-%''!" !$O002'!0!&!!"$!'2?%E!'!&/'!!&L@!"31?&"@%-4 !!?%E!'!K??&"@&L@!"31&L!'O' - 0P&L@!"31'!K??&"&4'(G":& @&LL-%''!" !'5 0??&"1G/!1'!&L@!"31?&"@-4'??!?%E!'K??&"@G4'( !/!"O':"&?M'!$"LG'P'P!0"4G/&1K0!/"!/%G)%5@G!/!"O' %0G'@31!0: '!"%GL/G""0''?'G"4"5-1!'P!30P&'?%E!'!!'!/O'!%"K'"/!:L'&'('% "0''?!!"L!%)O0"&?M'!$"LG'P/-1% !'1%(!?%E!'K??&"@?&"&!0P 4G/&1K0KL!'O'!%-B0PGL/G'! 20P4G/&1K01%(!0P%4!"M"?%E!'$&0"/"&%:@&LL &'('%!!"L!H!'"&'"3!'2LL%"0''?&"$'?%E!''!'ILG'P/"!'1L!!0P!4G/&1K0!4! 5/13""5@G/G!/%"%&//!(L!/!(/!0P-!""2-!0P-!0P?%E!'$&0"/"&%:
!
SSS ,H , , I 3?!/1?'%0'%1B"G%!'@G/G0P&/'"L!'"!/@!("?!)%G'%!!"!: %(!?%E!'"!'1'!"%%"! "& GLL%'?%E!'!/!L&"3H?':0P!/!1%" G"!'!!!"1%(!?%E!'4!0P'?%E!'$&0"/"&%I: !/!(!"%3?!/1?'%0&)!?)%5 '!''!""L! %&"!1G1B"@31%(!'?%E!'4!J@/B-
DA
"!E"J/"L:/"!!":!0P!3L?%E!'!4!"/"&51'P0/"!!"K!4&'B"@3:'%1B"G") &&4!'P!! 0!O!'-4&'!!!1!0P!!H!30P%"@!'!"%-4&0P!0P'4!/"OI:
SM
H* I &L@!"31&B"1!/G"5' !"""G &'G0K !!( !'!0P!'!"!!!0P1!04"G/&&""B!' 1&3K!H!K(B!I:K(M!$$!"3&?%E!'! &1?&!!%"L!$&'PG&'@G: ,!0P!&L@!"31B!L@!)"&'&/-K(B! &0&'&/:O0 10!0P?/1"!//!-1!'P 1!04"G/&-4&0P&L@!"31&B!1%'P!15(& G'"&&"G &'G0K !' !':,!0P!!!! !
&0 )"&/:&/K(G'"'!'/"!$$!"3G'"'G&K !"!2
/0123456768/01234567689:6;:<3468=>:6;:<3468?9:6;56768:
K(M!$$!"3&G1B"G&/'? !"2!"'!4!"20 &0 )"&/?/1"!//"!!0P! !/"!E!4!!/O'%G1B"G/H!&//"!/%G)%5&/GKLO'2?%E!'!/!%"!/?&'G)%5$&0"K/"%I- %''!" !1%(!!0P!?%E!'4!J@/G1&'@3H!"L'!$&0 !%%1!/!"!I:G1B"G&'? !"2! 1%("!!"L!30P&: &0 )"&//"!%4G/&1$'!??!!/O'4!"!%G1B"G/
,%!G/%(&""""G &'G0/"-@ A : &0 )"&//"!!!@ A %"!/ ''31&L!'O' '%!G/%$O00 P"K !" !$&0 G'"&% E @ B=? C=A ?=A @ ?D F@ A G A
E?&!)%G'%+'"'GL!!'15(!//!'"!/1!"!!LLBG"1!!"/4!"2!': &0 )"&/ G"1!!""!0P(&""F/F0%?/1"!/- &0!%"P%L!$&'PG&'@:LL!!!"L! &0 )"&/ /"!%K !"!2$O00 P!/%"!/O'!%G1B"G/B=? * HI : 0P!"!!E?&!)%G'%!'2LL%4!4&'5-(!B=? * =HI? :
'?/"!'1!!/%"G1B"G&L!/!?'2/"!(&""?%E!'M&&/(%G"G@GL&'J"/"! H!"%"/L!I:J:"G &'G0%K(H/0!$&0I!!" %&"1!/?&B)%5?%E!'"G &'G0'!:
,*+,++ Z_,HI %!>?&/"1!''!""1!0(4"5!0P"0''?'J"!/O'!"-1!'P/!%/!)"A%"'!4"G/&'G" 0!: G05"0''?!0P!)"0'!"/3"J/-"!4G"/!(!/%"L'$!'2/G '1/!"!% !'(@31!0: 1/!"!!1'!4!"0P&LL-1%"1!0@!'!B"%$!'O'!"- %&"1!04'(4"@ %!>?&/"1/!"":*L' $!'2/&&&/(%G"G%J*B&-KLMH1!0@!'!B"%"!/O'!"L'$!'2/G4& %&PB" IX"0''?1/!"!% ?!(%0%!&')*!+'&-&/)%&/"!"?&"&&/%!/!!0P, -?%E!'!!"-4 J*B& , E J*B& %!&'- KLM - E KLM )*!+'&:
'!4"G/&'G)%&/!"L'!L!G''B"G'/4!"2-%''!" !"%'"4"5'!X G05"0''?! %)! )%&/!)"0'!(""0@GL(4"51!0:
,* 1!P%L!4/( !/!""G1&0"@''1GL!G''B"G!"!'2B/@-1%(!?%E!''?4M )"&/G@G/""!0P"!"! !"@O'G:"!"K!4&'B"@?%E!''?4M/""HNM'I!0PJ: /!$!/!)%/"!'HO*B*O*"*I:?%E!')&/ !/""& GLL%'?!L!-4!"!"%!/! !/!(1P"( %:0PL"%/!)"A?%E!'"!'(&L@:
DN
'?4"!"'!4!"0!K!4&'B"5$O00 P!%&1?/!!31!/G)%5L 1!0( '>P
/!$!/!)%/""2'$O00!"'!O'"!" %!/!'! ?%E!'G"1!0P"!"!-4NM' O*B*O*"*: ?%E!'G"1!0P"!"!-4NM' G O*B*O*"*: ?%E!'G"1!0P"!"!-4NM' P O*B*O*"*: ?%E!'G"1!0P"!"!-4NM' E O*B*O*"*: ?%E!'G"1!0P"!"!-4NM' O*B*O*"*: ?%E!'&4!11!0PG""!"! ?%E!'G"1!0P"!"!-4NM' Q O*B*O*"*:
`3' /!"!/ /!"!/`3' ,! ,!`3' ! !/ &"`3'
/!$!/!)%/"-K!4&'B"G%$O00 P"!"%!/!0!1!04"G/&GK !"!2 L!G''B"G&&!/!"O' G'"&""4"51!0 " '?4!"L'! '?4 3)"%&
"/3!-$'! &1?/!/"!%
!$!/!)!'?4
a7-6;;b %"!/ ''31L
# $% $& "!"!0!('P!! K!4&'B"G" 02$O00 P: 7"!'@!!G"'G"5-6;; "!'@!!G"'G""' 1!0$!'!'2@!:
, 1'P0%?3$$!/HM?3$$!/-%''!" !YM?3$$!/I%/!)"A&$3)%5%""G1&0"@-1!'P!L!!0P! &L@!"31&"/G% %&P%"!'' %0G'%:M?3$$!/H!44!?)&'5(5"!)%'?3$$!/I!0P&$$M)/!! $!'O'!"-1!'P'?&G%'G)L'! 24G"5?3$$!/!4!4&4"5'"/!:3"&1"%3'"/!4&G! %)! '"/!4&G&//!!"/1!"!/"/3"J/L!G''B"G%L/4!"2-K !"!2??! presentParameters.EnableAutoDepthStencil = true; presentParameters.AutoDepthStencilFormat = [...];
1'P0%?3$$!/1!0@!'!B"%$!'O'!"1%(!?%E!'4!!0P1'P0%/"!""G/&'H1!'P%!0O'4!" !0P"!)%'/"!'%I:M?3$$!/"G1&0"G'"K/"21!0@!'!B"K !"!2??!"K/"% D:
1'P0%?3$$!/L!1%(!?%E!'4!1E%1G'%1'P0%/"!""G/&'@3!':
6:
4&0P/"!/%G)%5!'2G''B"@?%E!'!!"-"!"!'"4@"3 0/!-1!'P'P!0L!!0P K!4&'B"G-G/)'?4"!"!'':1!P%L!K!4&'B"G%$O00 PJ0PB"'% 1!0-4&0P"3G'%?%E!'K!'!LL 2?&"4&-&/1'P0%/"""G/&'@3!' ?3$$!/1!0$!'!'2?&B)%5@GL:
D;
M?3$$!/4G'"G'!00P&LL4G"/GP&/ G'%'G"4"5 G-4?!/?!"% %3 !"B"" ''13-%)%1'P0%/"!1!''!"":&/?!/?!"% %3/K %(O'1%""&L@!"31&0P/! 1'P0%"/"&1GP!0P%/L!!/O'-1%'G"4"5G0%?/&L'1G"&&4":4!'P!"&/ &&'4"5K!'% "G &'% G0&B&!0P1G4&K!'B" !'- '1%"4K!'% G05B&"&'P"G &'"/"@32?&""5'- 1!P%/!)'!4!"H"!'@!1'P0%"/"&1GP!0P%!LL"/L!'%"/"&1GP$&01!0$!'!'%I: "!'@!1!0&'(G"30P&/YM?3$$!/!'@!'!"4!"%:&/J:4&1&0/!)%?/&1'P0%/"!!" 4G'3-1'P0%?3$$!/L!'J/"!!/O'!:'!4!"2 "!%1'P0%/"! !0P!'!"!!'&'GG""!'@!1'P0%"/"&1GP&: 1'P0%"!"!'4!K !"!2L!G''B"G&"/"& " # $% $& 3$$!/L'! "/3!-$'! 1'P0%"!" !0!('P!!-'!"%'"G: 3$$!/ 3)"%& &1?/!/"!% S!4&'B"G15(@ 3$$!/Y/%"!L'! "/3!-$'! M?3$$!/L!"K/"2B/G !0!('P!!-"%'"G: *&'!4!"/'!0!! G"'G"5&L@!"31& 1!0@!'!B"': !Y3$$!/ "/3!-$'! YM?3$$!/!' !0!('P!!-"%'"G:
, "!)%'"!"!0B"0 !'?&""?%E!'!"!"2'!0!!!'(&L4"51'P0%"!"!/!(1P! "!)%'?3$$!/L!"G/&'"/"$O00 PL!:"!"!'1!!"L!/" !"!)%'?3$$!/"3G'%/"!- !0P/!$!/!)%"!)%'/"HK!4&'B"G&'?@I-%''!" !J:"!)%'1:"!"!'1!!"! K !"!2 D: 6: A:
%"!"%1F !'!"/!$!/!)%/""!)%'1KK"": %"!"%1F !'!""!)%'?3$$!//"!"!)%'1KK"": D:6:!/!(1P!K!4&'B"G(&""$O00 P!0B"0 !':
"!)%'1"1&(@1!0-/"!1!'PL%"@!% !0P!!/"K!4&'B"GL: "!)%'?3$$!//"!%K !"!24G/&1!!" '1!'P%!L!K !"!"!&/G1B"5(J@/
'!03"5LL%"!)%'"!"!0"B G'"(&"": "!)%'"!"%!/! &'"-(!1'P0%"!"%!/"!'!: "!)%'"!"1'P0%"!"%%!/! &'":
%(4G/&1!!"4!O'K1!04"G/&4"5-?3$$!/L!'! 2"3G'%/"!0B"0 !'4&0PG''@& !'2J@"!)%'/":'!4!"20!!""!)%'?!/"%&$!'&/&'G"/"'1 )/!1!"
J@"!)%'/"?3$$!//"! K !' !'G''!'2:1E%131 !'/!&/"J')&/(3'G1/"!'! J@/": !'2LL%4!4&'5-(!G1B"G!1 %(3'J@/1%%1G'%/""2': J@/"?3$$!/"/"'1G L%"!"%!0G'"@'!:
)/!1!""3/"%& !/"
D=
!!? !)/!1!"
?3$$!/"/"'1!1 G'"&%: J@"!)%'/"?3$$!//"! )K!" !'G''!'2:1%%131H7I !'/!&//"$!'24"G/L5''! 1!04"G/& : !'2LL%4!4&'5-(!G1B"G!1 %(3'J@/1E%1G'%/""2': J@"!)%'/"/!$!/!)%/"! '!: J@/"7'!:
!)/!1!""3/"%& !?')! !/&
"!)%'"!"4!K !"!2L!G''B"G&/4!"2!'H"&'('%"!"!'L!G''B"G!!1%"G@G/ "K/"%-!/"&"!1&/&'"1$!'I "!)%'L'!
/"! "/3!-$'!
"!)%' 3)"%& !$!/!)!"!)%'
&1?/!/"!% (@RIA ML2'-!0
"!)%' "!)%' %'
(@RIA ML2'-!0 "!)%'?!/"%&/"!%
"!)%'3$$!/ %'
"!)%'?!/"%&/"!%
"!)%'
"!)%'?!/"%&/"!%
"!)%'Y/%"!
(@RIA ML2'-!0
>&%(!("!)%' &(!
"/3!-$'!
DQ
!0@!0P "!)%'"!" !0!('P!!-'!"%'"G: S!4&'B"G15(@ STU2?3$$!/1/!"! L%"!L!: J@/"!'2G''B"G% 15(@-4'!03"5LL% "!)%'"!"!0"B G'"(&"": J@/"!'2G''B"G% 15(@-4"!)%'"!" %!/! &'"-(! 1'P0%"!"%!/"!'!: J@/"!'2G''B"G% 15(@-4"!)%'"!" 1'P0%"!"% %!/! &'": "P'!0!!?3$$!/L! B/"("&" &/'G"&4"@: ?/%1%"B !1%(" &'('G/ 0/!4@"4"@3 "!)%'"!"!":44! 4G"5'?M!'"G &'B"G"% !''?)&'3:
,*, 0P!//!1%(%0"?%E!''!'(&'0&3-!!!"$&//GM-%''!" !)'?%E!'!!"K!&1L%G'@3 '?4M)"&/G"G/&'"/"!%!!/!"O'-!0P(&""$O00 P!0B"0 !':0?&"&!'2K/" ?%E!'B"1&(3'G'@3!0P1!04"G/&&""HO'KMO'K G'"4"5I15(&-1@("B"G"(@3 &1L%G)%5" 02$O00 P!?/1"!/": VLWO* O@ +@ @ @ X*Y& OH +H H H VLWO* LWN&* B=O@ ? B=+@ ? B=@ ? B=@ ? X*Y& LWN&* '=OH ? '=+H ? '=H ? '=H ? ZN*"[*YWN& ZN*"\W"&!L"=VLWO* LWN&* X*Y& LWN&*? 1&(3'G)%5$"&/&'!(!31!/G)%5"0@%'!4!"!-10?!(%0K !"!2 '!( )"&/ '!( )"&/L!G''B"GL1!0(&""B &1?&!!%" !OO] +] ] ] '!( )"&/ '!( )"&/L!G''B"GL1!0(&""B % !/!&1?&!!%'&"@G 1&(3'G)%5$"&/" O] +] ] ] &3/)!&'&/ $&//G?%E!'B !'1&(3'G'3 O@ +@ @ @ &3/)!&'&/ $"&/$&//G?%E!'B!% !/" "/"'1 O@ +@ @ @ &3/)!'?4 1&(3'G)%5$"&/"$&//G?%E!''?4M )"&/G@G/" !'"K'"@O$!' @ @ @ @ : &3/)!'?4 1&(3'G)%5$"&/"$&//G?%E!''?4M )"&/G@G% !/"G'"/" !'"K'"@O $!' @ @ @ @ : &3/)!'?4" 1&(3'G)%5$"&/&1?&!!%" $&//G?%E!''?4M)"&/G@G /" !'- 0P)'?%E!''?4M /"!% !/ !'"K'"@O$!' B B B B^ B _!"=@ >H ? &"4 &3/)!'?4 $&//G/G''B"4"5L!-)'?%E!' 1&(3'G)%5L!G''B"GG"%$!'O'B/@: $"&/&/!(/! @ @ @ @ X@ @ @ @ : &"4&3/)!'?4 *&'5!'224K-/"! $&/(B"&"": !"%"%&&'&/ %"&3/)!&'&/-(!)'?%E!' B/"!% !'OH +H H H !"%"%&&'&/ %" &3/)!&'&/-(!)'?%E!' B/"!% !' OH +H H H D8
%"&3/)!'?4-(!)'?%E!''?4M /"!% !'H H H H : %" &3/)!'?4-(!)'?%E!''?4M /"!% !' H H H H : 1&(3'G)%5$"&/)3?D &1?&!!'!: 1&(3'G)%5$"&/)3?7 &1?&!!'!:
!"%"%&'?4 !"%"%&'?4
! !/&
"P'!0!&1L%G)%5" 02$O00 P!!"'!(?!/"%&$!'&/&'G(@1!0:!'!B/GGLY- ?/1"!/! B/"!!"@!'K'!H0P&/'"%'00P(%1!%5 !"&/&"I:!0P!1F !'!"! B&1?&!!/!O'KMO'K /"!'1! !: (( `=Y ? Y : E =Y ? _=Y ?: % !"=Y ? _!"=Y ?: ! 3L"/)" [*VW&O&=Y ? > Y: 3L"/)" VW&O&=Y ? Y> : '?4L'!(%01FK("L!$&'PG&'5L!G''B"G&K !"!2 " # $% $& '?4'!(L'! "/3!-$'! '?4L'!(%0 !0!('P!!-"%'"G: '!(?!/"%& '!(?!/"%&/"!% &1L%G'5$O00 P: &3/)!'!( '!(/"!% $&//G?%E!'!B! 1&(3'G)%5@G/4G'" $"&/: !"%"%&'!( '!(/"!%-% ! )'?%E!'!B! 1&(3'G)%5@G/4G'" &"4&3/)!'?4 $"&/: &"4 &3/)!'?4 !?/"!'?4'!(L'!( "/3!-$'! L'!(%0%G/5'0 '?4)"&/G/'! !0!('P!!"":
*, %/!)"A!((%0?&"%01%(!?%E!'1F !'!"!" B!!' 0!-1!'PL!1%(!&1?&! '!0'GLL8L%"! '!"G/&' :1!0@!'!B"%$!'O'!"(!$%B)%5@GL %&"1!0(4"5&'P$&/1G"31%- 1!'P!0P!B)"&/G4&! !!LLL%"%$&/1G)%5""G/&':/"1%!'2""B%$&/1G)%5 1!0@!'!B"!(2$!'O'!"/!B/5(-%/!)"A!' 0%B1'P0O0!)K!"": %$&/1G)%5 !"!0L2'!/!(24%LG"'0&/%"13!0P!'!"!!?/5LG'@1!0!'&"%$!'O'!"!:
DC
,+ 1&"%4!'P!"L!K !"!2("&G''/!(!'!/!1%(!?%E!'4!1'P0M "!)%'/"-B:''1GL!$&'PG&'4"@-4&0P!!KO'1!'P!!/O'@!! 0O'1!0@!'!B"% $!'O'!"/!:LG'P&GJ:B/G%1&H>/%"!1I!0B"0 !'"K/"%-1!'P!K !"!2
"!)%'Y/%"! "1&(@1!0-4&0P1'P0%-%''!" !"!)%'/"!%!/O'@!!M!1!0@!'!B"% $!'O'!"4!"/"&51'P0%?3$$!/"!/O'!"/!:1'P0%"!"L!G''BG"$O00!"'!!""2'L!G''B"G"5'-B0P '!4!"20 //-4&0P1'P0%"!"&'P?%E!'!!"%!'(&L4&-1!'P!/!?3$$!//"!!1 G'"&&"":*1'P0%-%''!" !"!)%'?3$$!/B/G!0!('P!!""-&/"!)%'Y/%"! 4"G/& 1!0-4&0P?3$$!/1!'PL%"@!% G'"&"!"!&/G:
&'&/Y/%"!L'!B%$&/1G)%5O'KG''5B)"&/G%" G'"@%B/G/:1!0P 0P"KLL &'&/Y/%"!L'!$'0!""/"'1HK!!0P%'P!1(4"51!0-1!'P!KO' &'&/Y/%"!L'!DH6-AI1&"KLL1!0@!'!B"%$!'O'!"1!0'"!!!"4G'"&:*'?4 L'!(%0L!G''B"G&3/)!'!( 0P!"%"%&'!(/"!!/& 0P!/" L!G''B" -&/ 1!0@!'!B"%$!'O'!"B%$&/1G)%5@!1!/O'B/G/:1/"!4&'5! F!31!/G)%5L '! 2/"!L2'?B"4!"2$!'
!( /!! '3! '?4 !( /!!'3! !( /!!'3!'?4
K/KB)"&/: K'(B)"&/: B)"&/: '?4B)"&/: K/K-K'(B)"&/G: K/K-K'(-'?4B)"&/G:
3'"%1?'! !04"G/&-1!'P1%"G!/O'!B/G/-41!0@!'!B"%$!'O'!"4!"KLLK/K 1%" "!'! L!G''B" :1%:L%"@!%:1%"B/GG"!0!('P!%H/"!0G1" (4"51!0I:
< +9, + 4G/&1(%1!%51&(!''!-@!'!!"!1!0(GG'? !"2!"J"@ •
4G/&1(%1!%5 %'G03""!'@!!0L!!0B"0 !'-?/&0/15(@GL5'(!$%%G'@3:&/ %/!)"<G'"'L%"&B"&""("!/!!"!/!-@5'1!04"G/&&""M4B G&/40P"&4"3:" ! !%?/&)!(3/G'%1&(!''!!%:
•
G'"'G&LL1!0&'(G-4&0P@!'!!"!"!0P!//!)'/'"/!4&&""1&(!''!2&$" !//!'B"O!'- @!'!!"1%(!("G"?!(%0$G@'L1!"@O:1&(!''!!0P1G%''1G'%LG/1%&/ 1!0P%"4"5!0!((%0-1B0)'''1G%"G1&0"@1&(!''!2?/&0/1G'"'4G'" $&/1G"31&":@!'!"2!LL1&(!''!2&$" !/!0P&/'"%'01%(!!'"!/@!("-0/$%GL4G'"& $&/1G"31L?!!!E?&/"G'%:
%/!)"<G'"'"G1&0"&""$G@'$&/1G"31:<%"!/@!"!'/!(!'!2%/!)"<G''&1GP: $G@'$&/1G"31J0P'!""1!0'&" -4&0PK!$&"&LL-/!"%!(1&(!G'"'4G'"&L@!"31&""3(@ /!?/!!"G'%:K !"!2L!$G@'$&/1G"31'!0$&"&LL"3'@(&G0%"!1!'!1%-1@(G''&1GP $!'?B""%1!/"!"!1:
67
<+,, +
%/!)"AG'"'@!'!!"!'!B/GG/4G'"G''&1GP/!(!'!%K !"!2"3'@(&G0&' L'&M !/!'":G''&1GPL"G/&'"("&!/!!""J:"!1?'"!M!HL'&&I(!$%%G'@G: L'&&!0P/!?!)%$%G)%5@GL(&"":"!1?'"!M!&/"("&""/"'15 !'2$&/(3'G%"(")&15?&"H("&(!I! !O: 30'1:$!'4G'5(4"1!0@G""!1?'"!M!!"''1G%0P!%!1!0$!'!'2!: O00!"'!$!'4G'G%K/P!!""2': *%!//)4%3: %(!"!1?'"!"/"'14"J@LL"!1?'"!M!!"-"!"2'!0!1'P0%0: %/!)"<G''&1GP"%""%%'0$!'?B"2"!05/%G"
'L("11!0:::=@!'&/&" (!$%B)%5" !!"L!: G'"G%'!4!"20![opció1 | opció2]'L(&""-&?)%&G'%!'!1!!" (elem)?@!'K'%:*"!"2'!0!G1J-+'!0'GLL!0P!/%!'2$&/(3'G"@!'K'X?&"&(/L!'2$&/(3'G" (n)$&0@!'K'%:%"E%G'"'/K0B"!""3') "K"!'!2/"!/!!"%"G&"$'K /!!("!1: /"!'!1!/F"!05/%GH?':G1@!0PI(!$%B)%5%"!1("11!0: %(!%/!)"<G''&1GPK !"!2/!L2'G''$!@/-"!1?'"!M(!$%B)%5-(")&15?&"&: ::= [ | ]+
* %(!%/!)"<G''&1GPK"!'!2!!0P0P/L2'G''5L GP&$!@/!'!(2(%: %(0P /?&"&0P/"!/L2'G'':!'2"JB"@-4&0PG''&1GP"/"'1%/!)"< G''&1GP$&/1G"31G$!'!'1!0:K !"!2$G@'$&/1G"31 !/%5G1G""/"'1:4/1(%/" 4"G/&1!0-4&0PG''&1GP"/"'1!0P!/FK !0" 0PL%G/%$&/1GL 5(&' -%''!" ! "K1K/B"!"""/"'&1!!""K1K/B"%'0&/%"13"&&B"@:0O'!0P!(%/'!L!02?&"&G1& ?&"&G0G"B/@!'2:$!@/!0P!!'!1!%!'!4!"0!/"!%"K !"!2"GL'G""/"'1: "
# $% $&
+''&1GP&&B"5
E&$
!/%5G1
11
1@&/ !/%5-11%&/ !/%5:':7A76
/"'&15(&'G
"E"
0P!/FK !0-"/"'&1 "!%"4!"2/"!/! ("$&'P1:
L%
%G/%5(&'G-"/"'&1 LG@"&("$&'P1" !!'4!"2:
L%?
0%?
A6
A6L%"!H$'&"I?&"&G0:
,!L!02?&"&?/!)%%"G
6D
=N
=NL%"!H(&3L'!I ?&"&G0:
, "!1?'"!'!0%GLL10%"FP!' !"/3"J/G%4&4&'B"5!/!!":$G@'("% !/!!""(!$%%G'@-!0P!/1%(!0P!K!"/"&5("&")&?&/"&B"@: G'"'L%"&B"&""$G@'L!&' 5!14G'L!?B"!"""!1?'"!M'!"!"-4%! ''1G'!4!"20! @G""!1?'"!M!!"'"/!4&%:/"L!&' G!'2""1%(%0/!0%"/G'%!'' L!&' 5G1G/""!1?'"!M'!"!"-1!'PG''&1GPL!'2$&/(3': "!1?'"!$!'?B"! ::= template { * [ * | […] ] } ::= [ | <Számjegy> | _ ]* ::=
< (8) - (4) - (4) – (4) - (12) >
::=
(array [ [<Számjegy>+ | ] ])? ;
&&B"5!0P/"!/&/&"-1!'PL!"F !'!(2(%-L!"F!' 0PG1@!0P!!'- 0Pc /"!/!!'$&'P""5(4":!1!0P!4!"1!0%/!)"<G'"'1!04"G/&&""$&0''"&&B"5'-1!'P! %/!)"<"!1?'"!M!(""0@%"B?3G"@!'K'%:G'"'L%"&B"&""L!&' 5&&B"5L%M 0PL!"F!"!1O'KLK"!"%1!0: !0P4!E(!)%1G'%/"!/&/&"-1!'PY%(&>L4G'"& /"!!'&& $!'?B"F: /"!!/!"O'/%!'"!1?'"!M!!":*1!0 G'"&%"!1?'"!G'"''!B/" (""/3"J/-&/J@ M&"!''1!0(%:'P!15(&"!1?'"!M!!1(!$%%G'4"@G$!'O'!1 $!(4!"%!'!0P1G":.0PL%"&B"4"5-4&0P/!(!/1%(!"!1?'"!M!"!0P/"!'1F!"3(&&B"% !!/"!0B"0 !': %(!"!1?'"!3'' 0P"KLL(""0&""/"'1:"!1?'"!!1)(""0&G1G"-"B?3G" 4"G/&1!0-4!1!!&//!(@"%:"!1?'"!M!%1!/!"L!"!4G"%/!)"<G''&1GP!0P!/F! '%(G'4"5: (""0!0P L2'"B?31!0@!'K'L2'G'': %(!(""0"B?3'?"B?3-"K1L 0P!0P1G/ (!$%%G'""!1?'"!1!0@!'K'L2'G'':"K1LK!"%/!)"<G''&1GPLarray3')5 ' !!"@OL!- 1%""B?31!0@!'K'K !"-1@((""0! ! 0O'(%1!%51!0@!'K':K1LK"B?3LG/1!'P% '?"B?3 0P1G/(!$%%G'""!1?'"!M"B?3'!4!":"K1L4& G'"&5/K0B"!""%'!4!":G'"&5 4&JG0J"K1L(%1!%51!0@!'K'L!!0P1G/(!$%%G'"(""0! !!''4&0P!/!?!'@!: %/!)"<'?"B?3%K !"!2
BYTE!'2@!''O'%8L%"!!0
WORD:!'2@!''O'%D=L%"!!0
DWORD!'2@!''O'%A6L%"!!0
CHAR!'2@!'!8L%"!!0
66
SWORD!'2@!'!D=L%"!!0
INT!'2@!'!A6L%"!!0
FLOATA6L%"!'!L!02?&"&
STRING"/%0
"!1?'"!1!0(4"@&""!1?'"!M!!"%-1!'P!L!!L!G0P&"""!1?'"!M" !'2$&/(3'4":L!G0P&"""!1?'"!M!G1!/%"LG/1!'P%"!1?'"!K !"!24G/&1)&?&/" '1!'P%L!&/&'4"5
G/""!1?'"!4"!1?'"!!1(1!0L!G0P&"""!1?'"!M!/! &"&5'%"G"-&/ "!1?'"!!1"/"'14"%'P!!!":G/""!1?'"!M!"/"'1%!'''!0'GLL!0P(""0&":
FB"!""H/!"/%)"!(I"!1?'"!M/2'L!'O4"!1?'"!1!0(@L!G0P&"""!1?'"!M! &/"'%"G@G":
PB'""!1?'"!!!"LG/1%'P!-!'22'!0(!$%%G'""!1?'"!!/!?!'4!"L!G0P&"""!1?'"!M": &/"!1?'"!M'%"3"&'5!'!1!adb/"!/&/&":
Z 0P%/!)"<G''&1GP'!00P&LL/L!(")&15?&"& $!'&/&' !0P1G3"GX2"- '!0"KLLK/!0P1GL%G0P :)&15?&"&4%!//)4%G@K !"'!O'?!/!?/!!"G'% 4G/&1(%1!%5@!'!!"&L@!"31%4%!//)4%G@G"%-?!%OKLK'%!0P!2("&L5'!/!(2 /!(3(G$!'&/&'G":(")&15?&"G'"'G&'!B/G ::= ()? { [ | | ]+ } ::= { }
%(!(")&15?&"&""!1?'"!M!! !' !!"OL!-1!'P!(&"")&15?&" !0P&/"?'(GP:"K !"4!"%!0P!0P!(%&&B"5:)&15?&""/"'1ef/"!/!KK""G'': !/!!'!@(4"31!0!0P &&B"5"%-1!'P%G/5'0!")&15?&"&"H 1%(!')&15?&"@G"I$&0@&&B"%G''&1GP"& GLL%/L!:""2'!'"!%" !)&15?&" ("(!$%B)%5/!He1!0$!'!'2fG/5@!'!KK""%/I"/"'1"!1?'"!&/"(""0@%"- 1@(&?)%&G'%"!1?'"!G'"'1!0!0!(!""L!G0P&""("&": (""0&"!1?'"!(!$%B)%5@GL1!0(&""&//!(L!-!0P1G"5'?&"& !2 !'!' G'" K !"%!0P1G":"K1L!'!1!%!0P1G"5' !2 !' !' G'" : !G0P&""("'""K !"!24G/&1!'!1!"/"@OL!G0P&"")&15?&"-L%G/%(" /!$!/!)%: (&"")&15?&""!1?'"!M@!K !"'!O'1!04"G/&-1!'P"!1?'"!M!&/"?'(GP% $&/(3'4"!'2L!G0P&"")&15?&"":L!G0P&"")&15?&"&$!'?B"!1!0!0P!%$!'2%"! '! 2)&15?&"&$!'?B" !': %G/%("&&/%'!4!"!!0P%/!)"<G''&1GPL-410G''&1GP!0P!/FK !0" 5(&' :"!0P?!)%G'%"&!"!%'!4!"2 -1!'P!' G'"@K !0!("&"L%G/%("&"5': L!?B"!""L!&' 5%"!/$!%!//!$!' B" !: 0P)&15?&"')&15?&"@'!4!"!0P&'P/!$!/!)%%-1!'P!0P&/GLL1!0(&"")&15?&"/ 4% "&%:4% "&G"K/"4!" 0P '?@G:/!$!/!)%G"$&/1%'0ef/"!/!KK""(@3 1!0: ,G""3-4&0P%/!)"<G''&1GP30P&"!%"!"L!/30'1-(!'? !"2!10%/K0B"!""$&/1G" L%"&B"4G/&1(%1!%5 %'G0("%"G/&'GG4&:,G""3"%-4&0PG''&1GP"$!'?B"2
6A
(")&15?&"&!/!!"!/K0B"!"""!1?'"!M!G'"':/""!4G"!0G''&1GP'!B/4"5!0P 1!04"G/&&""!"%"G4'1!'!1!%! 0!&/&"":!!"!"%"G&""&!!!! !O: "&!&'P@!'&/&"G''&1GPL-1!'P!"$!'(&'0&G&/G!1L&"3"& GLL%/!/!: G''&1GP'? !"2!K !0! 0PL%G/%$&/1GLB/4"5'!: &"1!0 %0G'@3"'!4!"20!" G''&1GP"&!!/!L&"GG!1?&"@GL5' K !0!/!?/!!"G)%5!!""&!!4'1L%&P&3') L5'?!)%G'%/"!/!L2' G'':3') $!'(&'0&4"5G0G4&O0!-4&0P%'P!"&!!!"5K4"G/&'@: ?!)%G'%/"!/!!!"%'P!$!'""!'!/!%)O0-4%!2%!?/G"&/$3)%5" "K'"!!L!:3') $!'(&'0&G&/G%M0PL!"F!"!1"!%"@OO'KLK2!: %/!)"<ML!K !"!2 3') //P
$'&"
3'&0'&0
L%/P
'?"/
3%)&(!
L%/Pc/!&3/)!
(>&/(
)4/
"/%0
)"/%0
>&/(
(&3L'!
"!1?'"!
(>&/(
3)4/
&%( >&/(
L%G/%!!"L!1%(!"&!"!0P"%!4"L%"!/"&&B": !0%")")&?&/"/ &"4"@3"&!!!"!0P!/F"&!!1!''!"" &'P&%-1!'P!!"1!04"G/&&"" !0PL("&K !"!:!!"("&""&!/!&/(&! !O: !0P!/F"&!!@!'K'%!0P!3') "!' G'"5!/!?!"L!"K'"2/"!/!!": 3"5LL%"%?%3&'P&-4&0P!0PP%"5!0PG/5 G'"&"% L!'2'OH?':ef-abI:" ?G/&B"G"L%G/%"&!!K !"%- P%"5G/5"&!!: %G/%/!?/!!"G)%5!!"!?/G"&/&!/!?!)K!-30P%!&/("&1E%1G'%K!$O002 )&?&/"&L@!'!!1!0:'(G3'4 !0P(""/3"J/G-1!'P"KLL(""0L!0P!"4G/&1!0 G1&""G/&'-L%G/%5(&'GG'!"KLL(""0!0P!"'!-!0G1&L5'G''5'%"G"$&0'&"%: K !"!2L!K !0!GL/G&'GJG''&1GP&$!'(&'0&GG '$&0&$&0''&%-30P%!$&/1 @!'!"2!KPB"%'!B/"&L@!"31&("% %0G'"G"- '1%"L!13""GG"-1%"@3"4"3!' !!L2'("&L5'1!0@!'!B"!""'"%0:
6N
<M*Z ((%0//5' &'"5-1%'P!?!0!!'"G1&0"@%/!)"<M%/!)"A4G/&1(%1!%5&L@!"31& 1!0@!'!B"":!!"K !"!2&1?'!E$!'(""'!/!"1!1''"!"%-/L!%%!0B"!%(&"" 4G/&1(%1!%5@!'!!"!"'!B/5%/!)"<G''&1GP:'3@!'!!"1!0@!'!B"!1!0@!'!B"@!'!"2!LL ?/1"!/!%! '5%(!@F15(&B"G-?/1"!/!4"G%L!13""G: &$" !/!"$!'("&"K !"!20P'? !"2'?L!&'(@1!0 D:
&$" !/&1?&!!%%)%'%G'G,"/!!''4&%&"%/!)"<M%/!)"/>&L@!"31&"- 1!'P!''1G0/$%%$3)%5%'? !"2%$/"/3"J/G"&'0G'""@G-!!B O'$!'!'' B"!%''1G"0/$%%$3)%5%"!B 4G'"G/:
6:
4G/&1(%1!%5 %'G03&L@!"31%'"/!4&G%/!)"<G''&1GP$!'(&'0&G("& "/$&/1G)%5@%/!)"AL GP&/!"%!(1&(!&L@!"31%L:!"'!0&?"%1'%G)%5"%!'' 0!O1!0'! 2("&&:
A:
@!'!!"1!0@!'!B"!:
N:
1!0@!'!B"?/1"!/!%!15(&B"G:
(&'0&"4G"/'! 2/L!'P!0L!!"0P'?"K !"!1 0%0:!1!0$!'!'2!!'2K/" $&0&1L!13""%-4&0P!''!0P''1G"%/!)"<4G'"G/$!'B"!%: 1G&(%'?4!!0P@G"$G@'L!&' 5"B"!""!1-30P%%'P!15(&KP!LL!1!0"3(&113""% $G@'&L'!B/"("&'!?!!&/G$!'1!/O'2/$!'("&"-%''!" !%/!)"A&'P$3)%5%"%-1!'P! ! L(&31!"G'"- %&"!'0@!'!"2!44&-4&0P!0P%/!)"<HG'"'GL0/$%%"!/O'!"!(&'0&5I ?/&0/1&5"%"GL'!0P! !'O: $2LL?/1"!/! '5%(!@F15(&B"4"5G0G"&4"GG!1''"!""O'KK!$&"& "/"&""1$!@'!"&/G:/"?/1"!/!!0P!"!/O'!"!!/%"/!(!/! !-"KLL1&(3'&!/!"O' @!'!!1!0:!!B O'&$" !/L!13""@G''&1GP1!0@!'!B"!""&L@!"31&KK""%?)&'"&"%- G''&1GPL'! 24%!//)4%G"!1''"!"21&(3'&!0B"0 !':
<,+,+ ,G""3&/GLL-4&0P%/!)"A0/$%%$3)%5%'? !"2!%/!)"/>&'0G'""G%/?O'!:/" !11!0'!?2!%/!)"A%%)%'%G'G&/G%/!)"/>'?@%"'!B/5?&"L$!'&/&'"'?!KO'& % $&0KK%: 44&-4&0P!0P?/&0/1 0!(%/!)"<$3)%5%""3(@4G'%-1%(!??!'2K/'"/!!'' 4&%!0P! %)!&L@!"31&": ! %)!&L@!"31&"'? !"2!"$'!!/!?L!!'''G"3:'2K/%! %)!K!K"2?&) ''1GK!0/$%3!/2$&//GKK"":!!/2$&//G&"//!&"4"5 ,?&G%'G)&H>?)4%M!I''1GG'"'4G'"4G"5?3$$!/!"3G'%!'O'2?3$$!/ '&"@:! %)!'"/!4&G&/'"/!@K!0P'?/"!'1!!"">?)4%-!0P'?/"!'1!!""4G"5 ?3$$!//!'-1!'P!0PL!'?/"!'1!!""/!(!/"/0!"%:''1G%0P!/%"J@LL&$$)/!! $!'O'!"!!"/!(!/"/0!"$!'O'!"!!"(!$%%G'4"-$!'O'!"!!"'!/(!4!"%-%''!" !K !"'!O' 1!0(4"@-1!'P%$!'O'!"/!"K/"@!%/@&'G: !&3/)!&L@!"31&1%(!&'P!/2$&//G%(!"/"&%-1!'P!1K !"'!O'1!0@!'!B"/"$!'!': KK"3'@(&G0%P?!-&&'- &/1"-0!:!!"1%((&""&L@!"31'"/!4&G&/ 4"G/&31!0-/"O!1 G'"&""4"5!3"G: %(!0P%O/"!%$!'&/&'G&"B?3&L5' !/O'!%:
6;
P?!&L@!"31"P'!0!"!/1!""1&(@1!0:/"!%!&3/)!P?!!31!/G)%5L (&"":G13/$&"&!!KO'(!E3$$!/-!/"!E3$$!/-3/$)!!E"3/!: &&'"3'@(&G0&L@!"311!15/%L!'%!'4!'P!"%/!)"AG'"'%1!15/%L!'%!!'" 4"G/&1!0:'!4!"0!/"!!"4&'5! F$!'&/&'G&"B?3"/"'1 !$3'"
0!( P"!1 !1&/P )/")4
!/2$&//G)0/$%31!15/%GL'"!%: % !'&4 !1O'("%/5'1G&'"/!(!/1!15/%GL- ! %)!!' !"!&/!/2$&//G"J@/'"/!!''4&%: !/2$&//G!'2K//!(!/1!15/%GL@K'"/! O0!!"G"1G&'5(%0/$%31!15/%GL: !/2$&//G("%&4!1!/O'!G"0/$%3 1!15/%GL: !'2LL%4!4&'5-(!4/( !/?!0!%!1 @!'!"!!1!0K""'"/!4&G&/:&'P ?/1"!/!!'%'"/!4&4"5-1!'P!!"4/( !/!1 "G1&0":
&/1""3'@(&G0!/2$&//GG'"'"/"'1&""("&L%"%"F$!'L&"GG"(@1!0: 0!/"""KLL$'0!0P%(!@FG''B"GG '(4"@31!0:!L!G''B"G&'? !"2!"1&(@G 1!0-''1G4&0P$&0@4G'%!/2$&//G"H?'(G3'(%1%3 G'"&%M!!/2$&//GI: GK!'B"L2'! %)!$!'$&04"5J0P%-1%"&/GLL'!B/"1!0@!'!B"%$3"5'0L"/" /!?/!!"G)%5@?/&0/1L:0P%1%(!-1!0@!'!B"!'?)&'"&L!G''B"G!!&L@!"31& !/!"O'/4!"2!':1!0@!'!B"!0!L!G''B"G%0P/"!(!/""!(""0L K!0PF@" !- %!LL/L!?!(%0!0PL"3'@(&G0&1!"5(3&!0B"0 !'15(&B"4"5: %(!%/!)"<?/&0/1"/"'1%!''&'P'&0%G"-1!'P '1!P%0/$%3$3)%54G'" !'2""-?/&0/1%(3'G&/$3"'!-'"/!4&!0P&'P! %)!?'(GP"-1!'P''1G%0P!%!1!0$!'!': !K !"!2'?!L2'!''G''% D:
!'/4!"20/$%3%''!"2$!'(!/B"!:!''!/!-4&0P%/!)"<!0PL/)%5/"!04/( !/$K'K""- ! %)!1%(%0!0P(&""4/( !/!%''!"24KK"2( !@K'"/!:%%)%'%G)%5!'2'?!"!/" /K0B"!O!''-1!'P%0/$%34/( !/!'!1!/2$&//G%"$&0@4G'%: !0!''@!0P!O-4&0P4/( !/!%''!"2$&0'1!1&&0/$%3%''!"2G/"PG ': 1G/ G'"'G&-4&0P!0P!"'!G/"P"KLL1!0@!'!B"2"%?!1!04@"%HG'"'GL!0P!//!!""2"V!" ! !%(3'4!(1!0@!'!B"!I:&/%/!)"<G1G/")"'&5"O'K%''!"2"$&0 'G"%: !0!''@!0P!%"& GLLG-4&0P30P&%''!"24K?)&'5( "KLL! %)!%'"/!4&4"5:&/ %&"1%(30P&"!/2$&//G&"$&0@4G'%-@!'!"2!/&" "!'@!B"1P": 0/$%3%''!"2%/!)"<G1G/!0/"!!' @!'K' !:71%(%0'?/"!'1!!"" %''!"24K"/"&%: %/!)"<L%"&B"'!4!"20!"''1GG1G/-4&0P1!0 %0G'@!'/4!"2K!0/$%3 %''!"2":%/!)"A 0!/&"G'PG!/!"O'"!4!"21!0-1!'P!(?"!/! F&''!)%5@ "/"'1K!%''!"2"-1%(!%''!"24K!0P(?"!/$&/1"%&&L@!"31&""G/&'-1!'P K !"!2%$&/1G)%5""!%K (?"!/%''!"24K"/"&5%(!E!"H!0G1&"I(@ %: 3//!"%?'P &(!%''!"2/ PL!'! 21!0@!'!B"%15(H$!'L&"G-?$/%B"% $/! !)%-$!'O'!"$&/1G"31V'P!0L!B1'P0!"4"G/&1!0I: $&/1"%&%''!"21FK(""G1&0"50/$%31!04@"5/5'&'0G'""%$&/1G)%5":
6=
3??&/"!(%?'P &(!%''!"2G'"'"G1&0"&""1!0@!'!B"%15(&&''!)%5@G"(@ %: 6:
0/$%3%''!"2G'"'"G1&0"&""1!0@!'!B"%15(&$!'(!/B"!!'2LL!1'B"!"" 3??&/"!(%?'P &(!&''!)%5!0B"0 !'-''1G%0P!%!1!0$!'!'2!K !"!2 "G1&0"G&1!0'"!!''!2/! */( !/!0P&/B"G1!0'"!(&""1!0@!'!B"%15(4& 0P(&""$!'O'!"$&/1G"31"G1&0"&""G01!0@!'!B"%$&/1G"31"H/!(!/"/0!" $&1/G"31"I 0P(&""$!'O'!"$&/1G"31"G1&0"&""G04G"5?3$$!/$&/1G"31": 44!4!)! %)!P?!1!"5(34G'4"5-1!'P!G'"'G&(!$%B)%5@K !"!2 public static System.Boolean CheckDeviceType ( System.Int32 adapter , Microsoft.DirectX.Direct3D.DeviceType checkType , Microsoft.DirectX.Direct3D.Format displayFormat , Microsoft.DirectX.Direct3D.Format backBufferFormat , System.Boolean windowed [, out System.Int32 result] ):
!4G"1!0!''(3(?"!/%(!E"-! %)!H%0P!'"I"B?3G"V!0P&/'"%'01%(%0 ! %)!P?!:*/( !//"'!:3"G"!"!'%B G"$&/1G"31&K !"!!:windowed?/1"!//!' "G''B"@3L!-''1G3"L'& 0P"!'@!?!/P215(LB G@3M!$3"""%:*result ?/1"!//!'%/!(!'!2 G'"&"&"4G'@3-%"" G'"'(!$%%G'"*,/"!1!0$!'!'2/"!" $&03 %?%: ?/1"!/!KK""!/!?'2 &/1"!31!/G)%5$!'O'!"!'4G'"$&/1G"31&"@!'K'-!0P0! $&/1GLB/@'!-4&0P!0P!$&/1G"31&L!0P!"'!?%E!'4!1%'P!)'"&'0G'5%$&/1G)%5 /!(!' !-1%'P!&//!(L!-!!%$&/1G)%5!0P!"4GPL%"! "G/&' : "!'@!?!/P2''1G&!!"4G"5?3$$!/1!0@!'!B"%?3$$!/$&/1G"31G 'P!0L!1!0!''!0P!%!H4G"5?3$$!/"/"'14"'?4%$&/1G)%5"%I:L'&O!115(L %&"'!4!"20 //-4&0P"$&/1G"31O'KLK2'!0P!:LL!!!"L!1!0K"-4&0P 4G"5?3$$!/L!'! 2%$&/1G)%5& !/"G'4"5'!0P!1!0@!'!B"%?3$$!/%$&/1G)%5%/:1'!O % 30P%//-4&0P1!0@!'!B"%$3"5'0(%"4!/!'"% 0!K !"'!O'1!0@!'!B"%$!'O'!"/!B/G!'2"": %/!)"A 0!/4!)! %)!P?!1!"5(3"%!''!2/%-4&0P!'?!' 0!4!"2'!M!(&"" $&/1G"31&!!":*!!1"!'@!O'-4&'&""1!0@!'!B"4/( !/!!!1O"K%(G'P&L(&"" $&/1G"31&'-1!"5(3&/%!0"B G'"$&0(%: A:
''1GG'"'4G'"?!)%G'%$3)%5"G1&0"GG!''!2/!:!!K! 0!/&"G'P !"! %)!?1!"5(3 public static Caps GetDeviceCaps(int adapter, DeviceType deviceType)
?/1"!/!6:?&"L'!B/"4&4&'5:B G"$3)%5"G1&0"GG!''!2/4! %?&""?"/3"J/1!0$!'!'2"3'@(&G0G/""!''1!0 %0G'3: N:
0P/!!"/1!"!/&L@!"31'"/!4&G-1@(?/1"!/!%!L!G''B"G:'2&/L4G"5?3$$!/ L!G''B"G%-!0PO""1FK(%15('?&GL!G''B"G'P!0!:
;:
! %)!&L@!"31'"/!4&G:&"/3"&/(!$%B)%5@ public Device ( System.Int32 adapter , Microsoft.DirectX.Direct3D.DeviceType deviceType, System.Windows.Forms.Control renderWindow , Microsoft.DirectX.Direct3D.CreateFlags behaviorFlags, Microsoft.DirectX.Direct3D.PresentParameters presentationParameters )
0P 0!(%/!)"<''1G/!(!/%"!"'&"$&0@4G'%:"KLL%&"/3"&/310!( H IK/P!!"!"$!'""!'!: /!(!/Y%(&>?/1"!/L!1!0@!'!B"4!4G'"&L@!"31/!$!/!)%G@G"(@3G": "3'@(&??!$!'4G'5%$!'O'!"!0P!'!1!'!-%''!" !!0L'H1%" &/1&L@!"31I"!'@! ?!/P215(!!":
6Q
?/1"!/!KK""!/!?!'/!"! '0$!'&/&'G&"B?3%:!LL!!/!?'2"3'@(&G0&KO' %"""'G!'!0!(2%!1!'% !/"!EMG1B"G&"L!$&'PG&'5"
=:
*/( !/!/"!E/&)!%0 !/"!E!!'?)&'"&1%(!G1B"G"0/$%34/( !/$&0 0!%:
&$">/!!/"!E/&)!%0G1B"G&"?/&)!&/$&0@ 0!%:"$2'!04/( !/! "G1&0"G4%GP&G0%!!"4G'@G:
%E!(!/"!E/&)!%0G1B"G&4!'P!L(& G'"&""4"5'!:%4G'@4/( !/! $!'(&'0&G"!'@!B"1P$&&54"GG"-(!$!"/"@?/&)!&/"G1&0"GG"4/( !/!!!1 "G1&0"&""$3)%54&:
! %)!!!1P!!'2%!/!0%"/G'G:'!00P/LL 0!(%/!)"<?/&0/1L! %)! K !"!2!!1P!%"!!'@O
! %)!,&"
''1G$3"G&/G!0P! %)!&L@!"31"G''?&" '1!'P%L! "B -%''!" !?B : 3"5LL%!!"&L@!"31/ &"&51%(!4B G4"G"'-1!0@!'!B"'G"5'0'!G'': &"& 1!0@!0P!%-4&0P1!"5(3&!&/%'!$3"%!/!!"/! %-!11%'P!% "!'!1 G'"5(%%:%&"'G"4"5!/!(1P!1'!-1% !'!LL!G''?&"L! %)!?)&'"0/$%3 !/2$&//G&'1!0(":"G''?&"&"%/&('&1T(! %)!'&"U !%1!/%X"%?%3?'(/G- 1%&/"!'@!?!/P2''1G!!"'"MLL%''!P"F&1L%G)%5 0P1G!!1P4"GG/ ?/&0/1L'%"B '!-%''!" !L'&''1G!!"-4L'&"$!'4G'5G"1/!"!%: G''?&"0/$%3!/2$&//G&H?':$!'O'!"!IJ@L5'%'"/!4&GG""!4!"%O0!: &"& "!4G"-4&0P''1G!//!G"1!!"/!$!''!0P!B" !:/"!'0G'"'G&-4&0P!0P 0!( %/!)"<''1G@G"!!1P!!'2"(1!0! %)!! %)!,&"!!1P/!: !!1P!!'2!K !"!2!"!''"!%!"B G''?&"L '5 %"/4! D: ! %)! %0G'"-4&0P"B G''?&"L '5 %"/'!4!"0!M!: 6: ?/&0/11%(!&'P!/2$&//G"5'1!0!''L(3'%-1!'P(&""! %)! &L@!"314&?)&'5(%- %(!&1!15/%G"H!$3'"?&&'ML'! 2!/2$&//G&"I4G': %?%3%'P!&L@!"31&$!'O'!"!: A: ''1G1!04B @! %)!&L@!"31!!"1!"5(3G":!!"!0P!"'!1!"5(3- 1!'P!!0P%"B G''?&"L'! 2! %)!M/ 4"G:/"!!0P!"'!15(@"B G''?&"L '5 %"/!:!!")&/$&0%!/!! %"/%-4!'22'?L! ''1G1%(! %(!&M!/2$&//G"$!'L(B"&"":!!"''1G '"!4G"'P!0L!J@/!' !'' 0!%4G"5?3$$!/!-!!"'!01'P0%?3$$!/!0PL!/2$&//G&%%)%'%G'GG"- /L!30P5($3"'!-1!'P! %)!'"/!4&GGG':
! %)!!!"
!'2LL%!L!1G/5'"1%"" 0/!4@"(5"! !P0!/2': &"&'!K0!%-4&0P! %)! %"B G G'G!44!?)&'5(5! %)!!!"!!1P!1!'2&/L% "!'!!!1P!-4%LG P&1GK !"!!L!:$&'P1"&/%'!@'%-4$!'4G'5!0P!/F!G"1/!"!%''1G L'G": %/!)"<4B G&K !"'!O'!1PJ@"%$&/1G)%5"//5'-4&0P! %)!&L@!"31??"B 0P %"B G''?&"L X?&"&LL&!/!(1P"!K !"'!O'!1L!$&'PG&'@:%&"''1G LG/1%&/"!"!'4!"%!"G''?&"&"4!)&&?!/"% !,! !'1!"5(3': %(!!3"G'G3!!&)!?)%51FK("<4/??/&0/1Lg '2K//&0/1:)$&//GG''&1GPL"'G'4"5 %$O00 P" %0G'@31!0-1% !'!''1G L!'?%?&"@: %1!"5(3!0PG'"'G&?/&0/1LK !"!2
68
[STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); }
0!(%/!)"<M!"4G'5''1G&!'!1&'!''"KLLX"3'@(&??!!0P!"'!(&'0&" !''!' 0!O10-1%!'2""''1G3$2L'G/!/O'! !/'%/!)"<%%)%'%G'GG"-%''!" ! ?/&0/13$!'B""%"!B 0/$%3$3)%5/://!$2''1GML'&"(!$%%G'5 % &/1&"G'P %" /?4%)1!"5(3G"$&0@34G'%: [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); using (MainForm mainForm = new MainForm()) { if (!mainForm.InitGraphics()) { MessageBox.Show("A DirectX inicializálása nem sikerült!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); } System.Windows.Forms.Application.Idle += new EventHandler(mainForm.OnApplicationIdle); Application.Run(mainForm); } }
1!P%L!%" /?4%)%!/"!'!O'"/ %-P"!'!! 0P3"3(&1G3' !%-4&0P?/&0/1 $3"""G 0!"!(G'P&LO"KK""V!30P%"@!'!"%-4&0P'? !"2! %)!&L@!"31!44! ?)&'5(5!/2$&//G&'"/!4&G!1%!/O'":&/!1'!O?!!!11%'P!%/!)"<$3)%5 %0PL! "!'/!-!/"''1G4%LO!!"!"(-1@( 0!"/: $!''!'4!"2%/!)"<L! !!"2?'(G!!?&"&G'"'GL!0P!/F!)!'%(B"@G''1G"- K!1!0@!'!B"%'&0%G"''1GL'G%"!!1P!!'2@L!F/B" !-1!0@!'!B" 0 '%("!1!"5(3"4B @G:!11G-1%"!0P!0P!/F 0"!'!)%'3-1%L%"&B"@?&)G %/@&'GG1!0@!'!B"!$&'P1"&G0G"- %&"L%"&B"@?/&)!&/$&'P1"&%'!) ! G'&"!/4!'"%-4''1GL'"B :"!'!/O'!(2-<4/?%(3'G&/''1G('! !!1P/!!0P!!'2"/!0%"/G'3:'P!15(&"$&0@3!'/%-4&0P1!0@!'!B"%'&0%1%(!$'! %/@&'G%G/5'0&/$3&'!-1%&/?/&0/1!11%'P!1G"! !P0!!1$&0''@'! !/2$&//G&": %!'2""&L!"/'!"!1-%%)%'%G)%5G'$!' G&'"'?&/&"1!0$!'!'2!! %)! &L@!"31'"/!4&GG" 02%" /?4%)1!"5(3/"/!/G: public bool InitGraphics() { Format[] validBackBufferFormats = new Format[] {Format.A8B8G8R8, Format.X8B8G8R8, Format.X1R5G5B5, Format.R5G6B5, Format.A1R5G5B5, Format.X1R5G5B5, Format.A2R10G10B10}; Format[] validDisplayFormats = new Format[] { Format.X8B8G8R8, Format.X1R5G5B5, Format.R5G6B5 };
6C
Caps hardwareCaps; CreateFlags flags; bool formatFound = false; int adapterIndex; PresentParameters pp = new PresentParameters(); pp.Windowed = true; pp.SwapEffect = SwapEffect.Discard; pp.DeviceWindow = renderPane; pp.AutoDepthStencilFormat = DepthFormat.D24X8; pp.EnableAutoDepthStencil = true; for (adapterIndex= 0; adapterIndex < Manager.Adapters.Count; adapterIndex++) { foreach (Format backFormat in validBackBufferFormats) { foreach (Format displayFormat in validDisplayFormats) if (Manager.CheckDeviceType(adapterIndex, DeviceType.Hardware, displayFormat, backFormat, true)) { pp.BackBufferFormat = backFormat; formatFound = true; break; } if (formatFound == true) break; } if (formatFound == true) break; } if (adapterIndex < Manager.Adapters.Count) { if (hardwareCaps.DeviceCaps.SupportsHardwareTransformAndLight) { flags = CreateFlags.HardwareVertexProcessing; if (hardwareCaps.DeviceCaps.SupportsPureDevice) flags |= CreateFlags.PureDevice; } else { flags = CreateFlags.SoftwareVertexProcessing; } device = new Device(adapterIndex, DeviceType.Hardware, renderPane, flags, pp); [...] } return skinSupport; }
'%()3$$!/ &/1""K1L&1!0@!'!B"%$&/1G"31&""/"'1-1!'P!4G'4"5 4G"5?3$$!/$&/1G"31"H!$!/!)%aDDbI:!KO'!/O'4!"%!'O'2?3$$!/H 02&/&/!(!/"/0!"I $&/1G"31%:!'O'2?3$$!/ %&"!1"G/&'4"'?4M)"&//"!!"H6D7 D7D7% "!' !'-(!!% )"!'@!?!/P2''1G&G'!'/4!"2I: '%(%?'P &/1""K1L"!4G"'?4)"&/G"!1 "/"'15$&/1G"31&L5'G'': '2K/'"/!4&3!0P/!!"/1!"!/"/3"J/G"-1!'P&&'P"3'@(&G0&""G/&'-1!'P! 1!0@!'!B"'? !"21FK("4"G/&G1!0-1!'P!KO''!0"KLL!"%/!)"/>'?@%/5'5'5 /L!'G""3:!L!G''B"G&"!4G"K !"'!O'L!$&'PG&'@G%/!)"A'""1FK(2%/!)"/>$3)%5 1FK(":&/"K !"!2"3'@(&G0&"G''B"@3L!
Y%(&>!('P!0L!!%/!)"/>MG''G"&""!0PO""1FK(%%"
A7
>?$$!)""1&(@1!0-4&0P"KLLK/K?3$$!/!'!!"4&0P"K/"@!?3$$!/!KK""% G'"G:!'/4!"2'!4!"20!!">?$$!)"$!'&/&'G&"B?3(@1!0 D: %)/('?&G%'G)!&/!0P&'P'%"'!-1!'PL2'1%(!4G"2?3$$!/%!/O'"/"'1G 1!0@!'!B"!3"G:15(!/'!00P&/%LL-1% !'!1%0P!'!E"/!/2$&//G&": 6: '%?'?&G%'G)!0P)%/3'G/%'%"-1!'P!G1&G(L4G"5?3$$!/!!"7-::-HMDI-7 @!'K'%'!0/0!LL!!'O'2?3$$!/"4G'"$!'O'!"!":1!0@!'!B"H! %)!:/!!"4B G 3"GI'%"GL$&/0"G"K/"%-'!03"5LL%!'O'2?3$$!/HMDIM!(%!'!1"L!!/O' '%"GL-1B03''(%!'!1'!J@!'O'2?3$$!/: A: &?P&/4G'4"5-4'?&G%'G)L?&"&!0P4G"5?3$$!/ :/!!"4B G &/G!1 G'"&%1!04G"5?3$$!/"/"'1-"!4G"!1B/5(%$!'O'!'O'2?3$$!/!'! 2 "/"'&11':
! %)!Y%(&>$!'4G'5%$!'O'!"!&1?&!!-1!'P!"!/O'!"%/!)"<1!0@!'!B"" $&0@ 0!%:1%(%0!0P&"/&'&L@!"31:*!0''1GML'&"%/!)"<$&0@4G'% H?':"!'@!?!/P215(LI-&/"4%3')5"(@3%""1!0:
)3$$!/ &/1"4G'"4G"5?3$$!/H!I$&/1G"31:
?)%&G'%/4!"@O-4&0P4G"5?3$$!/4!3"&1"%3@K@@K'"/!&'P$!'O'!"%-1!'P 1'P0%?3$$!/"$&0$3)%&G'%://!&'0G'L'!3"&!?"4"!)%'"3'@(&G0:'O' %/!)"<!1$&01'P0%"!"!'" 0!%&L@!"31&1!0@!'!B"!&/G-"!4G"$!'""!'!%-4&0P &L@!"31&'G"4"5G0!/%"1!0$!'!'2&//!(L! : 1'P0%?3$$!/G'"'4G'"$&/1G"31%"L!G''B"4"53"&!?"4"!)%' &/1" "3'@(&G0&!/!"O':'!4!"0!$&/1G"31/"!L!G1&(&""$3)%5G'"'$!'4G'" L%"!G1G"@!'!"%!0P??&"/:$&/1G"31!?"4 &/1"$!'&/&'G&"B?3!'!1!:
"K !"2!-!'22/L!(!$%%G'"1%"G"K !" !- 0!/&"G'P1!"5(3%!0B"0 !' 0%0O!'/4!"2(?"!/!!"- Manager.CheckDeviceType(adapterIndex, DeviceType.Hardware, displayFormat, backFormat, true)
1!"5(3!0B"0 !'%(!/B"@O-(&""(?"!/!-L'&O!115(1!''!""1%'P!!'O'2-%''!" !4G"5 ?3$$!/M$&/1G"31?G/&B"G!!"?34/( !/!"G1&0"G":*"'G'3%'P!"-&/?/&0/14G"5 ?3$$!/"4G'"$!'O'!"!$&/1G"31G"1!0"'G'"?G/1!0$!'!'2!G''B"@L!: % !'''1G!11%'P!?!)%G'%4/( !/$3)%5/%)O0!-!/!"!3"G1!0% B"@3: 1!P%L!"3G'%(?"!/M%(!E%!LL-1%"K!(?"!/!G1H"!4G"!/!!1%(!E!'" "J'!'/4!"2(?"!/!"K1L@I-&/%%)%'%G'G!0P/!"! '0$!'&/&'G&"B?3J/"L!G''B"GG ' $&'P""5(%-1!'P!'2&/L?/&0/1!/2$&//GM4G'"G"L!$&'PG&'@-%''!" !4/( !/?!0!%"2'$O002! L%&P&&?"%1%G)%5""!'!4!"2 :!L!G''B"G&KO'1%%1G'%1%(!''1G/!(!'!%!!'' //5'-4&0P !/"!E!!'?)&'"&1F !'!"!4!?/&)!&/ 0P0/$%34/( !/G1B"G%%(!@"$&0''@!M! '!:!'2LL%&$">/!!/"!E/&)!%0-3"5LL%*/(>/!!/"!E/&)!%0/"!'/4!"2:9!'!''1G !3"5LL%"/!B"%!'2PL!4"&PG01%"":'!0"KLL?'(?/&0/14G'"G"?/!$!/G'@-1% !'! !1%0P!'0/$%34/( !/"2'"G1&0"G": 1G/ %&"0P&/'"%'01%(!0/$%3G/"P?! !/"!E1F !'!"!"G1&0"GG/X!!!''!/!&1?"%L%'%"G1%""<4/?!''!2/%!!?!01!0'"" H(?"!/?"/3"J/G@GL! %)!?"3'@(&G0L"'G'4"5-3??&/"*/(>/!/$&/1(,%04" ! F/"!''!2/ !'I:*"G1&0"G%)1!0-&/"!/1!"!!&$">/!!/"!E/&)!%0M!"G''B"@3 L!: !3"G-%%)%'%G)%5 02'?!"'"/!4&3! %)!&L@!"31&":1!"5(3LL!!"L!"/ %%!/"!'!O'-41%(!4G"5?3$$!/M!'O'2?3$$!/$&/1G"31?G/!!"4!)! %)!P?!41%/"!' "/" %:
AD
''1G1!0@!'!B"%)%'3%G/5'0?/&0/1$3"GGTO/!@G/"%%(!@L!U%(3'!':!)'@ !/2$&//G&-!'2&/L?/&)!&/%(24G'"G!'$&0(4"5%"!"/"G-!K!?!(%0?/&0/1 L!'?%?&"@GL/!0%"/G'"??'%)"%&('!!!1P!!'2: "/%"/%31"5'"!%$O002 1!0@!'!B"1!0!(" 1!0@!'!B"%L'??!"B : 0P!"'!!!1P$!'(&'0&G%)$&'P1"L: 3"5LL%!'(K"/!Y%(&>!0P$O00 P"4G'&1-1!'P"3G'%$!'(&'0&G'""G''5 O!!"!"(@ %-%''!" !41%/"!"-4O!!"&/O/!: %("$!'""!'"!'@!O'!!!"!(!/1!"5(3$&0'!$3"% internal void Render() { if (env.RenderState == RenderState.DeviceLost || env.RenderState == RenderState.Paused) { System.Threading.Thread.Sleep(100); } if (env.RenderState == RenderState.Inactive) { System.Threading.Thread.Sleep(20); } if (env.RenderState == RenderState.DeviceLost) { int result; if (!device.CheckCooperativeLevel(out result)) { if (result == (int)ResultCode.DeviceLost) { System.Threading.Thread.Sleep(50); return; } try { device.Reset(device.PresentationParameters); } catch (DeviceLostException) { System.Threading.Thread.Sleep(50); return; } } env.RenderState = RenderState.Normal; } float elapsedTime = env.AppTimer.GetElapsedTime(); OnFrameMove(elapsedTime); if (env.RenderState == RenderState.Normal) { try { env.RenderScene(); } catch (DeviceLostException) { env.RenderState = RenderState.DeviceLost; } catch (DriverInternalErrorException) { env.RenderState = RenderState.DeviceLost; } } }
A6
'? !"2!1!"5(3!0P!'G0G"(!$%%G'!(!/""!&L@!"31LP%' G"/"&""1!0@!'!B"%G''?&" !/%":!(!/""!$!'&/&'G&"B?3'&&B"&""G''?&"K !"!2!0P%!'!4!" &/1''?/"!'1!!""G''?&"X"@!'%-4&0P1!0@!'!B"!1O"K%!11%'P!(G'PL: )"% !''1GL'!1"B : 3!(1!0@!'!B"%)%'3O!"!':!"&'!4!" D: $!'4G'51G%$O'!""% G'"''1G$2L'GL: 6: 0PL%"!B "! !P0%(3'"!'-?'(G3'$!'4G'5!0P1G%G''&1GP1!0P%"GG" !(!1P!"!: ! %)!,&"1!0@!'!B"!1"K/"4!"1!0-1!/"! %)!@!'!'!0%"B G''?&"L :" G''?&"&"! %)!,&"!!1P G'"@%: *"3G'%G''?&")"% ! 0P3!(-&/$!'!'!0!"& GLL%!/2$&//G"$&/(B"%%/@&'G/X!/" 1G''1G&G1G/L(B"@3$!'?/&)!&/%(2": ! %)!,&"G''?&"!!'!$!"!LL$!' G&'"1!/%""K/"%: % !'''1G%)!! O'K$!'L(B"(5!/2$&//G%-!/"/K0"K4!)&&?!/"% !,! !'1!"5(3"4B @31!0:*!%!/"!'!O' "/ %- %)/&&$"@G'G!/%"''1G G/&%-1B0! %)!J@/"% G'G1!0!1B/!'4!"2: !4G"!LL!G0L%1G''1G&(@3G"!/2$&//G&":0PL"1!0"K/"%!!"1!"5(3 4B GX!!!/!(1P"2'$O002!1!0@!'!B"%G''?&"1/(! %)!,&"-%''!" !%!/!"% G'G3"G &/1': !3"G1!01/@O!'221!0@!'!B"%)%'35"!'"!'"%(2":!0P/"%1G)%5?&"& 1!0@!'!B"!-1G/"!0//!'"K/"2$%&11&0"G&4!'P!!!'!1%""$&"&:3"5LL%" /1! & !1!"5(3$&0@'!!!'%: 'P!0%1!0@!'!B")&/!(2(%!'-4!!?&"&G''?&"101%(%0&/1':* 1!0@!'!B"&/G4%L'?!""$!'-G''?&"! %)!,&"'!: *+ Z,+ 9 , LL!$!@!!"L!'$&0''&&-4&0P'!4!"%/!)"<G''&1GPL"G/&'"("&"%/!)"A/!"%!( 1&(!&L@!"31%L'!?!%:,!?!'"""!1?'"!ML!"G/&'"("&&L@!"31&(""0@% !0P1G1!0$!'!'"!""/"!1: //!$!'("/%/!)"A/!(!'!%!KK!':4G/&1(%1!%5&L@!"31&L!&' GG/%/!)"< G''&1GPL5'"1!"5(3)&?&/""0@%4G'4"5: !'2)&?&/""0@% !4&L@!"31&"( %:*G''&1GP"KLL&L@!"31&""/"'1- K!("&"!0P!"'! !4ML!&)!"/G'@:1!P%L!("&?M4%!//)4%GL 1!0( - 1!"5(3&!LL!(!$%%G'""/$&/1G)%5"%$%0P!'!1L! !%:)&?&/""0@%K !"!2
/&1 %'!
/&1<
/&1"/!1
1G&(%)&?&/"L&'P1!"5(3&"/"&-1!'P!%1G)%5/ &"&5("&"%$%0P!'!1L! !%
,&(*%!//)4P ,&(*%!//)4P /&1<
!!0P%1"%&&&" /1!"/3"J/G"( %-1!'P%0GL5'"$&"&%$&/1G)%5"4&/(& &L@!"31&4%!//)4%G@G"("%""/"'15 /1!-%1G)%5("%""/"'15%1"%&&"/&''!/ &L@!"31&":)&?&/"1!"5(3%4G'"G'"'GLK !"!215(&"K/"%
AA
D: ''&)"!*%!//)4P&"G'PG/1""G-/!"! /1!/!"! !4&"%!/1!"5(3% $!'O'(!$%%G'G:!4G"1!04"G/&3-?/&0/14&0P?!!'!?&)G%$&/1G)%5%" /1!- %''!" !&L@!"31&("%" !4&L@!"31&/: 6: 1!P%L!''1G@G"10G'"'(!$%%G'"("'!?!!!"%4G'H"!4G"%/!)"< G''&1GPL @G""!1?'"!M!%I-"?/&0/1,&(!/"1!"5(3%!/!"O'"3(@ !!'%:"&"G'P"G/1"" $!'O'!''(!$%%G'3,&( /1!4%'("-,&( !44%'("- ,&(&?,! !'"1!"5(3&"H1!0$!'!'2!-4&0P?!)%G'%("&4&'4!'P!!(!!' 4%!//)4%GLI: A: !04B @3,&(*%!//)4PH /&1: &/1:/!!&(!'!G/1&""@:L!&' G" 021!"5(34%!//)4%G""/"'15 $!'2%"F<'!1!"?'(GP"% %(@: N: % !'@!'!!"!"'!0/%"GLL!!"L!(@31!0?/&)!(3/G'%1&(!''!!0B"0 !'-$&"&-4&0P ?/&0/1/'!"!!LL%$&/1G)%5"%(@&%/!)"<G''&1GPL"'G'4"5("&'?)&'"L:" &'0G'@*"1'&(! !!/"&/&"G'P:''1G!!!0B"0 !'&'P* ,'?&""3(B"!%- 4&'!1!'2&/L!0P!"!1?'"!M!4%!//)4%G@!1''"!"4!"2-4!1&("%("& !/!?!-!!"'!0!!0PL!'/4!"2%$&/1G)%5'!0PO""
("&/!(!'"!"!1!0! !!:&/"(")&15?&"&$!'?B"!!11&(!11%" )&15?&"L"G/&'"("&)'@G/5'-"!4G"//5'-4&0P1%'P!("&/5' 5X"!0P!(O' "!1?'"!(!$%B)%5@"/"'1:/"(%0/1!/F!"$!'"O"!"%!0P!("&/!(!'"!"" H?': !/"!E&&/(%G"G 0P"!E"J/M&&/(%G"GI
!0P!K!"/"&5("&")&?&/"&L/!(!%-?'(G3'!0P!"'!)J)?&"4G/&1&&/(%G"G@ !0P1G1!''/!(! !@!'!%1!0:
AN
G''&1GPL'! 2(")&15?&"&!11%($O00!"'!!!0P1G"5':'(G3'1%(!&'P "!1?'"!M!-1!'P)J)?&"&4&"/"&5("&"&/&'$!'-1%(!!0P!)J)?&"4&!'' ("&"1!0(%:%'P!$!'""!'!!"(%0/1M!"%"1!0@!'!B"%-O0!"3G'% ("1!P%0K!4&'B"GG!/!"O':
0PL-"!1?'"!M?!)%$%3%$&/1G)%5-?/&0/1"!1?'"!$!'(&'0&GKL! 0!"" "! !P0 !'?)&'"L:
;: L!&' 5P%' G"/"@$!'(&'0&G&/G"'G'"P0M%$&/1G)%5": !4"!1?'"!ML!(&"" P0%$&/1G)%50P/"1!0 %'G0B"G%"3'@(&G0&"L!$&'PG&'@G !/"!EM%"!X 02&/&B0P &L@!"31B"4"G/&G1!0:L!?B"!""L!&' 51!"5(3%4&4&'5?/&0/1 P0%$&/1G)%5"&L@!"31("%"5'$O00!"'!O'%!'/4!"2 "!%:2LL%!L! P0"3'@(&G0&"L!13""51&(3'$&0@!"%$&/1G)%5"$!'4G'%: =: P0&("%1!''!""L!&' 5%1G)%5("%"%O'KP%'' G"/"@-%"1!0$!'!'2 1&(3'G1G/:"$3)%5"%1"%&&"%!/&"G'P'G"@!': Q: L!&' G&/G!'!"!!""4%LG/5'?/&0/1,&00!/&"G'P!0B"0 !''%"G"B": L!&' 51FK(!&&!' !!'?3'-1%!"&/GLLK !0!%/!)"<G''&1GP$!'(&'0&GG/5' '!B/"1:!4G"$!'(&'0&G'?@%3') !'4"G/&'5@!'!: 3') ?/&0/1L!1%/!)"<L GP&3') %X30P%@!'! G'"&"GLL!&' 5!1 "G1&0"@$!'4G'5%"!1?'"!M!$!'(&'0&GG"V0P&/'"%$!'4G'5%13$&'P1"LH"!4G"@!'!!" !'B"! '1!'P!//!)'/O'"&$" !//!'-1@(%/!)"<$&/1G"31L"K/"2& !/"G'G-B0P ?&""G''&1GP&$!'(&'0&G?/&0/11'I0P&/'"%'0!!/!%)%%0P:3')5'"""!4G"L!&' 5 %/!)"<L GPL!'2/!(!$%%G'""!1?'"!M!!0P)&?&/"@G"/"%:)&?&/"'!00P/LL!'2$&/(3'5 "!1?'"!M!L2'G'' %1"%& "!/%' %Y!%04" %1"%&!P !4 !E"3/! %'!1! %1"%&!" !4&/1' <% !4*!(!/
/1! !4 "!/%',%"
/1!/$&/1 "/%E !4!E"3/!&&/( %/!)"<G''&1GP$!'?B"!1!0$!'!'2!/!1!"5(3!'2K/$!@')!"!/!%1!0:* G''&1GPL%)$!@')-?/&0/1$%0P!'1!"!""(-1!0?/5LG'@G''&1GP"K !0!G''&1GP" $!'(&'0&%:1!P%L!!!1%!/O'-$!'4G'5!//2'4%LO!!"!"$&0?%: !!"'!0!"!1?'"!M(!$%B)%5"?/&0/1$%0P!'1!B O'40P@: (")&15?&"&$!'(&'0&GK !"!21!/%""K/"%
while (true) { if (megtaláltuk az aktuális template-et lezáró elhatárolót ( } )) { A bemeneti adatfolyamból az illeszkedı rész törlése; break; //Végtelen ciklus vége } if (az aktuális helyen az adatfolyamban template-nevet találtunk) { A bemeneti adatfolyamból az illeszkedı rész törlése; Az állomány-hierarchiát szemléltetı fastruktúra bıvítése az adott template-nek megfelelıen; A fastruktúra gyökere (az az elem, amely alá a bıvítés történik) az újonnan felvett elem; A tördelt tartalmat tároló StringBuilder bıvítése;
A;
A diagram-nézetet generáló HtmlCodeGenerator segítségével új HTML-blokk nyitása; Elágazás a template neve szerint { [...] //Az egyes tartalmazott template-eknek megfelelı tevékenységek } A tördelt tartalmat tároló StringBuilder-ben az aktuális blokk lezárása; A diagram-nézetet generáló HtmlCodeGenerator segítségével az utolsó HTML-blokk lezárása; A fastruktúra gyökere (az az elem, amely alá a bıvítés történik) az aktuális elem szülıje } else { A bemeneti adatfolyam következı sorának beolvasása feldolgozásra; if (A bemenı adatfolyam nem adott vissza több sort) break; //Végtelen ciklus vége } }
1!0!0!(!""3') 4'1&"!E"3$O002-"!4G"!1!E?'%)%"15(&(&""H!4&'%)!! !'!1!%K !"'!O'$!'&/&' IVO'KLK2"!1?'"!M!O'KLK2"/"'1&"""!1?'"!M!!"(!$%%G':! KO'?/&0/1)K"!'!2!"H"!1?'"!M(!$%B)%5L !/%"$!'&/&'""I!!'% '?@G"K/"2 !'G0""GL:*?/&0/1("$&'P1&&'P-"!1?'"!M"&&B"4"5!"%"G""'G'-1!'P"3G'% &"!E"3L!1"G1&0"&""-&/3"&1"%3(&""L'&&"'!G/5f/"!/"2'$&'P""@$!'(&'0&G": ,G"4"5-4&0P?/&0/1$!'(&'0&G"V4G""/L!'! 2"/!1!(!/1!"5(3%"4G' V&/&" 0%:!!''!/!!1 G/@3!'-4&0P!/!(!"%G''&1GPL("&LG/1%'P!J@&/M! !)%G '!' '!0P!! G'" X1G5 '?/&0/1!1"!%"%J@&/M/"!/" 0P1!0$!'!'2LG/1%'P!/"!/M &1L%G)%5"!' G'"5:!' G'"5@!'!%/!)"<?!)%$%G)%5"K !" !?&"& !2- !2-ef G/5@!'!: ?!)%$%G)%51!0$!'!'2!$!'""!'!O"%-4&0P3') !0PL&?)%&G'%&&B"5KK"" !' G'"5'!0'GLL!0PO/!4!'PM/"!/H5K-"L3'G"&/- 0PJ@&/I: ?/&0/1!' G'"51!0'""!''!2/%X&4%GP!!"4%LO!!"!"0!!/G':%""%% !''!2/!1$!'""'!O'L!$&'PG&'@L!&' G%1!!"!'":'(G3'?&"& !24%GP!1$!'""'!O' "!%%!/"!'!L!&' G": ,, 9 /!"%!(1&(!&"G'P%0P/"K !"%!'2/!(!$%%G'""!1?'"!M!$!'?B""-1%@!'!"2! 1!0KPB"%("&G" %"!'": &"?/&0/1G'"'4G'"/!"%!(1&(!&L@!"31&"&/"K/"2 ("'!?!%'?!!" !!1&//-!%1!0$!'!'2"!1?'"!M!!'!0PO"":
* A:GL/G'G"4"5-4&0P !4"!1?'"!K !"!2("&L5'G'' D: 6: A: N: ;:
)J)?&"&G1: !/"!E&&/(%G"G-)J)?&"&")&?&/"&B" : %(!E("&G1: (!EL!@!0P!$!'&/&'G: ?)%&G'%"/"'1&"""!1?'"!M!:
$!'(&'0&G&/G!!!"!LL!&//!(L!!''L!&' 3:
A=
# ' ( ) $ !4("&"4G/&1(")&?&/"L4!'P!%!'!'2L!(&""&L@!"31K!)J)?&"@G &&/(%G"G%1%(! !/"!EM?!)%$%3("&"4!'P!O!'-1G&(%L""G/&'@3-4&0P!'' !/"!E!L2' '" '?@%" $!'?B"!%X 4/1(% ?!(%0 " 1&(@ 1!0- 1%'P! )&?&/"&/ &"4"5 '" '?@% P0"3'@(&G0&!0PL@!''!12'?@G: !4&"G'PJ:%(!E!'" '"&"?!/!?/!!"G'%: !/"!E!("%"J: !/"!E?3$$!/"G/&'@: ?3$$!/ !0P! !/"!E!4! "/"&5 ("&" !0P1G 3"G &/&'@ $!'V'P!0L! ! !0P ("$&'P1: *&0P !0P !/"!E!1%'P!("% -! %)!'"/!4&GGG'/K0B"!"" !/"!E$&/1G"31"5'$O00:'?&$!'?B"/! &"&5 %$&/1G)%5 %(!E ?3$$!/L! : ! "/"'1 'P!0L! /!(!!"" G14G/1&L5' G'': %(! G14G/1 !0P 4G/&1K0'?/ &"&%X "0@% !0P! )J)?&"& &/G1G" (@G 1!0 !/"!E ?3$$!/L!: !/"!E ("&" ?/&0/1L !(!/"!E"- %(!E$!'&/&'G" !((!E" 1!"5(3 &' L!: < ,, +< Z, !(!/"!E"1!"5(3)J)?&"&"&'P"/3"J/GL4!'P!%!'-1!'PK"!'!2!/!(!'!/! G''5("&H?':&&/(%G"GI1!''!""&?)%&G'%("&G1G/%L%"&B"4!'P!":'!(!(!/"!E"/3"J/ K !"!2("&"/!(!'%!0P! !/"!E!4!
&&/(%G"GH&L@!"31"/L!I &/1G'%&&/(%G"G%(&"")J)?&"L !E"J/M&&/(%G"G *&L@!"31L2/K"4G'H%%0I-&/1E%1G'%0P(/L-a7-DbML!!2J'P/" E%1G'%0P!0G1-1!'P!1!01&(@G-$!"%J'P&1%'P!1G"/%EM%(!E4!"/"& J:1G"/%EM?'!""GL5':
! ("& KO' !1 1%(!0P% !/O' "P'!0!! 0'!0! !4 &L@!"31L: * %) L2/K% %$&/1G)%5-3"&'5"(")&?&/"!1!/!?!'1@( !4)J)%("%KK"": "/"'1&"""!1?'"!M!0P/!("%4&"!4G"%)O'K(""0$!"/" !4&"G'PLX 1%(! !/"!EM?!)%$%3%$&/1G)%5)J)?&"&"/!?/!!"G'5"/3"J/GL!''4&0P4!'P!"?@&:M 10% '4&0P"3(%!''-4&0P?O'$!' !/"!E-4%!1G/'G""3-4&0P%/!)"<1%(!&L@!"31&" 02 &/&("$&'P1&/?!'!X!44!'O'K4!"!"'!("$&'P1&L!'O'%("&!/!!"!%1!/!"!: %/!)"A & !'2/! (!$%%G'" !/"!E"/3"J/G" "/"'1X ''1G ?!(%0 '!4!"20! @G" "/3"J/G"1!0(%:/30'1 !/"!E$&/1G"31H$'!E%L'! !/"!E$&/1"- 0P I "!%%0G/30'1G !0 M": 0!( %/!)"< !!" !/"!E'!1!" &"G'P !0B"0 !' (4"3 1!0 @G" !/"!E$&/1G"31&"X !0P !/"!E$&/1G"31&" !/"!E'!1!" &L@!"31& "K1L@! B/ '!: ?/&0/1 " %'P! "K1LK" (!$%%G'XL2/KK""%''!" !!1L2/KK""&L@!"31&4&:
AQ
< ,, +< Z, !0P! '?& $!'?B"/! !11%'P! 1!0K" %): !4G" !11% !1 0/"G'@ "- 4&0P 1%(! '? 4G/&1K0'? '!: /" 1%(! '? '!B/G %(!E("& $!'&/&'GGL (&"" '?& '! 2 )J)?&"& G1G '!(2(%-!"K !"%/%"!"")J)%(!E!$!'&/&'G: G13/ ! " @!'!"%- 4&0P 1!P%L! O0!- 1G/ $!'(&'0&G '"" !' !'' 0!O '?& 4G/&1K0!B""V %/!)"< ) 4G/&1K0'?&L5' G''5 !4M" "3( !!'%: !((!E" 1!"5(3 K !"!2!0P!/F"!!''G)%5"''1 [...] //A csúcspontok számának beolvasása (size) if (size > 3) { Nyilvántartásba vesszük, hanyadik lapnál történt háromszögesítés, és hány háromszögre osztottunk. } A lap csúcsindexeinek beolvasása egy egész tömbbe (tmp); int a = 1; while (a < size - 1) { Írás az indexlistába: tmp[0]; Írás az indexlistába: tmp[a]; Írás az indexlistába: tmp[++a]; }
!'!"!!"" 4G/&1K0!! '! KK )J)3- %(!E'?"!" L%"&B"@- 4&0P J@ 4G/&1K0! K/O'@G/G%%/GP!/!(!"%'?K/O'@G/G%%/GPG '!0P!!1!0: 1!"5(3 K! !'!"!!"" %(!E!" $&'P1"& $!'&/&'5 '%"G" (@ %X !4 &L@!"31 %'P! $&/1G"31L$&0(@!'%(!E("&": !((!E"%1!2?/1"!/" %(@&'P'?&&/G1G"-1!'P!'"!!''G)%5"K/""- !'!"!!"" '?& G1G ' !0PO"": %$&/1G)%5 3')M/" ?G/&" '! P%' G"/" - 0P&/'"%'0 1%(! "/"'1&"" &?)%&G'% "!1?'"! $!'(&'0&G&/ $!' $&0@3 4G'%- 30P% 4G/&1K0!B" &/G ?'3'?&!'!"!"!-1!'P!!1!/!?!'!&""%$!'&/&'G&L: !'$!'(&'0&"3 !4"!1?'"!K"!'!2("%": +, ,M ,, + "/"'1&"""!1?'"!M!K !"!2'!4!"! !4&/1' 1!0 %'G0B"G4& 1%(! )J)?&"L O0O &/1G'% &&/(%G"G%/: )J)?&"L !"" &/1G'% "!/1!"!! !0P L"/)%5- 30P% '?& K !" !- )J)?&"@%& !/!"O' "G/&' ://!("/&/%O0 -410G''&1GP!1(@1!0:LL! !!"L!&/1G'%&0!!/G'""4"5M!/!"O'%X?/&0/1 %&"@G"1!"5(3"4G' !!!' 0/!: !4!E"3/!&&/( !E"J/GG4& O0! &&/(%G"M?G/ 1%(! !0P! )J)?&"4&: ! &&/(%G"G "(%1!%5 "!E"J/G/ &"&- !0P ?&"@G" @!'K'% % !0P ?G//' = F ?:
!4 "!/%',%" !0(@- 4GP P0&" 4G' (&"" &L@!"31- 1!'P% '?4& 1!'P% P0 "3'@(&G0%"!''/!(!'%:P0&!LL!"/"'1&"""!1?'"!M"- 0P!0P1G/(!$%%G'" "!/%' "!1?'"!M/!"K/"24% "&G' 1!0( : %Y!%04" ,P!0L! " "/"'1- 4&0P !0P 1G"/%E J: 1G"/%EM?'!""GL5' 1!'P )J)?&"&/ 4"G'-1!&/J''P': <% !4*!(!/*G/&1%$&/1G)%5"4&/(&L2/K!'?)&'"L
A8
D: 6: A:
E%Y!%04"!/!/"!E!0P!"'!)J)?&""'?)&'"L'! 21G"/%E&1E%1G'%G1H %/!)"<4% "'&'!0$!'@!LL0P1G"/%E&""G1&0" !/"!E!"I: E%Y!%04"!/ )!0P'?4G/&1)J)?&"@G"L!$&'PG&'51G"/%E&1E%1G'%G1: &!,P!0L!"1&(@1!0-K!!4GP1G"/%E !/"L2/KL!:
!%$&/1G)%5?/&0/11FK("!1L!$&'PG&'@G- %&"4G'4"5!''!2//!L!&' G &/GH?':%Y!%04"?'(GP&G1&!!0P!'2M!I: !4(")&15?&"@%$!'(&'0&G3"GK !"!%O0!("&0!!/G'GH&/1G'%&I-1@( %/!)"< !4&L@!"31G'"/!4&G: <M +, +,+ &/1G'%& 0!!/G'""GG/ !4 &"G'P !!/"!&/1' 1!"5(3 % 4G'4"5: ?/&0/1 !0P 4&'5! F-@G"1!"5(3"4G'!//!)'/ private void GenerateNormals(ref int[] inds, ref BlendedVertex[] verts) { Vector3 v1, v2, v3, fnorm, vnorm; int[] numAdjacentFaces = new int[verts.Length]; for (int a = 0; a < inds.Length; a+=3) { v1 = verts[inds[a]].Position; v2 = verts[inds[a + 1]].Position; v3 = verts[inds[a + 2]].Position; fnorm = Vector3.Normalize(Vector3.Cross(v3 - v2, v1 - v2)); verts[inds[a]].Normal += fnorm; verts[inds[a + 1]].Normal += fnorm; verts[inds[a + 2]].Normal += fnorm; numAdjacentFaces[inds[a]]++; numAdjacentFaces[inds[a + 1]]++; numAdjacentFaces[inds[a + 2]]++; } for (int a = 0; a < verts.Length; a++) { verts[a].Normal = Vector3.Normalize(Vector3.Scale(verts[a].Normal, 1f / numAdjacentFaces[a])); } }
'P!0L! !1 1G- 1%" &3/3( G'"' @ &'" !0P!/F '0&/%"13: 1!"5(3 ?/1"!/" 1!0?@ %(!E! !/"!E! '%"G@G": %(!E! '%"G@ 1!01&(@- 4&0P !0P 4G/&1K0'? 1!'P! )J)?&"@%: %(! !/"!E/! K!(@3 & '?& &/1G'%%"- 1!'P!! )J)?&" KK ?&"@- P%' G"/"@3-4&0P(&"" !/"!EL!4GP'?"'G'&%H31(@)!" )!"K1LL!I:?&""&/1G'%&" G'G3!/%"-4&0P4GP'?L!$&'PG&'"/"O!"-1@(&/1'%G'3:%/&('&1L!15(!/ YH !Y!%04"!(`3''PI !%%1!/": ^
0P!"'! '" "KLL P0&" % 4G'4": P04&G/(!'" '?& %"@ !4 "!/%',%" "!1?'"!ML2' "3(@3: %/@&'G 4"&PG0 /(!L! !0P &"G'P&G" !'' 0!O '?&/ H 0!/!(1PL! & )J)?&"@%/I- &4& /!(!'" P0& '?@G H30P% 4&G/!(!' 1!0(G !1 $!'""'!O'V2"- G'"'GL !1V P0& &/G1 !/%" )&?&/"&B" "K/"%I: " &"G'P&G" !4&L@!"31J:""/%LJ"31"GL'GL"G/&'@:"GL'!0P!P0&&/G1%4&'?&K!$O002 &/&"G" /!(!'%X 1!0(@ !! &/&"& !(2M- %''!" ! 0?&"@G" H %(!E?3$$!/L2' !"" %(!E!!'I: " @!'!"%- 4&0P &L@!"31 '?@%" !0P!2 P04&G/!(!'! '?@G /!(!% !''- !! 1!0$!'!'2! ?!(%0
AC
$/%B"!%%(!E?3$$!/"/"'1G":!/!)/!!"!1"/% %G'%$!'("&"?!!' 0!%X !4&"G'P ?"%1%!')! 1!"5(3 G1& !1?&" !/%" ?! ("&" 1!0$!'!'2 $&/1GL 4&%: ""/%LJ"31 "GL'0!!/G'GG4&?"%1%!!/"!E)4!?/1"!/"!''1!"5(31!0(3: %(!! 3"G !4 "KLL '?)&?&/"L5' $&0 G''%- !0P! P0&/G1& !/%"% )&?&/"& />3L!"1!"5(3'/@&'""4"5%-1%"4&0P?/&0/1L%"K/"%: !0@!0P!O- 4&0P )&?&/"&/ &"G 1G" "K/"% ?'(G3' &/- 4 L2/KK"" '"/5' H%!( 1!4I 5:&/0!!/G'G&/G!1?3"G'?&4&/!(!'"P0&" !O$%0P!'!1L!X!0P&"G'P" P0%(!E!1!''!""1G"/%E%(!E!!0PKK)&?&/"@&&B": *9 ,*+ "$'! !4 &L@!"31&" 4&4"3 '"/! !/%"- 4&0P G''&1GPL "'G'"3M! L2/K% %$&/1G)%5" 0P!1:"5LL%!!"L!"KLL("&"/!(!'"O1%(! !/"!E4!-"!4G"1G !/"!E$/&1G"31&"!''1!0(3 '"/!4&GG':'!4!"20!K !"!2 //Bırözéssel mesh = new Mesh(nTris, nVerts, MeshFlags.Managed | MeshFlags.Use32Bit, ElementDescription.BlendedElements, renderDevice); //Bırözés nélkül mesh = new Mesh(nTris, nVerts, MeshFlags.Managed | MeshFlags.Use32Bit, ElementDescription.PlainElements, renderDevice);
%("!!"L!KK?/1"!/!&//!(L! ,?&G1 J)?&"&G1 !4 '0L!G''B"G&!'2&/L&L@!"311!15/%4G'"G"L!$&'PG&'@G:9!'!!!"L!"B/@3 !'2- 4&0P &L@!"31 K! !/2$&//G :!" G'"' !!'" 1!15/%"!/O'!"! '!0P!- %''!" ! %(!E?3$$!/L! '! 2 %(!E! 1/!"" A6 L%"L! 4"G/&3 1!0: "5LL%/ /" O0- 1!/" '?/"!'1!!/%"%(!E!D=L%"!!- %&"''1GL4G'"%(!E'%"A6L%"! !0 /"!!""/"'1: &"/3"&/ !0P!(% ?/1"!/L! !/"!E! $!'?B"" !'' 1!0(3: 9!'! !!"L! !" !/"!E'!1!""K1LK!0B"0 !'"!O1!0: ! %)!&L@!"31X@!'!!!"L!!30P! %)!-1!'P!"%%)%'%G'G&/G'"/!4&"3:
4&0P N: GL/G/5' % 'G"4"5- 4&0P ! !0P PB'" "!1?'"!: L!&' 5 1!"5(3% @!'!'!0 4G/&1 "/"'1&"""!1?'"!M!"%1!/!$!' /1!?'(GP%L !4- /1!- /1!/$&/1 "/%E:3"5LL%(@ 1!0 "/$&/1G)%5" K! !4 ?'(GP 0'&LG'% "!/L!: "/$&/1G)%5 "3G'% /1! K! "/"'1&"" "!1?'"!M@/! H 02 &/& 1%(! '5LL %"! '! 2 !4 ?'(GP/I 4"G' : ! 1G"/%E&'&"@GL2/K!!"1G"/%E?'!""!'!1!%"%:
N7
* +( ( ) $ '!4!"0!"/"'1&"""!1?'"!M!$!'(&'0&GK !"!2??!"K/"% /1!/$&/1 "/%E %/!)"< /1! &"G'P "/"'1 !0P /$&/1"%& "/%E (""0&"- 1!'P !0PNhNM!1G"/%E:L!&' 5&"G'P/! "/%E1!"5(3!0P'!L!02?&"&"K1L!'!1!%L!&' L! "!1?'"!ML!'! 2"%!4"G1&"-1!'P!!'1!0$!'!'2%/!)"< "/%E"/3"J/G""K'"%$!': !4("& /1! !4""/3"J/G@G !4(""0@GL!/O'!: /1! L!&' 5 /! /1! 1!"5(3 L2 %"% ?&)G 4%!//)4%G@G"- 1@( /!3/B @G" 10G" 4B @:
,,^ +Z 4/1(%- $!'2 %"! % !'2$&/(3'5 "!1?'"! %1G)%5" B/@ '!: "!1?'"! !1 K !"'!O' %1G)%5("&""/"'1: %(!%1"%&!"$!'$&04"5J0P-1%"!0PKG''5 1&0G&/&"-!0PO'K T@!'!!"U- 1!'PL! !0P! %1"%& "!1?'"!M! O'KLK2 &L@!"31& L%&P& %(2 '"" L!K !"!2 "/$&/1G)%5%" B/@G '!: 1&0G% ("& 1!04"G/&&"" %(2?%''"&L 1!0( : !L! ?%''"&L%0GL5'(&""'"&L!K !"!!"""/$&/1G)%5""G/&'@3'!:%'P!%(2?%''"MG''?&" ?G/&"! !O3')&)G: %1"%&J0PJ0PPB'""!1?'"!-1%" /1!:G'"'1!04&&B"&""0P&/'"!/%"1&0G '!B/GG4& "!1?'"!M! L!'O' !/!?!'%! !'' !0P 4% "&G // /1! "!1?'"!M/!- 1!'PL! 1&05 '"'!B/G"'G'4"5:"P'!0!3')&)("&"%1"%&!P"!1?'"!"/"'1 template AnimationKey { < 10DD46A8-775B-11CF-8F52-0040333594A3 > DWORD keyType; DWORD nKeys; array TimedFloatKeys keys[nKeys]; }
%/!)"<1%(!%1G)%5" 3')&)G%(2L!K ! 2&/&"G 'B/'!:KLO'2G''?&"&G1B"G 1%(%0 " &/" 3')&) KK""% '%!G/% %"!/?&'G)%5 ' "K/"%: &'P %1G)%5" "3( !!'%- 1!'P!L!%(2L!'% G'"&G'!B/4"54G/&1!'!1%"/$&/1G)%5 '$&/0"G-G'GG-!'"&'G:.0P 02&/& %(2L!'% G'"&G'!B/4"5NhNM!4&1&0"/$&/1G)%51G"/%E&'-"!4G"1!0$!'!'"!"4!"24%!//)4%GL '! 2?&)G"/$&/1G)%51G"/%EG:!@!'!"20!2LL%!L!L2/K'!B/G&/(!/O'%: 3')&)G1!0(GG/%/!)"<G''&1GPL'? !"2!"$'!'!4!"20 !/%"-4&0P!'"&'G%- $&/0"G% G'GG% /"!!" O'KMO'K (@3 1!0- 0P "!'@! "/$&/1G)%5 1G"/%E (&"" !0P! %(2?%''"&L:"!1?'"!G'"'(!$%%G'"!'2/"!"1!0(G%15(&"4"G/&1!0X'!4!"0!/"!% K !"!2
ND
7
3')&)M("&$&/0"G%("&" "/"'1:/"!0P'!L!02?&"& G11' 1!0( -1!'P!!0PM!0P `3"!/%&&1?&!!%!$!'!'!1!0: G'GG%("&-1!0$!'!'2 !"&/& &1?&!!% 1!0( 4G/&1M4G/&1 '!L!02?&"&G1$&/1G@GL: '"&'G%("&-!'2LL%4!4&'5 $&/1GL: "/$&/1G)%5&1?&%"-1G"/%E&'L (&"":
D
6 A-N
%1"%&!PK !"!2(""0@K!3')&)G1G"(@1!0-1@(3')&)G$!'&/&'G K !"!%:(!$%B)%5L!/!?'2%1!( '&"!P0P&/'"%'0!0P!%(2?%''"&"-1@(!!4!/!(!'" /"!!"&/&'@$!': 3')&)M%1G)%5$!'(&'0&GG1G@;:GL/G'G"4"5: %(2L!'% G'"&G& 00/!0G'" $&/1GL- 1G"/%EM'L "K/"2 "G/&'G /!(B O' 4"&P !/2$&//GM$!'4G'G !1?&"@GL5': %&" 3')&)G KK""% G''?&"& G1B"G !1 "K/"4!" 1!0 1G"/%E1%(!!'!1!!0P!"%%"!/?&'G)%5@G 'H$2'!0$&/0"G%&1?&!1%""IXB0P!'!"!!""1G"/%E @5 !''P!' !1 '! 1!0$!'!'2 "/$&/1G)%5 1G"/%E: /" KLO'2 G''?&"& G1B"G 1%(%0 4G/&1 /1F !'!"L2' "! 2(% K! G'GG% !'"&'G% !"&/& '%!G/% %"!/?&'G)%5@- %''!" ! $&/0"G" '!B/5 " 1!0$!'!'2 `3"!/%& KK""% 0K1L% '%!G/% %"!/?&'G)%5: ! 3"G /!(!'!O/! $&0 G''% 4G/&1 "/$&/1G)%5" (&"" KLO'2 %(2?%''"L '!B/5 "/3"J/G- 1!'P!4! !'B"@O 1!0$!'!'2 4&1&0 "/$&/1G)%51G"/%E&": %1"%&&"/&''!/1%(!?%''"L?&"&!0P%1G)%5)&?&/"&"H%1"%&!"M!"I"/"P%' G: L!&' G&/G!1!0"'G'"!'2%1"%&!"'!:?/&0/1?!"& GLL%1&0G&/&"&"%!!'% H!''!""L! '!0"KLL %0P!! %/!)"< G''&1GPML!&' 5 'I: ! ("% %&" /!0!"!0 !/2$&//G" %0P!'!- 1% !' !0P!//! '!0$!'@!LL ) !0P!" @G"3 '! KO'O- $!'!'!0! '1!P%O!" 1!15/%GL"/"%: /"?/&0/1"& GLL%1&0G&/&"&4&)J:/!$!/!)%?&"&""G/&'!'L!&' G'""V"!4G" P%' G"/@3 "- 4&' "'G'4"5 10 %1"%&!" "!1?'"!M! G''&1GPL: /!$!/!)%G !(2M- 0%(!E!'(&"":4% "&G%'??!(%0!1 1G- 1%"!0P!/F $&//GG''&1GPM!"'?@G3'&'0G'5 "/%03%'(!/"/"'1: % !'!1%(%0!'/4!"2'!-!0PJ@LL%1"%&!"% G'"GGG'!0P!/F!%!/!O /!$!/!)%?&"@G"- ! G'"' 1!04"G/&&"" "/%0L2' L!&' 3 ("&": "/%0L2' "K/"2 L!&' G/"/!(!/&"G'P&'0G'-1!'P'P!0L!<!(!/15(&B"&""1!"5(3%"4G'@: <!(!/"KLL'!"M("&!!"!1 0%!'&L@!"31'!?!"-1%(!1G$!'0&'0&G%'?H !!'!0PO""%"E%!''!2/!I30PJ0P 0L!1!0P:
N6
, - .( ) $ %(!%1G)%5!0P(&"" !4&L@!"31/ &"&%:0P1&0G&/&"L/" ! 2K!%1G)%5 K!$&0GG/&'0G'%1"%&!""!1?'"!:?/&0/1L!!/!?/!!"G)%5@<%1"%&!"&"G'P: &"G'P"!4G"%1"%&!""!1?'"!ML!'! 2("&'!?!!!K!X&""'!B/"%1G)%5""G/&'@: !0P!3')&)G%$&/1G)%5%%1"%&&L@!"31L!/O'!:&"G'P?'(GP%3')&)G" %/!)"A!P!)"&/A-%''!" !!PR3"!/%&"/3"J/G%L4!'P!%!':"&L@!"31&"-1!'P/!%(2L!'% G'"&G &"&%-(&""&L@!"31&""/"'15< /1!!0B"0 !'"G/&'@3:!&-4&0P%1G)%5 02&/&!11G-1%"!0P&/"&L@!"314!'P!""'!B/5"/$&/1G)%51G"/%E%(2L!'% G'"&G: < /1!?!(%01%(1G"/%E&"-1%(10G"&L@!"31&""/"'1: !"&/&!!"3')&)GKK""%G''?&"&G1B"GG/!)"&/A"/3"J/,!/?1!"5(34G'4"5 1!"5(3!/!(1P!N*B& !"&*OMLN&*O=O!+'& N*B&? !"&/-4&'!"&*OMLN&*OF : $&/0"G%&1?&!%"!/?&'G)%5@G'!B/G1!0B G@`3"!/%&G'"'G&%1!/"!"": Vector3 Lerp(Vector3 left, Vector3 right, float interpolater)
R S ,+Z `3"!/%&G'"'G&!0Pa b?G/-4&'!0P4G/&1(%1!%5 !"&/-b?!(%0!0P-K/O'%?&%"B %/GPJ$&/0"G"'!B/5K0-/(%GL:!4G"4"&P?!'!B/%!0PG'"'G&"!0!'PK/O'%$&/0"G": %/!)"<ML!`3"!/%&!0P 0P!-1!'P!"0@%!'2LL%@!'K'!!"4G' &1?&!!%- 1@(bK0:*$!'""!'!O-4&0PG'"'G&$&/0"G%"!0!'P&/1'%G'"-a0P&1?&!! K !"!2??!(5(%
NA
a , Y!"= b(? 9 , a - Y!"= b(? 9 - a # Y!"= b(? 9 # a % LY= b(?
`3"!/%&!!"L!!0P!/F'%!G/%%"!/?&'G)%5!11%(%0%!'0B"2:0P%!!'15(!//!' $&/0"G%K0 G'"&G!1'!!0P!'!"!%1G)%5%(!@!'"":/"$&/0"G%"!/?&'G)%5@&/J:0K1L% %"!/?&'G)%5H'!/?V?4!/%)''%!/%"!/?&'"%&I15(!/"4G'@3: "!1"%%'0!K !"!2'L B/4"5-4(&""N*B& O!+'&`3"!/%&!"&*OMLN&*OF N*B& R cAdefghcAd iO!+'& R cAdefghcAd %1G)%5 !/'/!'? !"2!"1!0K!'B"BG'&%:!!0PB !'! !!'!4!"?B %''!" ! "B 15(!/: ?B 1!0@!'K'// &"&%-4&0P1!0@!'!B"%'&0%$3"G&/1%(%03"&'51!0@!'!B"% )%'35"!'"!'"%(2$O00 PL! G'"&""@3@!'!!"!":15(!//!(!/"!/4!'"0!!!"00"&"" 1&0G"!/!(1P!4!":"3G'%!'"!'"%(2"Y%(&>G1'G'5%"5'/(!O'!-'!?!O "3G'%%1G)%5'!""!'@!4&G/:B0P?&"""%(2/"4!1!0!/!O4G/&13')&)G %(!E"H!P/&"-!P)'!-!P"/I-1!'P!/! &iAjdfc & E &iAjdfck &iAj@lhgA & E &iAj@lhgAk &iAjcdh @ & E &iAjcdh @k
!'?@G!' 0!O%"!/?&'G)%5":15(!/4G"/GP-4&0P%1G)%5!L!0!'P!0L!) 1!0@!'!B"%$O00 P4B GG%"!%"GG"5'$O00: "B 15(!/'P!0!-4&0P10G1!0@!'!B"%'&0%G'!$3"GG"!0P1!04"G/&&"" !!1P4!-!0P(&""%(21!P%0!'"!'"4!K"@O:!4G"'!4!"20PB'%$/%B"0P&/%G0G LG'P&GG/:LL!!!"L!%)0/)%//-4&0P%(2B"?&"&X)""3(@3!'/%-4&0P 1!0@!'!B"0P&/%G0!'!0P!%!LL-1%"!0P(&""%(2OKL:3')&)G&&//!(L!4'(3 0%0- %)1!0&)G"-4&0PTG"30/3U3')&)G":?/&0/1!3"5LL%15(!/" '5B"@1!0 0P&LL$&JLG'P&4"5G01%"": S 0P /1!"!1?'"!G'"'G&!0P"/$&/1G)%51G"/%E&""/"'1-&"/L!'%&L@!"31& ("%"-1!'P!"/L!'%!'4!'P!!("!1G"/%EK !"'!O'L!$&'PG&'@:%""'!B/"'?&"-1!'P! &L@!"311!0@!'!"-'@G"1!04"G/&G-K!0OL!! !4!"@O'"L2/!H%I: 03 "/$&/1G)%51G"/%E&H%''!" !!!KO'!0P!!I"!%"4!"2'")&" GGH!'!"&I:'50% 'P!0!-4&0P41G"/%E& G'"&-1!0$!'!'24G/&1K0'?&%K !"%!" G'"&G"-"/"'1&"" '"&'!0PO""-4&'544&-4&0P!0P'2!/ !!""0@%1&&0:/"1%(! /1!M!" "!%"4!"O'")&" GGL!0P)&"HL&!I: "!1"%%'0!0PL&!!11G-1%"10(&""
/1!ML!'! 2"/$&/1G)%51G"/%E: %(!)&"4!'P!""""/$&/1G)%5B/@'! ,&G'%"/$&/1G)%5"!0PO$!'-4&0P)&"@G"'&G'%"!/L!HL&!?)!IJ0P4!'P!!(%!'- 4&0PBO'!"!HKK"!/O'!"-1!'P!O'2@ !'/%"!%I&/%05L!%:&/'&G'% "/$&/1G)%5!0P/"!0P$&/0"G"(1!0!K/O'&/%05K/O'-1G/"!0P!'"&'G"-1!''P!'!'/@O- 4&0P)&""P'!0!!)"'&&O'2@4!: &1L%G'""/$&/1G)%5(&"")&"&"&L@!"31)&" GGL4!'P!%!'H"/$&/1G)%5" 0O &L@!"31'&G'%"!/L!I:-1%"P'!0!!'"'?@%4!'P!""%L!$&'PG&'@: &1L%G'""/$&/1G)%51G"/%E1!04"G/&GK !"!2??!"K/"%!'2K/''13(&"" )&"'&G'%"/$&/1G)%5@G"-1@(O'2@!'&G'%"/$&/1G)%5@G"-B0P"& GLL-!0'!0$!'2%"%0:
NN
%/!)"< /1!&L@!"31V?/&0/1L4G'"< /1!&"G'PV!0P3% !/G'%!/!!"-30P% !1)&L@!"31&4%!//)4%G@G"(@1!0-4!1L2/KK""'"H%!(1!4I!!"30P! 4%!//)4%'")&" GG"%1!0(@-4&''&G'%"/$&/1G)%5/$&/1"%& "/%E(""0L 4!'P!!(%!':"!0B"%%?/&0/1&1L%!(/$&/1 "/%E(""00'-1%&1L%G'""/$&/1G)%5" B/@'!: %(!!'!0PO""!((%0!1(!$%%G'"3!11%'P!K !"'!?)&'"&"'")&" GL2/! KK"":!$! 2'!!-4&0P1%(!)&"1!0$!'!'!0P'"H1!'P!"(&"" /1!&L@!"31L 4!'P!O!'I-!!0!&1!"/%%("%1!0$!'!'2)&"'&G'%"!/L!'!!1!0( -!!'&1L%G'" "/$&/1G)%54!'P!!!' 0!'"&%''!"")&" G1!0$!'!'2!:%&"!&/'" L2/!G'"'GL!1'!K!$O002:?/&L'1G"=:GL/13""@:
/ 012 0 1!0&'(G-4&0P&L@!"313L2/"!0P!"'!-K!$O002'""!%"@O:G'"''!4!"20 //-4&0P?)&'5(G&K!'L!'! 2 !/"!E!?&B)%5@G""KLL)&"%L!$&'PG&'@X10?!(%0?&B)%5" 1!0$!'!'21G"/%E&J'P&&""K!0!(@:1!0K!'B"L2/K 0P !/"!EL'!(%0'?@: !'1'!"L2'!0P(&'&04%GP%10!'2LL!0P!'"&)&"'&G'%"!/L! &'"(!$%%G' -B0P 4G'4""3&1L%G'""/$&/1G)%51G"/%E&"?&B)%51!04"G/&GG4&-1!'PG'"''"&!0P KK&L@!"31"/L!!/O'"!: &" %&""!'@!'"K !"'!O'&L@!"31"/L!'!1!0( -!/" L! !!"O10!0P-J:&$$!""/$&/1G)%5": %(!)&"4&/!(!'O!0P&$$!"1G"/%E&"-1!'P !/"!E!!")&"'&G'%"!/L! %%G":!"2'!( !&1L%G'""/$&/1G)%5%1"4G'4"5'!:!4G" %:)&"4&K !"!2"/$&/1G)%5"/!(!'"O4&G \R mR nR mR %:)&"&$$!"1G"/%E-nR &1L%G'""/$&/1G)%51G"/%E: 0P&/'"L%/!)"<1E%1310P1G"/%EL!$&'PGG"!0!('P!%!0P !/"!E/!:&/GLL1G/'G""3 ?/&0/1G'"'4G'" !/"!EM"/3"J/G"-1!'PJ'P&"1G"/%E&%(!E!%"%"/"'1":!%(!E! J:1G"/%E?'!""G/ &"&-1!'P '5@GL1%(!!0P!)&"\1G"/%EG""/"'1: 'P!15(&1%(!)J)?&"?&B)%5@K !"!2??!?4"5
o p R q \R Rr
4&'"(&"")J)?&"&"L!$&'PG&'51G"/%E&G1-R s !:1G"/%E4&/!(!'"J'P-t R Xq %?3""(&"" !/"!E?&B)%5: 9, 9,. %/!)"AML!"J"'"!%4G/&1(%1!%5 %'G01!0@!'!B"/!L!?B"!""$3)%5%"4G'5J: $%E!($3)"%&$3"5'0-%''!" !?/&0/1&4"5$3"5'0:!'2LL%$2'!0/!"%!(1&(!-3"5LL%!'2&/L %11!(%"!1&(!!1''!"""O/K%:!4G"1B0$%E!($3)"%&$3"5'0!!"$!'4G'51!0@!'!B"" ?/1"!/!!!/!"O'L!$&'PG&'@-((%0?/&0/1&4"5$3"5'0!!"'!4!"20 1!0@!'!B""KLL '?L!%&/"'0&/%"13&%"@L! "&%-1%0P&LL$'!E%L%'%"G"@!'!":
N;
?/&0/1!!$'!E%L%'%"G1%""?/&0/1&4"5$3"5'0'!4!"20!%"4G'@$!'//-4&0P$%E!( $3)"%&$3"5'0G'"'PJ@"&""&'0G'""G&KO'1%'"KLL!"1!013"&: %/!)"A$3"5'04"&P!!'4!$$!)"! F!K"L%"&B"@:$$!)"%0GL5' 1!0@!'!B"%$3"5'0 !/"!EM-?%E!'1%?3'G)%5'?!%"$&0@K!-4&0P!!4!L%&P&KK "G1&0"G&"PJ@"&:!"G1&0"G$2LL!K!%
,!4!"20 L!?B"!""- 0P?/&0/1&4"5$3"5'0$3)%5%"4G'3 !/"!EM ?%E!'1F !'!"!4!:"5LL%!!"L!")&?&/"&"@5'!'O'KB"2 !/"!E-%''!" !?%E!'4(!/?/&0/1&" (!$%%G'3:!&'P5(&-1!'P!!"K !"'!O'0/$%34/( !/0?%5(@G/$&/(B"'!: 0!LL!4(!/?/&0/1&"!1L'P4!4&'5P!' !5(&'"G-11G/!'"!/@!("0P&LL P!'1!"L%"&B"5*,,H*%04,! !'4(!/,030!I4G'":
'&LG'% G'"&5"(!$%%G'4"3-1!'P!!$$!"''1GG'"'%15(&B"4"5-?'(G3' 1!0@!'!B"?/1"!/!%B O'/2' '5%(2L!% G'"&""4"5'!!:
$3"5'01FK(!/!(!/""!L!G''B"G&G''B"GG '15(&B"4"5:!4G"K !"'!O'!$$!" ?!15(&B"%1!0 %'G0B"G-G/P'G!0PL$3)%51FK("X30PJ0P-4&0P" ''1G! %)!!(!/""!&L@!"31GL'! 2L!G''B"G&&!/!"O'"!%:
!$$!"?!"!E"J/GG-1%" "!'!1FK("L!$&'PG&'%'!4!"20 "!E"J/G-J: 1?'!/&L@!"31&1!0(GG/H!!O0!!44&-4&0P!0P?%E!'4(!/!0P??&"4& "!E"J/1!0$!'!'2?&"@G""3(@4&G/!(!'%I:
KLL-$O00!"'!1!0@!'!B"%"!)4%G"H"!)4%`3!I(!$%%G'4"3:%?%3"G1&0"&"" 0P $!'4G'"$3)%&'%"G-%''!" !4/( !/?!0!%'?@G?!"" G'"G%'!4!"20!!/%""KLL "!)4%G"(31!0: %(!"!)4%'!0'GLL!0P1!0@!'!B"%1!!"!"H?I"/"'1-1!'P $3"5'01%(!'?"H !/"!EM-?%E!'1F !'!"!I10GL$&0''@:KLL1!!"!1!0@!'!B"" G'"'GL?!)%G'%!$$!"3&'"/!4&GG/4G':
!$$!""!4G"%0!!/2!K"L%"&B"''1G&G1G/-4&0P1!0@!'!B"?/1"!/!%"- 0P&/'"%'0!0$3"5'01FK("!0/'!"!%0!OL!"/"G:30P%"/"'1 !KK!"0'&LG'% G'"&5-"!)4%G&L'! 21!!"!K !"'!!'//!:,!4!"20 G/ $3"G%%(2L!J@LL4(!/?/&0/1&1!0(GG/-$&/(B"GG/4G'"G/%: -4&0P!$$!"G'"''!B/" !/"!E?%E!'4(!/4&0P%''!!(%%/!)"<1!0@!'!B"%$3"5'0 1FK(L!- O00!'L!'! 2GL/G&'G"4"5: ?/&0/1G'"''?/"!'1!!"""4G'"!$$!"L!G''B"G1G/L!13""&""%" /?4%)1!"5(3 4"GG/"K/"%:"!'@!1!0@!'!B"%$&'P1"L"KLL1!"5(3%/" !-1!'P!!"4B G%(2/!(@L! !!&//:
* """K/"%1!0@!'!B"4!4G'"!$$!"'"/!4&G$$!)"&"G'PG!/!"O':!$$!"10!0P O'KG''5G''&1GP-1!'P%/!)"<L GP!/%":$E%"!/@!"!' !''G" :LL2'%/!)"A$$!)" &"G'PG!0P?'(GPG"B"@O!'$$!)"&"G'P /&1 %'!""%31!"5(3G4G'"G ':! (!$%B)%5@K !"!2 public static Effect FromFile(Device, string, Include, string, ShaderFlags, EffectPool);
+'"'GL''1G!1!''4/1(%3"&'5?/1"!//!'$&0''&%-!!0P '5BF00!'3''/!$!/!)%G'!!:1G&(%?/1"!/!$$!"!""/"'15G''&1GP!'/%J"@- !0P!(%?/1"!/"?'(G3'!$$!"G'"'4% "&&""!!"'!0!!0PL("&"(!$%%G'5J:!$$!"4!(!/ H:$E4IG''&1GP!'/%J"@(4"51!0:4(!/ '0!31!/G)%5"& GLL%$&/(B"G%&?"%1'%G)%5L!G''B"G&" (1!0:
N=
1!"5(31G%$&"&$!'("!$$!"L!"'G'4"50'&LG'% G'"&54&&'P4"&P4&G$/% ?&"&/!0%"/G'G-1!'P!'!4!"2 "!%&/"!0P&/%15(&B"GG"?/&0/1$3"G'""://! J:$$!)"*('!&'0G'X?!)%$%G)%5!/%"1%(!0'&LG'% G'"&54&@G'&""%'P!&L@!"31&"'"/!4&%- 30P%%'P!!'/4"&PLL-1%" !/%"%!'/H"!%" !-4&0P$$!)"*('!G''(5 K!K""!"" '5B"1!0''1G(&"" G'"&5KK""I:?/&0/11%(%0!"1!"5(3"4B @-4 4G'"!$$!")!/@!O0!-1%(!!!"L!L!"K'"!0P$$!)"*('!"K1L$!'"K'"!$&0"K/"%:
K!1!0@!'!B"%"! !P0%%(3'G%?&"@:1!"5(3G'"' 0/!4@"&""$2LL'?! K !"!2
%1G)%5!!"!0P!"/$&/1G)%51G"/%E&$/%B"! ?("! /1! "/%)!4B G 1!0 %'G0B"G4&O0!!$$!"M?/1"!/!L!G''B"G @!'!!"/!3/B %/@&'G/> /1!1!"5(3'
0%/@&'G!0P/K0B"!""1!0@!'!B"%1!/%""K/"%-1!'P4"O'KG''5'?/!L&"4"5 1!0@!'!B"%$!'O'!"L!G''B"G:KLL$!'O'!"4G'"!!"! %)!!"!(!//0!"1!"5(3 4G'4"5!//!: !")3$$!/1!"5(3!0P(&""-4G"5?3$$!/!/!?!"@G"5$!'O'!"!"( %: '?/"!'1!!/%"/!(!/"/0!"3"&1"%3!/O'L!G''B"G/-B0P''1G1!0?5/&'4"@ !"'?"-4'?&G%'G)!0P!'O'2!0P4G"5?3$$!/L2'G'':?/&0/1L!"'?"&/ 4G'@3-4 !0@!'!B"1&(3'"B -1!/G'"''G"&""?%/@&'GG4&: 1!0@!'!B"%$!'O'!"4&G/!(!'"1'P0%"!)%'?3$$!/"K/'!://!! %)!'!/1!"5(3 &'0G':""1!0!''(3-1%'P!$!'O'!"!!"!/!""K/K'%-1%'P!B!'X%''!" !1%'P! /"!!'!/!"?3$$!/"$!'"K'"!%: 1!0@!'!B"%'&0%!(!""@!'2!0%)!!4B G: @!'!!"%/@&'G''1G%0P!%!/%"H1&"!/> /1!1!"5(34B GI: 1!0@!'!B"%'&0% 0"@!'2()!!4B G: /!!"1!"5(34B G:&/"K/"%1!0!'O'2M4G"5?3$$!/!)!/@!L!G''B"&""'?&G%15( !/%":
,G""3-4&0P%/!)"<G''&1GPL"G/&'"4%!//)4%!0P0! /1!-1!'P"/"'1!0P"/$&/1G)%5 1G"/%E&"-!!"'!0!0P !4("%"- 0PJ@LL /1!?'(GP&":"%'G""3-4&0P%""'!B/"4%!//)4% K !"'!O'1!0$!'!'"!"4!"2&L@!"31&4%!//)4%G@G:!11!0'!?2"!4G"-4&0P"/$&/1G)%51G"/%E& K/K'2(!"/"'1&"" /1!"!1?'"!M!$!'%:1!"5(3$!'2%"F?&)G"5'!'%(3' /!3/B 15(&J@/G1B"@ /1!?'(GP&"/$&/1G)%51G"/%E%"://!'?/!/" O0-1!/" 1G"/%E&"%1G)%5%(2L! G'"&""@:1!"5(31FK(!K !"!2 private void UpdateFrameMatrices(XFrame frame, Matrix parentMatrix) { frame.CombinedTransformationMatrix = frame.TransformationMatrix * parentMatrix; if (frame.FrameSibling != null) { UpdateFrameMatrices((XFrame)frame.FrameSibling, parentMatrix); } if (frame.FrameFirstChild != null)
NQ
{ UpdateFrameMatrices((XFrame)frame.FrameFirstChild, frame.CombinedTransformationMatrix); } }
1!"5(3!'24B GGG'?/!" "/%E"!'@!@!'!!""3G'%$&/0"GG"-!'"&'GG"-G'GGG"'!B/51G"/%E '!H1!'P!"!"% !"B"%?/1"!/!!"10GL$&0''5 &(!'%!>!/1!/(1!0I:4%!//)4%GL "K/"2 %0G'G4& /1!&"G'P"1!"5(3G"4G'@3 /1!%L'%0"3G'%?&)!'2"!" /" (@ %H"!4G"&/&K !"!2-"3G'%'!0P%"!'! 2?&)G"IX /1! %/"4%'(/"!'!1!/F! "3G'%?&)!'20P!/1!"(@1!0:
Y 4%!//)4%GL"G/&'"&L@!"31&/!3/B %/@&'GG"!(!1P!%: private void DrawFrame(XFrame frame) { XMeshContainer mesh = (XMeshContainer)frame.MeshContainer; while (mesh != null) { DrawMeshContainer(mesh, frame); mesh = (XMeshContainer)mesh.NextContainer; } if (frame.FrameSibling != null) { DrawFrame((XFrame)frame.FrameSibling); } if (frame.FrameFirstChild != null) { DrawFrame((XFrame)frame.FrameFirstChild); } }
Y * /1!&L@!"31&L"G/&'" !41!0@!'!B"!:1!"5(3L!'G0""G"K/"%!/%"-4&0P (&"" /1!"3G'% !4&"%!/ML!L2/KK""'" M!"G/&' 0P!1H!'"L!&' G'"" !'(2'"I:!'G0""G1!0@!'!B"4!4G'"!$$!"31!0$!'!'2"!)4%G@G% G'"GG4&O0!:""2' !( !"! !P0!0P&/'"%'01!0!0P!!:! GK !"!2 Mátrix-paraméterek beállítása az effekt számára (vetítési és egyéb mátrixok); A Device vertexformátumának beállítása; Ciklus az alakzat által használt minden anyagra { Anyag-paraméterek beállítása (diffuse, specular, ambient és egyéb tulajdonságok); if (az anyaghoz tartozik textúra) { Textúra-paraméterek beállítása; } //Ez az effekttel történı megjelenítés általános sémája int passes = effect.Begin(0); for (int pass = 0; pass < passes; pass++) { effect.BeginPass(pass); A Mesh adott anyaghoz rendelt lapjainak kirajzolása; effect.EndPass(); } effect.End(); }
N8
!$$!"4G'"&/G"!4G"!'2K/''1&"""!)4%G" G'"&""3%-1@(!0%1!"5(3"4B 1!0"3(@3-(&"""!)4%4GP1!!"!""/"'1: %(!!0P!1!!"L!1!0!''%1"!'O%/@&'G"- 1!'P!"!$$!"!0%(1!"5(3KK"" 0!4!"O!':K!1!!" 0!" !'( 1!"5(34B GO0!: 9,. +,+ ?/1"!/! G'"&""GG/&'0G'5!KK'!B/GK !"!2/L!"'G'4"5:
<* ,,S , ?/&0/1&""G%)'&"1!0 '5B"5!K/!(!/!0P%"F:!'2%"!"!0P! ?/1"!/!K !"'! '5%(!@F G'"&""GG"'!4!"2 "! 21&(3'&'&"@G:K !"!2L!!!!" !!1&//:
. &/GLL1!0%1!/"O1!0@!'!B"%$&'P1"&"-1%"&&/(%G"'!?!!&/&"G":!&/&"!0P% "0@!"%-1@( !"B"%"/$&/1G)%5-1!'P4G/&1(%1!%5"/!0P/"!0P"(%1!%5B/?!% '!: %/!)"AG'"'G&BL!'%0!&1!"/%% !"B""4G':&'P$'!0P!!!!'!1''"!"4!"2-1!'P! !0P%"O"!"!""?&"L5'-J: !"B"%K??&"L5'%(3'%:K??&"J: !"B"%B!0P/"!'1F! 1!0(@G !"B"":4G/&1(%1!%5&L@!"311%(!)J)?&"@G!/!"O'4J3%'P!$'!0P!!" H !"B"230/" 0P?/&@!"&/"I:&L@!"31BL!'%?")J)?&"&?!4"G/&1!0-1!'P! ?/&@!"&/&(&"" !"B"%B1!"?&"@%'!!: * !"B"%K??&"&"-1%"?/&@!"&/&KK1!"?&"@G" 0"!'!"G &'%""!'!O$!'-&/ !"B"230/!0P1G'?G/431&4'(-?G/431& !"B"4!@3"3:''!!2!!"L! ?!/?!"% %3 !"B"/2' 5: ?G/431& !"B"1!02/%1&(!''!L!'O'4&JG0&/GP%"K0!!"%@5'!1''"!"%:! L!'O'"$'! !"B"%15(&"O'KLK"!"O1!0!/%"-4&0P !"B"230/1%'P!K0L!/% !"B"%B&": !/2'!0! !"B"/2' 5-4?G/431&4'(5?/&@!"&/& !"B"%B/1!/2'!0!!:%'P! !"B"!1G/3'!'"J'&"&L@!"31"/L!'%"3'@(&G0%/5'-!/"G'"'GL!0P!//!"KLL1!/2'!0! !"B" 4G'"G '-1%"!0P"KLL!"L2'13""@GL!&L@!"31&":H"4B @G"KLL!"!V13'"% %!>V1!/2'!0! !"B"!-&&/"'G'&4"3 !'!4G/&1(%1!%5"!/ !2?/&0/1&G'-4&'/!(!/%"!'K'!"- &'('!"$!'O'!"!0P!//!'G"4"5:I !/2'!0! !"B"!!" !"B"%B&L@!"31"!/! '1!'P% "!0!'P !'?G/431&: 1!P%L! !"B"%BG'"'G&4!'P!"L! &L@!"31&&/(%G"M"!0!'P!%4! %&PB" -&/ E&&1!"/%3 !"B"/2'L!'O:*1%(!&&/(%G"M"!0!'P30P&'PK0L!1!"% !"B"%B&"- %&1!"/%3 !"B""?3:%&"4)""!0!'P1!"%B&"30P&'PK0L!-%''!" !41%(!K0 O'KLK2-&//!(/!(%1!"/%3-"/%1!"/%3 !"B"4!@3"3: ?G/431& !"B"!1G%)&?&/"@G"$!/(! !"B"!H&L'%`3!?/&@!)"%&I'&"@G:0P$!/(! !"B"" 4G/&1(&'&04"G/&1!0 !"B"%B4!'P!"!&L@!"314&?!"-?/&@!"&/& !"B"%BG'"'L!G/" K0-%''!" !?/&@!"&/&4!'P!"! !"B"%B&/1G' !"&/G4&?!":'!00P&/%LL$!/(! !"B"!!0P%! '%!/E&&1!"/%-4&' !"B"230/ !"B"%BN;$&&K0!"G/L!: !"B"!1G%"B?3?!/?!"% %3 !"B"-4&' !"B"%B%/GPGL5' !?/&@!"&/& 1!04"G/&&"""G &'G0L'! 2 !"B"%K??&"L"'G'&: !"B"%15( '5G04&K!'!LLG''5 ?!"G''B"!'2
NC
G/431&&-1!'P!!1 !"B"%B'?G/431&B& -!0PJ:!'"F%?&" %/GPGLK!"/": &L@!"31&1/!"!$O00K??&""5' !"""G &'G03"5': &L@!"31&'@"&/3'4":
?!/?!"% %3 !"B"!%""& GLL&"G'P&4"5!/%"-4&0P1%'P! !"B"%B!'4!'P!!(! &L@!"31&&&/(%G"/!(!/!"!0!'P!%4!?!":0P?&"&?!/?!"B G/5'L!'O-4!0P"!0!'P 1!"% !"B"%B&"X!""2-%''!" !4G/&11!"2"!0!'P!!""M-%''!" !4G/&1?&"&?!/?!"B G/5' 5: %/!)"AG1G/ !"B""!/1!"!!!0P4&1&0"/$&/1G)%51G"/%E:?!/?!"% %3 !"B"% 1G"/%E%/!)"<ML!"$'!??!G/1""4"5: !'21!0K!'B"!0P!/F'!B/GG4&"!0PO$!'-4&0P !"B"%B1!/2'!0!M"!0!'P/!:,!0P! !"B"%K??&"&&/(%G"M/!(!/&/%05@GL- !"B"%B"G &'G0K??&""5''!0P!:&/ !"B" G'"' 0/!4@"&"""/$&/1G)%5"'?/!&"4"5!0P!'"&'GHMM !'I-%''!" !!0P!1'%!G/%G'GG: G"/%E&''!B/ $ .u$ .$ . X X X X 1G&(%1G"/%E4&1&0>&1?&!"&"@M !'://!/" O0-1!/"%/!)"<1!0K !"!'%- 4&0P?!/?!"B !"B"%1G"/%EHA-NI4!'P!'! 2!'!1!D'!0P!X2LL%1'P0%"!)%'1F !'!"!1%"": 1!0K!'B"!1 !%$%0P!'!1L!!"%0J'PB'G%K0!%"-!'2G''5M/"!"G &'G0K !!( !' %0!K!'!4!"!!0P1G4&X1!0!4!B" !1'P0%"!"!'": 1G%1!0K!'B"'G1B"GL !O1!0@!'!B"%0J'/GP%"-!0P!/F!'!0 10G0- 0P0J'!0P%PB'GK0!$!'4G'GG 'H!"4B @G$%!'(M&$M %!>'?J1!0K!'B"!I:Q:GL/ !!1!0K!'B""!1''"!"%:
3 - )! ! 4.( $0 %/!)"AG'"'K !"'!O'"G1&0"&"" !"B"%15(&1!/2'!0!?!/?!"B !"B": !"B"%1G"/%E& %/!)"<L!?B"!"" "/%E"/3"J/G@G4&(!$%%G'"""%31!"5(3&!0B"0 !'0!!/G'""4"5:,!4!"20 !0P/G"@&LLM-%''!" !L'&(/GJ&&/(%G"/!(!/4!1!0$!'!'21G"/%E&!'B"/!: %L'&(/GJ /!(!/4!O'" G'"&"&"$&0@3L!13""%-1% !'%/!)"<ML!!/!(!/'?/"!'1!!""X?/&0/1 %!!!"4G'@:
"/%E:/"4&,*H$'&">%("4-$'&"4!%04"-$'&"!/'!-$'&" /'!I1!/2'!0! !"B"%1G"/%E&" (!$%%G':1G"/%E?/1"!/!'?@GK !"!2??G''!'2
;7
x w w w w v
(!&'
( '*!+'&
\OoN"* y*OoN"* y*OoN"* \OoN"* y*OoN"*
| { { { { z
""!&''*!+'&!"%0J'H1!'P0P&/'"%'0!0P"0'"!"I'!0"10G0G"@!'!"%- 1'P0"\OoN"*y*OoN"*O'KL0!(@1!0:!K!'%"G &'% G05B&"G &'G0%:
"/%E:/"4&$$!"!/,*H$'&"'!$"-$'&"/%04"-$'&"L&""&1-$'&""&?-$'&"!/'!-$'&"$/'!I !'2LL%!!"L!&&/(%G"/!(!/&/%05@!"%0J'K??&"@GL!!"":!0PG'"'G&LL!!"X 1!"5(3?/1"!/!%0P&/'"%'00J' G05B@%"G &'G0G"(@1!0!E?'%)%"15(&-/!(/!L' &'('%-@&LL&'('%-'5-$!'2-%''!" !K!'%"G &'% G05B&"G &'G0G":/"4&,*!!?!)%G'%!!"!- K !"!2/"!1!''!""N*B& !&'( O!+'& !&'( L&&L_ '*!+'&( &LM '*!+'&(:1G"/%E'@K !"!2'! ( x w O!+'& N*B& w w w w w w=N*B& O!+'&? v=N*B& O!+'&?
( &LM L&&L_
=L&&L_ &LM? =L&&L_ &LM?
\OoN"* y*OoN"* y*OoN"* \OoN"* y*OoN"*
| { { { { { { { z
"/%E:!/?!)"% !,*H$'&">%("4-$'&"4!%04"-$'&"!/'!-$'&"$/'!I!"%0J' 1!0(GG4&1/!"!%"4G'@:!'2G''51G"/%EK !"!2'J'! x w w w w w w w v
( u y*OoN"* !&'
( '*!+'&
\OoN"* \OoN"* y*OoN"* y*OoN"* u \OoN"* y*OoN"* \OoN"*
| { { { { { { { z
"/%E:!/?!)"% !$$!"!/,*H$'&"'!$"-$'&"/%04"-$'&"L&""&1-$'&""&?-$'&"!/'!-$'&" $/'!I1!/2'!0! !"B"4!4&'5!%!'2LL%G'"'G&!!"!: G"/%E ( u y*OoN"* x w O!+'& N*B& w w w =N*B& O!+'&? w w =N*B& O!+'&? w v
( u y*OoN"* &LM L&&L_ =L&&L_ &LM? =L&&L_ &LM?
\OoN"* \OoN"* y*OoN"* y*OoN"* u \OoN"* y*OoN"* \OoN"*
| { { { { { { { z
"/%E:!/?!)"% ! & ,*H$'&"$%!'($%!> -$'&"?!)""%&-$'&"!/'!-$'&"$/'!I ?!/?!"% %3 !"B"1G"/%EGL0J'$O002'!0!PB'GK0"%$%0P!'!1L! !%:?!)""%& ?/1"!/!"%0J''!0M10G0/GP:1G"/%E'@
;D
x w w w w v
!&'
'*!+'&
\OoN"* \OoN"* y*OoN"* y*OoN"* u \OoN"* \OoN"* y*OoN"*
| { { { { z
""'!"%"/L! !""10G0-1!'P' L&=B!*NmB}!*-(?'L(5(%X!"%"/L! !""'!0-' YM*&[&!LML5'G1B"4"5:
+, %/!)"A&)!?)%5@GL4G/&1(%1!%5@!'!!"!"!0P %/"3G'%1!/G!/!"O'!1''@O-1!'P!" @!'!!"&&/(%G"/!(!/L!4!'P!O!':1!/?&B)%5@%/GP!0B"0 !'!0PJ@LL &&/(%G"/!(!/"(!$%%G'3-1!'P!"%/!(!/H %!>?)! 0P)1!/?)!I:LL!1!/ &/%05L4!'P!!(%!'-M"!0!'P?&%"B %/GP$!'"!%"-PM/"!$!'$!'-1B0E/"!%L'/ K !!(!: ~~~~~ %/!)"<ML!1!/1&(!''@!4G/&1("L5'G''1!/?&B)%5@HoI-$53?&"@H\I-%''!" !o\ !"&//1!/2'!0!BL?&%"B %/GP"1!04"G/&5 !"&/HIH!1''!"!!!T$!'$!'U%/GP"(@1!0I: ~~~~~ M"!0!'P!'!I- !4G"!"%"/$&/1G)%51G"/%E4G/&1K!"! 2L2'G''!'"&'GoML!-$&/0"G\$!'Ho\ $&/0"GB@GL: "/"'1!KK!"!"%1G"/%E0!!/G'""GG/%X%1" "/%E1!"5(3%"4G'4"@3: '&(/GJ&&/(%G"/!(!/!!" Matrix.LookAtLH(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector)
1!"5(31!0$!'!'2: ?/&0/1$3"G&/G1!/4!'P!"!$&'P1"& G'"&""4"5V!!'!0PO""!"%1G"/%E% G''(5 G'"&%: !" !"B"1&(3'G'"' G'"&""4"5L!G''B"G& !"B"15(@H?!/?!"B 0P?G/431&I: !"B"%0J'1%(!B@G"G &'G0: !/?!"B !"B"!!"$O002'!0!PB'GK0-?/GP:
,9+ ,G""3-4&0P%/!)"<G''&1GPL(!$%%G'4"5J:P0&-1!'P!"G!0P!'?&4&/!(!'4!"2!: P0&L%"&B"@G"-4&0P!0P!'?&"J0P"3(@3!!'%-1%"$!'O'!"!!"-1!'P!K/P!!"L2'@K 2 4"G&/H?':$PI1!04"G/&&""15(&/!0G': ?/&0/1LP0&" "!/%'E"/3"J//!?/!!"G'@:%/!)"AE"!(!( "!/%'"/3"J/G@G4& 4&'5K !"!2("&""/"@3L!!P%' G ColorValue ambientColor; ColorValue diffuseColor; ColorValue specularColor; ColorValue emissiveColor; float materialPower; String textureFilename;
//ambiens komponens //diffúz komponens //spekuláris komponens //emissziós komponens //tükrözıdési hatások erıssége //a textúra elérési útja, amennyiben elérhetı
!!B O'"/3"J/"/"'1!0P(! F(""0&"&&B"G1!0KPB"/!:/"! G''&1GPL1!0(&""P0 -!!4%GPGL!0P!0P!(%0!!/G'" :
;6
%/!)"<G''&1GPL(!$%%G'"P0&'!?!! "!/%'E?'(GP%L"K/"%:1!P%L! G''&1GP!0P!"'!P0&"!1(!$%%G'"-?!)%$%G)%5"K !" !'?/"!'1!!""-$!4/B4"GJP0 '!&L@!"314&/!(!' !: &'&/'3!"/3"J/ B/"!"G/&'GG/&'0G': ,G""3-4&0P1!0@!'!B"4!&L@!"31&'?@%"')&?&/"&/L&"@-&"G'P&G'?@ H!!"'!0!!1G!1?&"&1!''!""I'?&4&/!(!'"P0:/"1!0@!'!B"&/!'/4!"2!''4&0P'!0P! K!P0(":%/!)"<$%E!($3)"%&?%?!'%!!!!"%$&/1G)%5" /1!&"G'PL"/"@P%' G- !4K!("G""/"'15 !4&"%!/?'(GPL:<4/?!!"P%' G"/"G" "!/%'&"%!/ &"G'P 0%:!&-4&0PP0&("%"&'P&"!E"3L%!'/4!"2 !''"!%-4&'?&)G 4%!//)4%G@HLL"G/&'" !4&"%!/M!I!1!'/4!"2K !"'!O': "!/%'&"%!/%0GL5' K!K"2?&)L!&' 5P0"3'@(&G0&1&(3'KK""X%'P!15(&!1)1!0@!'!B"" "G1&0"@-4!1!0P!P0&1%(!"3'@(&G0G" G'"&""4"5 G"!%: %("$3)%5'?@%P0&"!E"J/G"G/&'GG/&'0G'5%)"%&/P?'(GP&H'P!0L! !!"GL'"B?3J("!/!!"!X3')M/"?G/&I private List<MaterialEx> materials = new List<MaterialEx>(); private Dictionary<string, Texture> textures = new Dictionary<string, Texture>(); private Dictionary<string, int> matIndex = new Dictionary<string, int>();
"!E"J/GP%' G"/"G!'/%J"'?@G"K/"%:'P!15(&!'!/O'4!"2/!(3(G"G/&'G: P0&"P'!0!("%1"!/%''%"GL!/O'!:1"(!E("!/!!"L!%/!)"<G''&1GPL'! 2 P0! !4!!0P!(%&/G1&"/!(!'O: !4&"%!/G1G/!'!0!(2O0!P0& &/G1%"!'"G/&'%: //!'G"5'0L&P&'3'"1!)4%13//" O0-1!/"%/!)"<G''&1GPL!11%!1 (G'P&1!0P0&"KLLK/%(!$%B)%5@G":"?"'""13""@-4&0P!11%(!0!!/G'5&$" !/ !'0%"!''%0!!LL!(&'&0L-"KLL&L@!"31!!"0P/KKP0&""KLLK/J@/(!$%%G'@G: "!/%'&"%!/J@P04&G(G&/!/"!''!2/" 0! //mat a hozzáadni kívánt MaterialEx példány if (már van ilyen nevő anyag) { //akkor a név alapján kikeressük a neki megfelelı sorszámot return matIndex[mat.Id]; } int a = 0; foreach (MaterialEx m in materials) { //Az összes tulajdonság egyezése esetén a két anyagot megegyezınek tekintjük if (m.AmbientColor.ToArgb() == mat.AmbientColor.ToArgb() && m.DiffuseColor.ToArgb() == mat.DiffuseColor.ToArgb() && m.EmissiveColor.ToArgb() == mat.EmissiveColor.ToArgb() && m.SpecularColor.ToArgb() == mat.SpecularColor.ToArgb() && m.SpecularSharpness == mat.SpecularSharpness && m.TextureFilename == mat.TextureFilename) { //Már egyszer eltároltuk ezt az anyagot, név alapján kikeressük az indexét; ugyanakkor feljegyezzük, hogy az aktuális névhez is az az index tartozik matIndex.Add(mat.Id, a); return a; } a++; }
&'&/'3!"/3"J/&/0L1!"5(3 B5(&"!0P!/F%"/"!'B"@-B0P!0P!/FLL K!4&'B"G: P0"3'@(&G0&'?)&'"&G1B"G&4&1!0@!'!B"4!4G'"!$$!""3G'%P0 1%(!"3'@(&G0G"P%' G"/"@:!"3'@(&G0&!0P/"!$$!"@G" "!/%'"/3"J/G@G-/L! "!E"J/M(!'/G)%54&G"/"&51?'!/M!!/!"O'/4!"2!'
;A
struct Material { float4 materialAmbient; float4 materialDiffuse; float4 materialSpecular; float4 materialEmissive; float materialPower; }; Material material; texture tex1; sampler SampTexture = sampler_state { Texture = ; MipFilter = LINEAR; MinFilter = LINEAR; MagFilter = LINEAR; };
1&(3''!4!"2 "!%K!(!$%%G'"P0 '1!P%P%' G"/"&"""3'@(&G0G G'"&""GG"- L!'!/" !P04&/!(!'""!E"J/M4% "&G"%:3"5LL%0'&LG'%%1!0"!4!"2-"!4G"$!'4G'5 '!4!"20! '1!P%P0L'!)!/'%(&"""!E"J/G/"K/"24% "&G"-4&'!'2$&/(3': 15(&B"G&!0PP0/ &"&50'&LG'%%/ P"!'!B"4!"2:
,+ .+-+ ,+ 1!0 %'G0B"G!0P! !/"!E!4!/!(!'B/"!"K !"!2%$&/1G)%5'?@G(&"" !/"!E' 4G'"P0"3'@(&G0%-$P$&//G"3'@(&G0%-%''!" !J: % !/2(%1&(!''-1!'PG1B"G&" &/"(!$%%G'@: %/!)"AJ:'&G'%1!0 %'G0B"G%1&(!''"4G':!4G"1%(! !/"!E4!J0PG1B"@3%B"-4&0P K!"KLL% !/"!E"2'$O00!"'!!"!%"@O:LL2'K !"!2!/!(!/!1?!K !"'!O'G/P&" !'2G''B"%-1% !'!1 %0G'@&L@!"31&!0P1G4& '5 %&P%": P0"3'@(&G0&%1!/!"L!%/!)"A1%(!!0P! !/"!E/!1!04"G/&-4&0P(&"" !/"!E!" 1!0 %'G0B" 1%'P! % !/2(K !"!%L!V % !/"$P1/"!4"G/&1!0-&L@!"31(&"" !/"!EL!1%'P!BF'!: % !/"$P!K !"!2$&/1G%"O'KLK"!"%1!0 1L%!'P$P"@!'K'-1!'P!$&//G@!'!!"L!1%(!&L@!"31&"!0P$&/1G %'G0B"1!0: ,!0!0P!/FLL!4G""/1!0 %'G0B"G"?!'4!"2!':&B)%5%/GP"3'@(&G0%!1/"!'1!!""!: %(!&L@!"31B%"!%"GG"!0P!'!"!!K !'%: %$$J'P$!'O'!"!!!""?"'4"5-1!'P!(&""K0L!/!2$P30/"1%(! '!4!"0!%/GPL1!0K!'B"2'!0!0P!'2%"!%"G'5/@G"H4"K?&L!!!"1"" $!'O'!"!!! !OI:%/!)"A%"",1L!/"M$'!&%3M"K/ P!0B"0 !'G1&':%"!%"G $O00 !/"!E4!"/"&5$!'O'!"%&/1G'%$P"!/@!(%%/GPG %&PG"5'-(!$O00!"'! 1!0$%0P!'24!'P!""2': ?!3'G/%$!'O'!" %!'!(!'!0%GLL!0P"OK/4K4&'B"4"5L!/!2$P0P/" $!'O'!"!0P!"'!30G/" !/% %H0P&/'"L!!"O/K2(2$!'O'!"!I:LL!!!"L! G1B"G&&?"%1G'% % !/2("""!'!%$!'-L!/!2$P30G/ % !/"$P30G/ 30P&/K0!"G/L!?&"L !""$!'O'!"%&/1G'%':%"!%"G1!0$%0P!'24!'P!""2'% $O00:%""4&0M'%1&(!''"4G'@: 1%%50GL5'%""!1% % !/"$P/2'-4!1&L@!"31G'"'%L&)G"&""$P/2' 5: !!''!/!%/!)"A%'P!"3'@(&G0J&L@!"31&"!1"!%"%$P$&//G&:!0B"0 !' $'3&/!G'54&'5$!'O'!"!!"'!4!"1&(!''!%:
;N
%/!)"A4G/&1$'!$P$&//G"?!1&(!''!%%/GPB"&""-?&"!/F?&"$P$&//G&":KK "3'@(&G03$P$&//GG'"'%L&)G"&""$P%"!%"G-1!'PO'K1L%!-(%$$J-?!3'G/% &1?&!!% !'(4"51!0: %/GPB"&""$P$&//G@!''!12@!$P30/KK%/GPG"1!04"G/&5 !"&/: !/"!E!L!G1B"&"" % !/2(%"!%"G!1$O00$P$&//G4!'P!""2'X1%(!&L@!"31&"!0P!'!"!! %'G0B"1!0:G &'% $P$&//G&-!'2&/L?1&(!''!/!4G'@G: ?&"!/F$P$&//G1%(!%/GPL!0P!'2%"!%"G'L&)G"%$P"-!0P1!04"G/&&""?&"L5':* $P$&//G"G &' &L@!"31"5'-4"GG""!%" !%/GPB"&""$P$&//G"K!'B"%X!''!!2!!"L! O'KLK2)J)?&"&LO'KLK2K0L!/!!L!$P30/:?&"!/F$P$&//G4"GG"!0P 1!04"G/&&""4"5K/L!H["+*I$!@"%%-1!'P!L!'O'$P%"!%"G!0P!'!"!!0P!0O':! 0P!0O'!1/""!0P"&1?B"G%$"&/H&&*"W&!L"ILG'P&: ?&"$P$&//G4"GG"!0PJ?!/F"/"&1GP&L!'O'$!@"%%-4&'5!0P!L'G1?G4&:J?&L!'O' $P%"!%"G!1)$P$&//G"5' !"""G &'G00' G'"&%X1!0 %'G0B"&"""!/O'!"!L!'O'%""/"&1GP '!!'O'KB"4!"2!0PL!'2- %'G0&LL/-1!'P!"bK04"G/&1!0X!0PO'2-0P!0LL! 1!0 %'G0B"&"""/"&1GP-1!'P!"K04"G/&1!0:!""2KK""%%"!%"GG"1!!" ''&$$?/1"!/L! (4"51!0:*\NNLBB G -G"1!!"4%/"!'!'!-1B0\NNLBB E !!"$&'P1"&LLG"1!!"!" /4!"O!': %(! !/"!EL! % !/"$P%"!%"GG""&1?B"G%$"&//'1&(3'G'@3:/GPB"&""$P$&//G!!" &&*"W&!L" :&"!/F$P$&//G!!""&1?B"G/"!["+*?/1"!/"2'$O00-10?!(%0 &&*"W&!L" C
G ["+*D ` ` ` ["+*
"3G'% !/"!E"G &'G0$P$&//G"5':` -` ` /!(/!"&1?B"G&"-'%!G/% (/"%3 "0@%"@!'K'%:/"Oa7-jI%"!/ ''31L5'!/O'4!"%-'!0'GLL!0P%O!13'': ?&"$P$&//G!!""&1?B"G VML& VML& VML& VML&
hggf D &&*"W&!L" VML& E VML& VML& VML& VML& VML& E VML& VML& $P%L&)G"G%/GPG !/"!EL!4J&"" !"&/'G/&/"XVML& 36S=b(?- VML& 36S=(?: ?/&0/1L!0P!//!1%(%0!0P!"'!$P$&//G"B :1!0 %'G0B"G" 024(!/!0P@G",%04"! F "/3"J/GL$&0@K!$P$&//GK!"3'@(&G0G":"/3"J/'P!0L!1!0$!'!'%/!)"A,%04" "/3"J/G@GX$!'?B"!K !"!2 struct Light { int iType; float3 vPos; float3 vDir; float4 vAmbient; float4 vDiffuse; float4 vSpecular; float fRange; float3 vAttenuation; float3 vSpot; };
//1, D, D^2; //cos(theta/2), cos(phi/2), falloff
?&"(""0\NNLBB-VML& VML& /"""G/&'@: %/!)"<G'"' !/"!E!4!/!(!'"B/"!G'"'G&
;;
"&*"!&Y `_!*"& X!BBWY* VM*WNO _!YY!*
?'!"!/%"!/O'!%G1B"G/-4&'"0&1%(J:1!0 %'G0B"G%"!/1!XKG''5G1B"&""/"!: 1L%!"!/1K !"!2??!G1B"4"5 `_!*"& &*O!N `_!*"&=NLN`_!*"& &&*"W&!L" 9 J!+'& `_!*"&?
"&1?B"G%1&(3'G)%51%(!O""$P$&//G"B?3G"5'$O00:NLN`_!*"&&L@!"31&"5'$O00!"'! 1!0 %'G0B"G"(@1!0-1!'P!(!/""!:1L%!""3'@(&G00'(4"51!0: (%$$J%"!%"G!11G-1%" !/"!EL!L!/!2K!(%$$J$P%"!%"G-1!'P!""&1?B"G% $"&//'-1@(P0(%$$J&1?&! !'1&(3'G'3:G1B"G&/G''13,1L!/" % !/2(% ?'!"":,1L!/"M$'! % !/2(%1&(!''L! % !/"$P%"!%"G !/"!EL!G1B"&""$!'O'!"% &/1G'%$P"!/@!(%%/GPG'"'L!G/"K0&%3"(5(%:*1%(" !"&/&/1'%G'"- &%3'G/%&/"L5'?4"5-"!4G" L&=" J!+'& X!O?:!0"B !'2@!'/!/" O0- 1% !'" !/"!EL2'%$!'-J!+'& X!O?!(%0 !/"!EL!13"": %(!!'?@G X!BBWY* &*O!N X!BBWY*=&&*"W&!L" 9 J!+'& X!BBWY* 9 ?
?!3'G/%%"!%"G-1%"1G/!1'B"!""!1-4&0M'%1&(!'''?@G!/O'%G1B"G/:!/%" % !/"$P%"!%"GNY !/"!EL! !""$!'O'!"%&/1G'%!0PJ:$'3" !"&/G'"'L!G/"K0 &%3G"5'$O00:"%1"'G/%&/""'?@3-1!'P!"P0G'"'(!$%%G'"!/20%!0PO""4"5 4" GPG/!1!'@O:!0PO""4"5$!'O'!"!1!0@!'!2"O/K2(%$&'"&H?!)3'/4%04'%04"I%"!/@!(" $P%"!%"GG"4"G/&1!0:!4G" VM*WNO &*O!N VM*WNO=&&*"W&!L" 9 J!+'& VM*WNO 9 NYhcAdRhgeAlghdfAd ?
&L@!"31G'"'K !"'!O'%L&)G"&""$P%"!%"G!1$O00!0P!"'!$P$&//G"3'@(&G0%"5'-!1 !/"!E!0PL("%"5':/"
_!YY!* &*O!N _!YY!*
+ ,+ G/P'G"4"G/&1!0-4&0P !/"!E!4!/!(!'"B/"!'?@G4&0P/!(!'OB/"!" ?/%1%"B !H4G/&1K0!IL!'2?&"@%4&: %/!)"A"G/P'G%15(&"%1!/-!!$'"-%''!" ! &3/3(M$'!G/P'G:
'"G/P'G%15(!!""3G'%?/%1%"B 1%(!?&"@GB!!'2 !/"!E!B%$&/1G)%5@GL5' !/O'1!04"G/&G/:!0P!?/%1%"B !KK""G'"'GL'!!% !4!"2'!!4"G/ &':?/&0/1 !/"!E4(!/!!44!G/P'G4&!1"/"'1O'K5(&"X$%E!($3)"%&?%?!'%!&'0G'""G%" !% %0PL!:44!4&G"/"&5"!)4%'!B/GGLL!G''B"@31!0$!'!'2/!(!/""!"3'@(&G0&"4(! &(!k
'": &3/3(M$'!G/P'G&/G !/"!E!L!G1B"&""&/1G'%&L5'%(3'3%:!'?@G1%(! !/"!E4!G1B"3%"!%"G/"!!"!0P"!"2'!0! % !/2(%1&(!'''?@G:!%"!%"G/"!!' 3"G!'2K/(&""?&'%0&'!%1!"-1@(?&'%0&KLO'2?&"@%'%!G/%%"!/?&'G)%5"4@"3 0/!: %/!)"<ML!@!'!'!04% "'&%)%1?'!1!"G' -(!?/&0/1"!'@!0%0P!1%"""G1&0"@ 4&0G/P'G%15(&"%: 4&0G/P'G&/G1%(!?&"4&O'KG1B"3&/1G'%": !/"!E!L!(&""&/1G'%& $!'4G'GG '!'2K/'!1!"-1@(?&'%0&L!'2?&"@%/%"!/?&'G)%5!0B"0 !'?@3 &/1G'%":%"!%"G/"!%!!'?@G?&"&"G1B"4"5"!"2'!0! % !/2(%1&(!'' 4G'"G ': % !'!G/P'G%15(?%E!'%"F-!/"4&G"/"&5G1B"G&"?%E!'4(!/ 0%: ?/&0/14&0M'%M$'! % !/2(%1&(!''"4G'@-"!4G"1%(!?%E!'/!%"!%"G/" `_!*"& =J u y? u X!BBWY* =) u y?hcAdRhgfAd VM*WNO _!YY!*
;=
'L(5(%-4&'J$P$&//G?&B)%5@GL13""5 !"&/Xy&/1'%G'"&/1G'%-)J0P! !!"" $'3"H4'$>PI !"&/-) =J }?J }-}2?&"L13"":4&0M'%1&(!''!'P!0L!! !"&/'?@:!/!(!"%4&0M1&(!''L!&?"%1G'% % !/2(% !"&//'=[?G1&'5[ u }"!/1 !/!?!'-1!'P" !"&/G'"'L!G/"K0&%3G"(@:) u y!!K0&%3G$!'"K!'B"% H%!?")$'3" !"&/! !"I-!G'"'G1B"G!0P!/FK(%: !0 %'G0B"G-G/P'G1&(3'G'"'15(&B"4"5L!G''B"G&
$P$&//G"B?3: %L&)G"&""$PB!: G/P'G15(@: *"530G/: "&1?B"G%$"&/&"-'%!G/%-0P!"!"0@-!!$%0P!'!1L! "!'!!0!('P!!"%'"G: ?&"$P$&//G!!"J?"PB'GK0!- '1%"G"1!!"!/20"LG'P&5\NNLBB ?/1"!/:
+Z ?/&0/1'!4!"20!"L%"&B"$!'4G'5G1G/-4&0PK !"'!O'1!0@!'!B"L'GL!0/ !0B"0 !'1%(4G/&1'? !"2"/$&/1G)%5"!' 0!4!!"!'@!@!'!!"/! !:L'!0/0&1LL' $&/0"G-@&LL!0/0&1LL'!'"&'G 0!4!"2X0K/021&0"GG 'G'GG15(&B"4"5: !1F !'!"!K !"'!O'!"%"/$&/1G)%5/ 4"G':?/&0/1L!"%'!?!" &(!'%!>!/1!/&"G'P$&0''@10GL: &(!'%!>!/1!/!0P&'P1!/G"1&(!''!-1!'P&L@!"31&K/O'!0P0K1L4@?&"@%L 4!'P!!(4!"!'X'P!0L!L(&?&B)%&G'4"5@!'!!"K/O'-G/!0P1F4&'( K'(K/O'%?G'PG: !!/!(&)!?)%5! !%&/L%"G'%1!/: "/$&/1G)%5!1?&"@GL5''!0'P!0!!LL1!"5(3 /1! & !-1!'P1!/4!'P!""$/%B"% $!'4G'5%"!/)%51!0$!'!'2!:1!"5(3 GK !"!2 D: *!0/0&1L& '1!'P%!'! P&1 -'!/(!O?&B)%5 G'"&G0PG0G"3"&'54B G5" !'"!'"%(2$O00 PL!H!"%(2"1&0G1!P%01&(3'G'GG/4G'@3-%'P!15(&$%&1LL $&'P1"&LL1&0G4"G/4!"2!'% G'"&G&!!"%I: 6: !04"G/&3L!K !"!!""1&0G%/GPG"?("!!'&)%"P1!"5(3': A: 0K/021&0GG 'K40L G'"&""@31!/"G &'G0G"1&(!''K??&"@G"5': N: 1!/$53?&"@G G'"&""G!0/1&0GG1!0$!'!'2!:!0//!'"K/"21&0"G4& ?/&0/1J:/)L''&)!?)%5"4G'@:!11G-1%"!0P0K1L-1!'P1&(!''"%10GL $&0''@:!0/1&0"G&/G1&0G!(2M 0?&"@%4&H1!'P!?!/P2?&"@%I 1!0!/!O!!0K1L!1!0$!'!'2?&"@%"-0K1LK??&"@GL5'?&"&L13""5 !"&/&":! !"&/& !"&/%G'%&/"&'P !"&/"!/!(1P!-1!'P1%(" !"&// 1!/2'!0!:1!/2'!0!'!$&/0"G"!0!'P!:"!'2LL% !"&/'G/%&/"?!(%0$&/0"G K0!&%3G"(@:("&$!'4G'GG '$&/0"G4&"/"&5R3"!/%&"/3"J/G"G''B"3 !'2: &(!'%!>!/1!/!0P%'P!/)L''!0B"0 !'!!'%1!/$&/0"GG"X!LL2'G/1""@ !"%1G"/%E&"%:'2K/%/)L''1G"/%EG"% !/"G'@3-30P%/)L''$&/0"G&L@!"31 $&/0"GG" &@103"G-1!/ %&"!!'!''!""!!$&01&&0%:!1G"/%E !0B"0 !'!'2G''B"@31!/J@$53?&"@G" Vector3 localUp = new Vector3(0, 1, 0); Vector3 localAhead = new Vector3(0, 0, 1); Vector3 worldUp = Vector3.TransformCoordinate(localUp, cameraRotation); Vector3 worldAhead = Vector3.TransformCoordinate(localAhead,
;Q
cameraRotation); // posDelta az egérmozgásnak megfelelı modulált elmozdulás Vector3 posDeltaWorld = Vector3.TransformCoordinate(posDelta, cameraRotation); lookAt += posDeltaWorld;
;: 1!/!'"&'G0K1LK'! 21!0$!'!'2?&B)%5L eye = lookAt - worldAhead * radius;
=: J@!"%1G"/%E!'2G''B"G viewMatrix = Matrix.LookAtLH(eye, lookAt, worldUp); Matrix invView = Matrix.Invert(viewMatrix); invView.M41 = invView.M42 = invView.M43 = 0; // a kamera az arcball forgatásához képest ellentétesen mozog Matrix modelLastRotInv = Matrix.Invert(lastModelRotation);
Q: J@$&/0"G%1G"/%E!'2G''B"G:1G"/%E&"/3)%5@313'"B -"3G'%$&/0"G%1G"/%E&" K !"!2''&11'$!'$&0@34G'%:G1B"G1!/@G"!"%"!/L!"K/"% // az elfordulást az arcball forgatási mátrixából származtatjuk Matrix localModel = worldArcball.RotationMatrix; // az elforgatás nézeti térben történik, ezért szükséges a vewMatrix és az invView tag modelRotation *= viewMatrix * modelLastRotInv * localModel * invView; lastCameraRotation = cameraRotation; lastModelRotation = localModel;
8: /"&0&'%G)%5:$&/0"G%1G"/%EK !1P!!'2G''B"G10GL4&/(&4%L4'1&5(GG !'P"-!LL2'(5(5$&/0"G%1G"/%E&L@!"31"&/3'GG" G'"4"@%:"!'!/O'!(2L%"&B"@3 "-4&0P1G"/%E$!'2AhAM$21%&/G&/ !"&/%&/"&&/1G'" !"&/&'!0P!!H%'P!15(& $&/0"G&&/(%G""!0!'P!%%1!/2'!0!!'!!!0P1G/I:&/"'?!HE%-P%-% /!(/!$21%&/!'2-1G&(%-4/1(%&/ !"&/I
E%&/1'%G'G: %E% !"&/%G'%&/""!'2G''B"@3P%M": P%&/1'%G'G: E%P% !"&/%G'%&/""?@3J@%M":
C: B0P?&""$&/0"G%1G"/%E!'"&'G1!/?&B)%5@GL modelRotation.M41 = lookAt.X; modelRotation.M42 = lookAt.Y; modelRotation.M43 = lookAt.Z;
D7: @!'!!""/&&/(%G""/$&/1G)%5@G"'!B/5>&/'(1"/%E!'2G''B"G!'"&'G%-G'GG%$&/0"G% &1?&!!L2':!'"&'G10GL$&0''@1&(!''K??&"@G!'"&'GG"@!'!!""/&/%05@GLV 1!/$53?&"@GLVH"/1G"/%EI-%''!" !!0/!0B"0 !'"K/"2!'"&'G"H3!//'"%&I
LON &O"Y u YN* u _L*N[L&&!L" u WY*OKO"YN&!L": /$&/1G)%51&(3'%">&/'(1G"/%E&"15(&B"@:$!'4G'5'!4!"20! !'"&'G- G'GG-$&/0"G!0P!""K/"215(&B"GG/: $&/0"G"%/!)"<4G/&1$'!??!?!!!'%
&/0"G%1G"/%E$&/0"G"&G&15(&-4&1&0"/$&/1G)%51G"/%E'/!?/!!"G'@3: "/%E"/3"J/0P&/'"%'0LG/1%'P!$&/0"G%1G"/%E&"?!0!!/G'%: R3"!/%&!'15(!//!'K !"'!O'/)L''$&/0"GG"'!B/5R3"!/%&15(&3': 1!0"!/!1"%1G"/%E&'R3"!/%&'?J/!?/!!"G)%5KK""%G"@G/4"5G0&": H/&''-?%")4-P>IK0!!'"K/"21!0(G1!0@!'K'!/&(%1%GL4G'"& !'! !!L2'G/1%:4G/&1$&/0"G%K00P&/'"%'04G/&1&&/(%G""!0!'PK/O'%$&/0"G" (@1!0:'2K/"!0!'PK/O'$&/0"3-1@(!'$&/0"&""-Pl"!0!'PK/O'- 0O'"!/!
;8
$&/0"G3"G?&""Ell"!0!'PK/O': % !'$&/0"G&K0"1%(%0!'22$&/0"G3"G% &&/(%G"/!(!/L!/"!'1!O-&//!(!1)!/'4!"2$!':!0P!$&/0"G%'?!@!'!"! /!(/!) /G-L%''!-$&/(3'G: M&/%!"G)%51G"/%E&%"B""!"4!"2 "/%E"/3"J/ &""%& >%")4&''1!"5(3G ':
+<, 4G/&1(%1!%5"/$&/1G)%50P/!'%!G/%"/$&/1G)%5X'!B/4"5!0PAhAM1G"/%E !0B"0 !':LL2'K !"!2!"/$&/1G)%5&/&"1G"/%E&' '5&/G&&/&"G '%!' 0!4!"2: !'"&'G@&!1%''%L!'!!LL!1%"GLX!1'%!G/%"/$&/1G)%5:!'!0PO""LG/1%'P! 4G/&1(%1!%5"/$&/1G)%5'!B/4"5K !"!2'L 9 & &j &I 4&' "!"2'!0!'%!G/%"/$&/1G)%5H 0P!!&"!G)%5@I-a& -&j -&I b!'"&'G !"&/:1G"/%EM &/G"!' 0! !H R %:&'&? !"&/I
& &j &I
&
&j
&I
! % '!!0P0P&/&1G"/%E' '5&/G'-1%"@!'!"%-4&0P4"/$&/1G)%5"NhNM! 1G"/%E&'B/@3'!-&/1%(!1F !'!"!"1G"/%EM&/G''!4!"!%$!@!%-L!'!/" !!'"&'G"%: $!"%'!B/G?&"&$$%"/$&/1G)%5'!B/GH$$%"/$&/1G)%5!11G-1%"!0P'%!G/% "/$&/1G)%51G"/%E' '5&/G-1%"!0P!'"&'GK !"I: *$$%"/$&/1G)%5/!?/!!"G)%5@G/J:%L2 B"!""1G"/%E&"4G'3-?&"&"?!(%04&1&0 &&/(%G"G!0B"0 !'B/@3$!'-K !"!2"?@3 9 ` & &j &I //@3"&""3"!4G"-4&0P1%(!4G/&1(%1!%5"/$&/1G)%5'!B/4"54&1&0"/$&/1G)%5 1G"/%E&!0B"0 !': G/'G""3&/GLL-4&0P%/!)"<ML!'? !"2"/$&/1G)%5$&/0"G-!'"&'GG'GG: G1G/1%(!4&1&0"/$&/1G)%51G"/%E!!&1?&!!L2'?O'$!'V1%"4&0P!//!1G/ %1G)%5'!B/GGG'3"'"1: G"/%E!'!12!'2('!0!)'@-4&0P1!013"-4&0P!0P"!"2'!0!4&1&0"/$&/1G)%51G"/%E 4&0P?O'$!'!'"&'G%-G'GG%-%''!" !$&/0"G%&1?&!!L2': "/$&/1G)%5 %$!@""!)&1?&!/&"G'P 0%:&"G'P1!"5(3%"%1G)%5("& L!&' GGG'%$!'4G'@3: %$!@"G'"'G& 4&1&0"/$&/1G)%51G"/%E/1FK(%:%03'/%"G%OKLK'!1%"" !0P!"'!$!'""!'-4&0P$!'2AhAM$21%&/(!"!/1%GGHN-NI4!'P!'! 2!'!1!&/" !13'''!0P!: "/%E1!"5(31G"/%E!'!1!%%1!/!"L!1!0$!'!'2!'"&'G%G'GG% !"&/&" =& Y?%''!" !$&/0"G"'!B/5R3"!/%&"/3"J/G"HaI(@ %: '0&/%"13 %$!@"&/G!0P!"/$&/1G)%54"G%"T % &@U-10?!(%0$&/(B"&"" &//!(L!: !'"&'G%&1?&!%0!KP!%P!/4!"2X$!"!LL'!B/"1%""& = = ? = (? = ??: !"2'!( !$!'2AhAM$21%&//'$&0''&3-@!'K'@!!" : G'GG%$"&/&1!04"G/&GG '3"&1"%3!!"'!0!PB/G!0PO""4"5%"=V'j V'jI V'I ?% 1!04"G/&3:,!0P!!'2K/Y !'2&/ !"&/G4&:3"GV'j !0PO""4"5/""G1B"@3% V'j 64= ?:,!0P! 1G&(%&/!!3"G >V'j :B0P?&""&/ !"&/4& '!Yj :G1B"G"& GLL%1!!"!!!4!'?!4!4&'5 V'I 64= ? >V'I -
V'jI 64= ? >V'jI - ;C
YI J*"+&'= ?:
!3"G !0P$&/0"G%1G"/%E'!-!0P!!"'!0!MDM!G'GG%$"&/"5'!'"!%" !:1!P%L! (!"!/1%G!0"B -1G"/%E1%(!!'!1"MDM0P!'&/&3:B0P?&""1G"/%EL5'$&/0"G%R3"!/%& !0P!/F!0!!/G'""4"5: %G1B"&""&1?&!!!" G"/%E!'!120/$%3$&/1GL@!'!B"%1!0:$&/0"G%&1?&!4! 1G"/%E&R3"!/%&/!?/!!"G)%5"%1!0@!'!B"@O: G"/%E!'!12!0P/"/$&/1G)%5?!''!'-1G/"$&//GG''&1GP"1!0@!'!B"2!"!!' ?)&'"L:"5LL%!!"LG/1!'P%1!0@!'!21G"/%EK !"'!O'&1?&!!/!L&"4"51!0$!'!'2 1!O?&"% G'"GG ':
+** &//G4%!//)4%?!'$&//GG''&1GPL'! 2"!1?'"!M4%!//)4%G"@!'!B"%1!0: ?!'1%(!"!1?'"!M!"1!0@!'!B"-$O00!"'!O'""5'-4&0P"/"'1M!L!&' 5G'"'$!'(&'0&4"5 ("&" 0P!1:!1?'"!M(!$%B)%5!!"4%!//)4%GL"!1?'"!! !-(")&15?&"!!" &?)%&G'% -!!4%GPGL!0P0!!/G'" @!'!%1!0: !1&(3'4$&//G!""!'-%''!" !(%0/1&!""!' '5?)&'": !"K/"2 (3?'""%"G'30P%1!0$!'!'2HG/1%("I!"L!'G"4"5 G G'%(&"""!1?'"!5(@-%''!" ! /'!"!%:
,Z_ ?!'%/!)"<G''&1GPL!&' G&/G"'G'"!!"'!0!5(%"F-%""%%4%LG/4B @$!' $%0P!'1!": %@!'"$'!'!4!" %0P!'1!"!""'G'"4%L!1L!$&'PG&'@L!&' G%1!!"!'":'P!'!4!"?'(G3'!0P!' G'"5@!' 4%GP: *%L/!(!''!!04"GG/L!&' G!1$!@!4!"2L!:'(G3'! !!LL("G''/!(!'!/!- 1%"1!P%""!1?'"!(!$%B)%5@(!'/G'": ?/&0/11%(!!!"L!%0P!%L!&' G"L!$!@!%:0!"!4%L!!"-4!'!0!(2("G''" /!(!'!/!-1!0@!'!B"!1'!'!"%'" :4%L4!'P%0/!(!'!/!G''5"!1?'"!M4%!//)4%%" !'/4!"2"!'@!!4G'4"5: G/1!'P%O!!"/!"K/"2(3?'""%"G/4%L4!'P!$&//G!"L!'G"4"5 G G'%:
+Z ?!'&/GLL1G/L!13""&""-L!&' G&/G$!'"K'"K""%1"%&&"%!/&"G'PL"G/&'" %1"%&!"1&0G&/&"%4&PJ@"'? !"2!!'2$3)%5"
'!@G"G'!G''B"G-J@/%(B"G: '!@G"G1!!"!0/$%3%@!'!: '!@G"G!L!0!H?&)m1G&(?!/)I G'"&""G: KLL%1"%&!"!!"!!! !%!'%"GGH%''!" !0!!/G'"! !1!0@!'!B"!I-% G'"&"" %1"%&!"L!"K'"!%0P!/%":
!!B O'?!''!0$&"&LL%$&/1G)%5"%1!0@!'!B"% 1&0G&/&""!'@!4&H?&)GL1G&(?!/)L!I "3G'%?&B)%5H?&)GL1G&(?!/)L!I %1G'")&"&G1
=7
Z+ + ?/&0/1!0P%)'@%/!)"<M!'%1!/!(2?/&0/1&5"G1&0"G:")'"&'0G'@&$" !/ !1''"!"2!K!%!1G&(%%"@!-1!'P"!K)&?&/"&""/"'1 D: 5(0!!/G"&/!K?!"3G'%L!G''B"G&$!'4G'GG '"M5(&"!'2G''B"%-1!''P!' 1!0$!'!'2G''?&"$%E!($3)"%&?%?!'%!?/&0/1&G&//!?/&(3G'4"5:5(/'!"!'GLL% L!G''B"G&/ &"&
!0 %'G0B"G: !"B": !"- %/"3G'%1!/: /$&/1G)%5:
G/"/!(!'!/!L&)G"@?/&0/1G'"'4G'"4(!/?/&0/1&5(@%"-1!'P!L!$&"& G1B"G&-''1(515(!/!KP!'G"4"5
P$&//G&: 4&0M'%G/P'G: '? !"2 !/"!E-%''!" !?%E!'4(!/1%"G&L!13""@G/P'5$!'?B"": 2/K- !/"!EL'!(%0:
!!B O''!4!"20 %!LL4&5(/'!"!0!!/G'GG/-1!'P!L%&P&G'"'G& 1%"G"(1!0%/!)"<''1G&/G$!'1!/O'2/$!'("&1!0&'(GG/-?'(G3' /1!4%!//)4%1!0@!'!B"!-"/$&/1G)%5K/K'2(!!!'!: $$!)"M!4G'": 6: &"&-4&0P%/!)"<1FK( !'%1!/!(2?/&0/1&5%1!/@1!01!0@!'!B"%$3"5'0 1FK("%:"!0B"%1&(3'&4&4&'5-$3"5'0L%&P&'?!%"!1''"!"2?!'!:! $%E!($3)"%&$3"5'0?!0!%/!(&""'?!'!'/4!"2/!(!/""!L!G''B"G&/?O'!: !0P!$3)%5O'KG''5$$!)"?'(GP&"4G'-1!'P!!"%0P!/%""K'"!!L!:4(!/ ?/&0/1&1FK(!(&""'?''!B/"'?@G"K/"%:!KO'!0P!//!)!0P'!4!""B : ?!'!$3"5'0K !"!2'?!%"13""@GL! *G"5'?!'"G &'B"GH)3''%0I !/"!E4(!/K!0PF@"%!0P'?"' !"&/G"-1@(%G1B"@ !!L2''$!'O'!"%&/1G'%G":2?&"L13""5 !"&/!!K0!'?@GL%&P& !/"!E!!"!'(&L4"3: %!>?&/"'!?!,!4!"20 /&&&/(%G"G1/!"!- '1%"1'P0%"/"&1GP G'"&""GG/:L!G''B"G&1!0$!'!'2! !/"!E4(!/1!0?@'!?!!1!0$!'!'2 1G"/%E&"-1!'P!" !/"!E!"/$&/1G)%5@&/$!'4G':B O'!2 !/"!E!!"!'(&L@3: G0G$!'4G'5% G05B&'%/!)"<L GP"K !" !4" G05B(4"51!0-1!'P! ?/1"!/!%%1!/!"L! !/"!E4(!/ E "!"!'"4@"@ 0/!!0P!B&/:!"!'@!O'!!!" !/"!E!"!'(&L@3: K(M!$$!"3&,!4!"20 !/"!EM-?%E!'%"FK(1!0(GG/%-G1B"G&4!'P!!! $O00 PL! G'"&%: '?4L'!(%0G1B"G&L'?/"!'1!!/%"$&//G?%E!'!B!%&L@!"31?%E!'!%L2'- )'?%E!'!B!%"3G'%P04&1!0(&"""!E"J/GL5'G/1:!4%GPGL1!0(4"5 !0PT?!3(&UB/"-1!'P!0P!0PBF"!E"J/G"%1%"G': ./G%1&''1G4G/&11KO'&'&/Y/%"!L'!/"!% G'"&""4"5:
=D
'?4"!"?%E!'4(!//!$!/!)%/"!'"K/"2K!4&'B"G'?@G(&L@!'-%''!" !"/"@ 1!0?%E!'!!":
^ Z &""G""G1&0"5!KK4/1(%%"@!?/&0/1J05@-1!'P!!'2('!0!)'@!'1'!"% '?&$!'"G/G:J05"1K/!%K !"!2 %/!)"<'?@%-1!0@!'!B"%$3"5'0'?!%:$&"&LL'?!'!B/GGG'J051!0(@ (&"""!/O'!"G'"'/%"!""/!(!/""!L!G''B"G&"%: ?/&0/14G'": %/!)"<G''&1GP&:
SS !0P!(%)&?&/"L"!K"/"&% P&1K !"2)'@-4&0PO'KLK2"!/O'!"!!!'2$&/(3'54&1&01G"/%E&L$!'$!(@!!0P! !'!1!!/!?":!0B"0 !'!0P(&""1G"/%E G'"&G% '5%(2L!K !"4!"2:!K /$&/1G)%5 !0@!'!B"?!'/2'"% G'4"5: ! %)!"3'@(&G0&!0B"0 !'!0P/""3G'%4G'"! %)!?'(GP?/1"!/!% G' 'G"4"5 G G'"&""4"5 G:!K'!4!"2 "!%!'O'24G"3'5?3$$!/$&/1G"31G- '1%"1'P0%"!)%'?3$$!/$&/1G"31G G'"&""GG"-%''!" !1'P0%?3$$!/4G'"G !0!('P!"'!"%'"GG":% G'"&""$&/1G"31&"!"!'/!%'!4!"20 -!44!?/&0/1 0!/&"G'PL!13""&""1!"5(3%"4G'@:1!P%L!% G'"&""$&/1G"31&&1?%"L%'%!- G'"&""G&/ PL!'?!: !K%"'!4!"2 "!%4/( !/!"3'@(&G0&H! %)!?"3'@(&G0!'!1!%!I 1!0"!%"":
=6
S ,,+ !'2LL%!L!L!13"""1%/!)"<M"1%"0/$%%?/&0/1&G%!K/!(!/":+""!%"!""!1- 1%'P!'? !"2?!0!% :&/")'3'"F"!1%!0P&'P&$" !/!'B""-1!'P!!!" ?!0!!"13""@L!?/&0/1&G3""G1&0"@: (&'0&"LL!13""&""?/&0/1"KLL!K!'%&'0G'@%/!)"<HG'"'G&4G/&1(%1!%5 0/$%I'?@%!'@G"B"GG" !0P!$3)%5"-$&"&LL"!/O'!"!!"-%''!" !!!%1?'!1!"G)%5%"%/!)"<ML!J:1&(3'& !0B"0 !'13"""1L!:1&(3'&!'2)&?&/"@1!0@!'!B""K !"'!O'L!$&'PG&'5"!/O'!"!/! &)!"/G':!&/"K !"!2 !"- %/"3G'%1!/1&(3'"!'@!!'!$!(%%/!)"<ML!!'/4!"21!0@!'!B"%15(&":!"% 0J' %3'%G)%5@0PL!0B"4!"% !"B"'?@%1!0/"": !0 %'G0B"G-G/P'G?/&0/1%/!)"<G'"'"G1&0"&"" '1!P%1!0 %'G0B"G%1&(!''""G1&0"@- %/!)"AG/P'G%15(@%1!''!""4&0G/P'G"%L!13""@: %1G)%5G'"'"G1&0"&""3')&)'?J%1G)%5"!'@!!!'!1!0&'(&"":L!&' 5"KLL %1"%&!""!1?'"!@!'!'"/!%$!' B" !-L!?B"!""1!"5(3%!"!1"G1&0"@G: P0"3'@(&G0&1&(3'!0B"0 !'P0&B/!"/!-1!0 %'G0B"G/0P&/&'"4"G G'%'G"4"5 G: 1&(3'&K !"!2)&?&/"@%/!)"<G''&1GP"13""@L! &//G4%!//)4%G''&1GPL'! 2"!1?'"!M4%!//)4%1!0@!'!B"!: !&' 5O!!"!%L!&' G%1!!"!'/2'("G&""G": 4/1(%)&?&/"%/!)"<ML!&'P$&"&4&1&0"/$&/1G)%51G"/%E&&)!?)%5@G/-4G'"G/ &)!"/G' /$&/1G)%5$!'4G'5K !"'!O'1!0"!%"4!"%$&/0"G-!'"&'G-G'GG4"GG": G'"&G& '5%(2L!K !"4!"2P&1K !"2!K!': G"/%E!'!12 !013""@-4&0P!0P4&1&0"/$&/1G)%51G"/%E4&0P/"!'1!4!"2X1%'P! ?)&'"LG''O'KMO'K !""$&/0"G-G'GG-!'"&'G1F !'!" !': %"%/!)"<G''&1GP/&)!"/G' &//G!"-1!'PL!&' &""G''&1GPK !0"@!'!B"%1!0 &' 4"5LL$&/1GL-1B0%0/1!"!'2&/LG''&1GPL"G/&'"("&"&/!(!'"!"" %0P!%1!013""%VK!$O00!1!0/"!/(!L!"!"!0P!//!%1!0@!'!B"4!"2-1%(" !"K! ?)&' &//G4%!//)4%1&(3''': ?/&0/1?!4"&P!0B"!%0/$%%'?&!'@G"B"G1!''!"""P'!0! 0!(%/!)"< ?/&0/1&G"%:"!0P/"5(0!!/G"&/! F!K"G1&0"@-1!'P1&(3'&LL!G''B"&""/"! $!'4G'GG 'M5(&"0!!/G': G/"?/&0/1!1''"!"%1!0@!'!B"%$3"5'0K!&'P'?"- 1!'P %3G'B%L!13""4"5:!'?!K(M!$$!"3&-'?4L'!(%0-'?4"!"- G0G$!'4G'5% G05B&'- %!>?&/"'!?!)%&/"!"-1&'G: (&'0&"LL!13""&""&$" !/"!4G"V(&'0&"!'!@%"FK""!""2)'"!1!'2"""/" V '? !"2!'1'!"%0/$%%%1!/!"!!"%!1''"!"2-%''!" !&/" 0!(%/!)"<?/&0/1&GG"% L!13""5&1?'!E!K/!(!//!'/!(!'!%:!K/!(!/"!'@!!"!%"4!"2-4%!%/!)"< 1!0@!'!B"%$3"5'0 '1!P%&'P'?"(!1&"/G'@-1!'P!0P!/F! %3'%G'4"54(!/ ?/&0/1&!0B"0 !'-%/!)"<?!)%$%G)%5G'"'1!0(&""$3)%5"?!(%0"!'@!1/"L!"G1&0"@G:! B O'G1&P!'1%$3)%5-!0P!/F!4G'4"5!K&'0G'@$&"&"!/O'!"!1!0/"": %(!! 1%""&$" !/ !'!!1L!"G1"&""K !"!'1P!!1!0$!'!':%"FK"")'&"'P!0L!!'/"!1:
=A
, 9 1. / &-9:H!/:I /?4%) !1 &':6 )(!1%)/!-DCCD 2. 4!-9:&1?3""%&' !&1!"/P !"4&((??'%)"%& '2(GM G'"X!'/4!"2 4""?mm$)3'"P:):"13:!(3m)4!m&"!m0!&:?($)B1!: 4% "&G!''!2/% !6778:DD:7;: 3. 1-::n&)4- :n,%''4&'1- :R3"!/%&-"!/?&'"%&(%1"%& 3L'%G)%5X!'/4!"2 4""?mm>>>:%"3:(m?!&?'!m!/%(1mY,mC8M;:?($)B1!: 4% "&G!''!2/% !6778:DD:7;: 4. '!/-:H!/:I /?4%) !1 &':D )(!1%)/!-DCC7 5. /P-: %)/&&$"%/!)"<C/&0/11L'! /?4%)%?!'%! %)/&&$"/!-677A 6. 9%-:n,!>%-:,:nY!"-:&1?/%&&$'0&/%"41$&/!/"!E&/1'&1?3""%& 3L'%G)%5X!'/4!"2 4""?mm>>>:"/%)%"P:>3:!(3moL&L'm?!/&'m1P?3Lm677Ac !/"&/1c" ):?($)B1!: 4% "&G!''!2/% !6778:DD:7;: 7. %/-:H!/:I /?4%) !1 &':A )(!1%)/!-DCC6 8. & )4-:9:%(!%/!)"A %)/&&$"/!-6777 9. ,!%"!/1-9::,!/!/"!E(%E!'4(!//&0/11%0>%"4%/!)"<C Y&/(>/!3L'%4%0-677N 10. ,3- :%!( !44/)"!/%1"%&>%"4%/!)"AC:7) 3L'%G)%5X!'/4!"2 4""?mm1"4%$&:!:3% M/!%1:$/m%10!m(E !4m!E"/m(A(Ec%!(1!4:?($)B1!: 4% "&G!''!2/% !6778:DD:7;: 11. %''!/-: 0!(%/!)"<C%)"/" /?4%)( 1!/&0/11%0 13L'%4%0-677A 12. !!?!/-:n %")4!''-9::"/&(3)"%&"&"4!%/!)"<C*%04,! !'4(%0,030! 3L'%G)%5X!'/4!"2 4""?mm"%:1(:)&1m(! !'&?!/m4(!/<6c"/&(3)"%&&*,,:?($)B1!: 4% "&G!''!2/% !6778:DD:7;: 13. )4!-9:n"&- ::4! /?4%)*(L&&!$!/!)! 3'& /?4%)*/(>/! (&$">/! /!-677A: 14. )4!-9:n"&- ::%/!)"<A /?4%)/&0/11%0%L'! &&Y&/'(>%(! 15. (!/-:: %E!( 3)"%&4(!/%*,, 3L'%G)%5X!'/4!"2 4""?mm>>>6:"%:)&1m1%)m1?'!m(ECm %E!( 3)4(!/:?($)B1!: 4% "&G!''!2/% !6778:DD:7;: 16. 4&!1!-:n3$$-: "/%E%1"%&(&'/!)&1?&%"%& 3L'%G)%5X1!0@!'!4!'P! /&)!!(%0&$"4!)&$!/!)!& /?4%)%"!/$)!pC6-6;8M6=N:&:
=N
17. %/1PM'&,:n"' P:n& :*G/&1(%1!%50/$%-%1G)%5@G"$!@'!" &1?3"!/&&-677; 18. 4&1&-:4!%/!)"A /?4%)%?!'%! %/"X!'/4!"24""?mm>>>:E1%%&:)&1mo'!0'%!mL&&m(&>'&(m%(!E:4"1')B1!: 4% "&G!''!2/% !6778:DD:7;: 19. Y !/!-9: :: /&1R3"!/%&"& "/%E() 3L'%G)%5X!'/4!"2 4""?mm>>>:%"!':)&1m)(m%(m(! !'&?!/m1&Mm!0m6CAQN8:4"1 )B1!:4% "&G!''!2/% !6778:DD:7;: 20. %/!)"<H303"677;I 0!( %)/&&$"4% "'&(&31!"G)%5@ 4""?mm1(:1%)/&&$":)&1m!M3m'%L//PmDACQ=C:?E)B1!: 4% "&G!''!2/% !6778:DD:7;: 21. < %'! &/1"!$!/!)! %)/&&$"4% "'&(&31!"G)%5@ 4""?mm1(:1%)/&&$":)&1m!M3m'%L//PmLLDQA7DNH:8;I:?E)B1!: 4% "&G!''!2/% !6778:DD:7;: 22. !$!/!)!$&/*,, %)/&&$"4% "'&(&31!"G)%5@ 4""?mm1(:1%)/&&$":)&1m!M3m'%L//PmLL;7C=A8H:8;I:?E)B1!: 4% "&G!''!2/% !6778:DD:7;:
=;
_ ,
<< ,, Z,
==
<<, ,, Z,
=Q
SS ,+.+ (&'0&"B"2@!KK!""$!@!%%(/& G)12(!-1%!0B"0/"%/GP13""G/"- '1%" 4&"G)&/"-1!'P!!'4&G@G/3'"1%(&$" !/-1%(!'1'!"%/!'O'4!:
=8