Files
VR-GAME/Library/Artifacts/18/1870be8c8c7dbe01dc70459e86696984

5121 lines
363 KiB
Plaintext
Raw Normal View History

2026-04-25 12:12:07 +07:00
<01><05><><01>@0.0.0<00><><EFBFBD><EFBFBD>r<00><><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><6B><EFBFBD>K<EFBFBD><4B><EFBFBD><08><>F&<00>7<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00>E<00> <00><00><00>.<00><00>(a<00> <00><00><00>.<00><00><00><00>r<00> <00><00> <00>.<00>
<00>4<00>v<00> A<00><00> A.<00> A<00><00>]<00>A<00><00>K<00>h<00><><00> <00><00><00>.<00><00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00>H<00>3<00><><EFBFBD><EFBFBD><EFBFBD><01><>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<40><00><00><00><00>Q<00>j<00><00>H<00>=<00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00><00><00>P<00><><EFBFBD><EFBFBD>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> <00><00><00>!bj<00> "<00><00>#<00>.<00>$<00>p<00><00><><EFBFBD><EFBFBD>%<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>&<00><00><00><00>'pj<00><><EFBFBD><EFBFBD><EFBFBD>(<00>H<00><><00><><EFBFBD><EFBFBD>)<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>*@<00><00><00>+Q<00>j<00>,<00><00><00><><EFBFBD><EFBFBD>-<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>.<00><00><00><00>/<00>j<00><><EFBFBD><EFBFBD><EFBFBD>0<00>H<00><><00><><EFBFBD><EFBFBD>1<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>2@ <00><00><00>3 Q<00>j<00>4<00><00><>5A<00><00><>6<00><00><>7<00><00><>8A<00><><EFBFBD><EFBFBD>9<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>:<00> <00><00><00>; j<00><><EFBFBD><EFBFBD><EFBFBD><<00>
H<00><><00><><EFBFBD><EFBFBD>=<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>>@ <00><00><00>? Q<00>j<00>@
<00><00><>AH<00><00><><EFBFBD><EFBFBD>B<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>C@ <00><00><00>D Q<00>j<00>EPPtr<EditorExtension>m_FileIDm_PathIDPPtr<PrefabInstance>outputNodeTypeNameassetDependenciesPPtr<$Object>MinimalCategoryDatacategoryDatascategoryNameGraphInputDatapropertyDatasreferenceNameisKeywordpropertyTypekeywordTypeisCompoundPropertySubPropertyDatasubPropertiestooltip0<00><><EFBFBD>Q4<12><>E4<45>1\OPSaͯ
77<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00>E<00> <00><00><00>.<00>&<00>/a<00> <00><00><00>.<00>&<00><00><00>r<00> <00><00> <00>.<00>&
<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00> Q<00>j<00>DU<00><><EFBFBD><EFBFBD><00>bw<00><><EFBFBD><EFBFBD><00><00><00><><00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00>H<00><><00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00><00><00><><00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><00>H<00>j<00><><EFBFBD><EFBFBD><EFBFBD> <00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>!@
<00><00><00>"
Q<00>j<00>#<00><00><00>$<00><00><>%<00><00><>&<00><00><>'<00><00><>(<00><00><>)<00><00><><EFBFBD><EFBFBD>*<00>H<00><00><><EFBFBD><EFBFBD>+<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>,@ <00><00><00>- Q<00>j<00>.<00><00>-/<00><00>6<00><><EFBFBD><EFBFBD>0<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>1<00><00><00><00>2Cj<00><><EFBFBD><EFBFBD><EFBFBD>3<00><00><00>W<00><><EFBFBD><EFBFBD>4<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>5<00><00><00><00>6`j<00><><EFBFBD><EFBFBD><EFBFBD>7<00><00><00>o<00><><EFBFBD><EFBFBD>8<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>9<00>
<00><00><00>:
<00>j<00><><EFBFBD><EFBFBD><EFBFBD>;<00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>=@ <00><00><00>> Q<00>j<00>? <00><00>
<00>@<00><00><00>A}<00><00><><EFBFBD><EFBFBD>B<00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD>C<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>D@ <00><00><00>E Q<00>j<00>F <00><00><00><><EFBFBD><EFBFBD>G<00>
<00><00><00><><EFBFBD><EFBFBD>H<00> <00><00><>I H<00><><00><><EFBFBD><EFBFBD>J<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>K@ <00><00><00>L Q<00>j<00>M
<00><00><00><><EFBFBD><EFBFBD>N<00> <00><00><>O H<00><><00><><EFBFBD><EFBFBD>P<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>Q@ <00><00><00>R Q<00>j<00>S
<00><00><00><><EFBFBD><EFBFBD>T<00> <00><00><>U H<00><><00><><EFBFBD><EFBFBD>V<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>W@ <00><00><00>X Q<00>j<00>Y
<00><00><><EFBFBD><EFBFBD>Z<00> <00><00><>[ H<00><><00><><EFBFBD><EFBFBD>\<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>]@ <00><00><00>^ Q<00>j<00>_
<00><00><><EFBFBD><EFBFBD>`<00> <00><00><>a H<00><><00><><EFBFBD><EFBFBD>b<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>c@ <00><00><00>d Q<00>j<00>e
<00><00><><EFBFBD><EFBFBD>f<00> <00><00><>g H<00><><00><><EFBFBD><EFBFBD>h<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>i@ <00><00><00>j Q<00>j<00>k
<00>*<00><><EFBFBD><EFBFBD>l<00> <00><00><>m H<00><><00><><EFBFBD><EFBFBD>n<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>o@ <00><00><00>p Q<00>j<00>q <00>2<00><><EFBFBD><EFBFBD>r<00>
<00><00><00><><EFBFBD><EFBFBD>s<00> <00><00><>t H<00><><00><><EFBFBD><EFBFBD>u<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>v@ <00><00><00>w Q<00>j<00>x
<00><00><00><><EFBFBD><EFBFBD>y<00> <00><00><>z H<00><><00><><EFBFBD><EFBFBD>{<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>|@ <00><00><00>} Q<00>j<00>~
<00><00><00><><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00>*<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00>;<00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00>*<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00>D<00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00>*<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00>M<00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><00> <00><00><> H<00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> Q<00>j<00>
<00><00><><EFBFBD><EFBFBD><00> <00><00><> H<00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00>
 Q<00>j<00> 
<00><00><><EFBFBD><EFBFBD> <00> <00><00><>  H<00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> Q<00>j<00>
<00><00><><EFBFBD><EFBFBD><00> <00><00><> H<00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> Q<00>j<00>
<00>*<00><><EFBFBD><EFBFBD><00> <00><00><> H<00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> Q<00>j<00> <00>V<00><><EFBFBD><EFBFBD><00>
<00><00><00><><EFBFBD><EFBFBD><00> <00><00><>  H<00><><00><><EFBFBD><EFBFBD>!<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>"@ <00><00><00># Q<00>j<00>$
<00><00><00><><EFBFBD><EFBFBD>%<00> <00><00><>& H<00><><00><><EFBFBD><EFBFBD>'<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>(@ <00><00><00>) Q<00>j<00>*
<00><00><00><><EFBFBD><EFBFBD>+<00> <00><00><>, H<00><><00><><EFBFBD><EFBFBD>-<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>.@ <00><00><00>/ Q<00>j<00>0
<00><00><><EFBFBD><EFBFBD>1<00> <00><00><>2 H<00><><00><><EFBFBD><EFBFBD>3<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>4@ <00><00><00>5 Q<00>j<00>6
<00><00><><EFBFBD><EFBFBD>7<00> <00><00><>8 H<00><><00><><EFBFBD><EFBFBD>9<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>:@ <00><00><00>; Q<00>j<00><
<00><00><><EFBFBD><EFBFBD>=<00> <00><00><>> H<00><><00><><EFBFBD><EFBFBD>?<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@@ <00><00><00>A Q<00>j<00>B
<00>*<00><><EFBFBD><EFBFBD>C<00> <00><00><>D H<00><><00><><EFBFBD><EFBFBD>E<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>F@ <00><00><00>G Q<00>j<00>H <00>_<00><><EFBFBD><EFBFBD>I<00>
<00><00><00><><EFBFBD><EFBFBD>J<00> <00><00><>K H<00><><00><><EFBFBD><EFBFBD>L<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>M@ <00><00><00>N Q<00>j<00>O
<00><00><00><><EFBFBD><EFBFBD>P<00> <00><00><>Q H<00><><00><><EFBFBD><EFBFBD>R<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>S@ <00><00><00>T Q<00>j<00>U
<00><00><00><><EFBFBD><EFBFBD>V<00> <00><00><>W H<00><><00><><EFBFBD><EFBFBD>X<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>Y@ <00><00><00>Z Q<00>j<00>[
<00><00><><EFBFBD><EFBFBD>\<00> <00><00><>] H<00><><00><><EFBFBD><EFBFBD>^<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>_@ <00><00><00>` Q<00>j<00>a
<00><00><><EFBFBD><EFBFBD>b<00> <00><00><>c H<00><><00><><EFBFBD><EFBFBD>d<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>e@ <00><00><00>f Q<00>j<00>g
<00><00><><EFBFBD><EFBFBD>h<00> <00><00><>i H<00><><00><><EFBFBD><EFBFBD>j<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>k@ <00><00><00>l Q<00>j<00>m
<00>*<00><><EFBFBD><EFBFBD>n<00> <00><00><>o H<00><><00><><EFBFBD><EFBFBD>p<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>q@ <00><00><00>r Q<00>j<00>s <00>h<00><><EFBFBD><EFBFBD>t<00>
<00><00><00><><EFBFBD><EFBFBD>u<00> <00><00><>v H<00><><00><><EFBFBD><EFBFBD>w<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>x@ <00><00><00>y Q<00>j<00>z
<00><00><00><><EFBFBD><EFBFBD>{<00> <00><00><>| H<00><><00><><EFBFBD><EFBFBD>}<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>~@ <00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00>*<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> L<00>q<00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><><00>
H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><><00>
H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><><00>
H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><><00>
H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><><00>
H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><><00>
H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><><00>
H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><><00>
H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> <00><00><><EFBFBD><EFBFBD><EFBFBD><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> Q<00>j<00> <00><00><><EFBFBD><EFBFBD><00>
<00><00><00><><EFBFBD><EFBFBD><00> <00><00><> H<00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> Q<00>j<00>
<00><00><00><><EFBFBD><EFBFBD> <00> <00><00><>
 H<00><><00><><EFBFBD><EFBFBD> <00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00>  Q<00>j<00>
<00><00><00><><EFBFBD><EFBFBD><00> <00><00><> H<00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> Q<00>j<00>
<00><00><00><><EFBFBD><EFBFBD><00> <00><00><> H<00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> Q<00>j<00> <00><00><><EFBFBD><EFBFBD><00>
<00><00><>
H<00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> Q<00>j<00>  <00>.<00><><EFBFBD><EFBFBD>!<00>
<00><00><>"
H<00><><00><><EFBFBD><EFBFBD>#<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>$@ <00><00><00>% Q<00>j<00>& <00>?<00><><EFBFBD><EFBFBD>'<00>
<00><00><>(
H<00><><00><><EFBFBD><EFBFBD>)<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>*@ <00><00><00>+ Q<00>j<00>, <00>J<00><><EFBFBD><EFBFBD>-<00>
<00><00><>.
H<00><><00><><EFBFBD><EFBFBD>/<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>0@ <00><00><00>1 Q<00>j<00>2 <00>S<00><><EFBFBD><EFBFBD>3<00>
<00><00><>4
H<00><><00><><EFBFBD><EFBFBD>5<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>6@ <00><00><00>7 Q<00>j<00>8 <00>Z<00><><EFBFBD><EFBFBD>9<00>
<00><00><>:
H<00><><00><><EFBFBD><EFBFBD>;<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><@ <00><00><00>= Q<00>j<00>> e<00><00><><EFBFBD><EFBFBD>?<00>
<00><00><00><><EFBFBD><EFBFBD>@<00> <00><00><>A H<00><><00><><EFBFBD><EFBFBD>B<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>C@ <00><00><00>D Q<00>j<00>E
<00><00><00><><EFBFBD><EFBFBD>F<00> <00><00><>G H<00><><00><><EFBFBD><EFBFBD>H<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>I@ <00><00><00>J Q<00>j<00>K
<00><00><00><><EFBFBD><EFBFBD>L<00> <00><00><>M H<00><><00><><EFBFBD><EFBFBD>N<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>O@ <00><00><00>P Q<00>j<00>Q
<00><00><00><><EFBFBD><EFBFBD>R<00> <00><00><>S H<00><><00><><EFBFBD><EFBFBD>T<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>U@ <00><00><00>V Q<00>j<00>W
H<00><><00><><EFBFBD><EFBFBD>X<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>Y@ <00><00><00>Z Q<00>j<00>[ <00><00><>\ <00><00><>] <00><00><00><><EFBFBD><EFBFBD>^<00>
<00><00><><00><><EFBFBD><EFBFBD>_<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>`<00> <00><00><00>a <00>j<00><><EFBFBD><EFBFBD><EFBFBD>b<00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD>c<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>d@<00><00><00>eQ<00>j<00>f H<00>
<00><><EFBFBD><EFBFBD><EFBFBD>g<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>h@<00><00><00>iQ<00>j<00>j <00><00><>k L<00><>l@<00><00><>m<00><00><00><><EFBFBD><EFBFBD>n<00> <00><00><><00><><EFBFBD><EFBFBD>o<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>p<00> <00><00><00>q j<00><><EFBFBD><EFBFBD><EFBFBD>r<00> <00><00>!s -@<00><><EFBFBD><EFBFBD>t<00> <00><00>@<00><><EFBFBD><EFBFBD>u<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>v@<00><00><00>wKj<00>x5<00>]y5<00>dz <00><00>k{ <00><00>w<00><><EFBFBD><EFBFBD>|<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>}@<00><00><00>~<00><00>j<00> 5<00><><00> 5<00><><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@ <00><00>><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>Nj<00><00><00><00><00><><00><00><00><><00><00><00><00>_<00>L<00>n<00>5<00><00>@ <00><00>}<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><><00><00><00><00><00><00><00><><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><00>L<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00>5<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Aj<00> <00><00><00><><00><00><00><><00><00><00><00>N<00> <00><00>^<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>ij<00><00><00><00>z<00><00><00><><00> .<00><><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00>!<00><00><00>w<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00><00>.<00><><00>5<00><><00>@ <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> <00><00>j<00> <00><00><00><><EFBFBD><EFBFBD><00>
<00><00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> <00>j<00><00> <00><00><> <00><00><><00> <00><00>  5<00><00>
 5<00> @
<00><00><00><><EFBFBD><EFBFBD> <00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> <00> <00><00><00> #j<00><00> <00><00><> <00><00><><00> <00><00> 5<00><00> 5<00>3@
<00><00>><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> Nj<00><00> <00><00><> <00><00><><00> <00><00>_ L<00>n 5<00>@
<00><00>}<00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00>  <00>j<00> ! <00><00><>" <00><00><><00># <00><00>$
<00><00><><00><><EFBFBD><EFBFBD>%<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>&<00> <00><00><00>' <00>j<00><><EFBFBD><EFBFBD><EFBFBD>(<00> <00><00><>) <00><00><00><><EFBFBD><EFBFBD>*<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>+<00><00><00><00>,#j<00>-<00><00><00><>.<00><00><><00>/<00><00>05<00><00>15<00>32@ <00><00><><00><><EFBFBD><EFBFBD>3<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>4<00><00><00><00>5<00>j<00>6<00><00><00><>7<00><00><><00>8<00><00>95<00><00>:5<00>;@ <00><00><><00><><EFBFBD><EFBFBD><<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>=<00><00><00><00>><00>j<00><><EFBFBD><EFBFBD><EFBFBD>?<00><00><00><>@<00><00><><00>A<00><00>B<00><00><>C<00><00><><00><><EFBFBD><EFBFBD>D<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>E<00><00><00><00>F<00>j<00>G<00><00><00><>H<00><00><><00>I<00><00>J5<00><00>K5<00>L@<00><00><><00><><EFBFBD><EFBFBD>M<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>N<00><00><00><00>O#j<00>P<00><00><00><>Q<00><00><><00>R<00><00>S5<00><00>T5<00>3U@ <00><00>V L<00>W@
<00><00><00><><EFBFBD><EFBFBD>X<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>Y@ <00><00><00>Z <00>j<00> [ <00><00><>\ <00><00><><00>] <00><00>^
<00><00>5<00><><EFBFBD><EFBFBD>_<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>`@ <00><00><00>a Aj<00> b <00><00><>c <00><00><><00>d <00><00>Ne
<00><00>^<00><><EFBFBD><EFBFBD>f<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>g@ <00><00><00>h ij<00>i <00><00>zj <00><00><>k <00><00><><00><><EFBFBD><EFBFBD>l<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>m@ <00><00><00>n <00><00>j<00>o<00><00><><EFBFBD><EFBFBD>p<00> <00><00><><00><><EFBFBD><EFBFBD>q<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>r<00> <00><00><00>s j<00><><EFBFBD><EFBFBD><EFBFBD>t<00> <00><00>!u -@<00><><EFBFBD><EFBFBD>v<00> <00><00>@<00><><EFBFBD><EFBFBD>w<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>x@<00><00><00>yKj<00>z5<00>]{5<00>d| <00><00>k} <00><00>w<00><><EFBFBD><EFBFBD>~<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00><00> 5<00><><00> 5<00><><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@ <00><00>><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>Nj<00><00><00><00><00><><00><00><00><><00><00><00><00>_<00>L<00>n<00>5<00><00>@ <00><00>}<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><><00><00><00><00><00><00><00><><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><00>L<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00>5<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Aj<00> <00><00><00><><00><00><00><><00><00><00><00>N<00> <00><00>^<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>ij<00><00><00><00>z<00><00><00><><00> .<00><><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00>!<00><00><00>w<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00><00>.<00><><00>5<00><><00>@ <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> <00><00>j<00> <00><00><00><><EFBFBD><EFBFBD><00>
<00><00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> <00>j<00><00> <00><00><>  <00><00><><00>
 <00><00>  5<00><00>  5<00> @
<00><00><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> #j<00><00> <00><00><> <00><00><><00> <00><00> 5<00><00> 5<00>3@
<00><00>><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> Nj<00><00> <00><00><> <00><00><><00> <00><00>_ L<00>n 5<00>@
<00><00>}<00><><EFBFBD><EFBFBD> <00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>!@ <00><00><00>" <00>j<00> # <00><00><>$ <00><00><><00>% <00><00>&
<00><00><><00><><EFBFBD><EFBFBD>'<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>(<00> <00><00><00>) <00>j<00><><EFBFBD><EFBFBD><EFBFBD>*<00> <00><00><>+ <00><00><00><><EFBFBD><EFBFBD>,<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>-<00><00><00><00>.#j<00>/<00><00><00><>0<00><00><><00>1<00><00>25<00><00>35<00>34@ <00><00><><00><><EFBFBD><EFBFBD>5<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>6<00><00><00><00>7<00>j<00>8<00><00><00><>9<00><00><><00>:<00><00>;5<00><00><5<00>=@ <00><00><><00><><EFBFBD><EFBFBD>><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>?<00><00><00><00>@<00>j<00><><EFBFBD><EFBFBD><EFBFBD>A<00><00><00><>B<00><00><><00>C<00><00>D<00><00><>E<00><00><><00><><EFBFBD><EFBFBD>F<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>G<00><00><00><00>H<00>j<00>I<00><00><00><>J<00><00><><00>K<00><00>L5<00><00>M5<00>N@<00><00><><00><><EFBFBD><EFBFBD>O<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>P<00><00><00><00>Q#j<00>R<00><00><00><>S<00><00><><00>T<00><00>U5<00><00>V5<00>3W@ <00><00>X L<00>Y@
<00><00><00><><EFBFBD><EFBFBD>Z<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>[@ <00><00><00>\ <00>j<00> ] <00><00><>^ <00><00><><00>_ <00><00>`
<00><00>5<00><><EFBFBD><EFBFBD>a<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>b@ <00><00><00>c Aj<00> d <00><00><>e <00><00><><00>f <00><00>Ng
<00><00>^<00><><EFBFBD><EFBFBD>h<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>i@ <00><00><00>j ij<00>k <00><00>zl <00><00><>m <00><00><><00><><EFBFBD><EFBFBD>n<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>o@ <00><00><00>p <00><00>j<00>q<00>$<00><><EFBFBD><EFBFBD>r<00> <00><00><><00><><EFBFBD><EFBFBD>s<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>t<00> <00><00><00>u j<00><><EFBFBD><EFBFBD><EFBFBD>v<00> <00><00>!w -@<00><><EFBFBD><EFBFBD>x<00> <00><00>@<00><><EFBFBD><EFBFBD>y<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>z@<00><00><00>{Kj<00>|5<00>]}5<00>d~ <00><00>k <00><00>w<00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00><00> 5<00><><00> 5<00><><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@ <00><00>><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>Nj<00><00><00><00><00><><00><00><00><><00><00><00><00>_<00>L<00>n<00>5<00><00>@ <00><00>}<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><><00><00><00><00><00><00><00><><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><00>L<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00>5<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Aj<00> <00><00><00><><00><00><00><><00><00><00><00>N<00> <00><00>^<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>ij<00><00><00><00>z<00><00><00><><00> .<00><><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00>!<00><00><00>w<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00><00>.<00><><00>5<00><><00>@ <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> <00><00>j<00> <00><00><00><><EFBFBD><EFBFBD><00>
<00><00><><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00>  <00>j<00>
<00> <00><00><>  <00><00><><00>  <00><00>  5<00><00> 5<00>@
<00><00><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> #j<00><00> <00><00><> <00><00><><00> <00><00> 5<00><00> 5<00>3@
<00><00>><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> Nj<00><00> <00><00><> <00><00><><00> <00><00>_ L<00>n  5<00>!@
<00><00>}<00><><EFBFBD><EFBFBD>"<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>#@ <00><00><00>$ <00>j<00> % <00><00><>& <00><00><><00>' <00><00>(
<00><00><><00><><EFBFBD><EFBFBD>)<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>*<00> <00><00><00>+ <00>j<00><><EFBFBD><EFBFBD><EFBFBD>,<00> <00><00><>- <00><00><00><><EFBFBD><EFBFBD>.<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>/<00><00><00><00>0#j<00>1<00><00><00><>2<00><00><><00>3<00><00>45<00><00>55<00>36@ <00><00><><00><><EFBFBD><EFBFBD>7<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>8<00><00><00><00>9<00>j<00>:<00><00><00><>;<00><00><><00><<00><00>=5<00><00>>5<00>?@ <00><00><><00><><EFBFBD><EFBFBD>@<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>A<00><00><00><00>B<00>j<00><><EFBFBD><EFBFBD><EFBFBD>C<00><00><00><>D<00><00><><00>E<00><00>F<00><00><>G<00><00><><00><><EFBFBD><EFBFBD>H<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>I<00><00><00><00>J<00>j<00>K<00><00><00><>L<00><00><><00>M<00><00>N5<00><00>O5<00>P@<00><00><><00><><EFBFBD><EFBFBD>Q<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>R<00><00><00><00>S#j<00>T<00><00><00><>U<00><00><><00>V<00><00>W5<00><00>X5<00>3Y@ <00><00>Z L<00>[@
<00><00><00><><EFBFBD><EFBFBD>\<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>]@ <00><00><00>^ <00>j<00> _ <00><00><>` <00><00><><00>a <00><00>b
<00><00>5<00><><EFBFBD><EFBFBD>c<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>d@ <00><00><00>e Aj<00> f <00><00><>g <00><00><><00>h <00><00>Ni
<00><00>^<00><><EFBFBD><EFBFBD>j<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>k@ <00><00><00>l ij<00>m <00><00>zn <00><00><>o <00><00><><00><><EFBFBD><EFBFBD>p<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>q@ <00><00><00>r <00><00>j<00>s<00>1<00><><EFBFBD><EFBFBD>t<00> <00><00><><00><><EFBFBD><EFBFBD>u<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>v<00> <00><00><00>w j<00><><EFBFBD><EFBFBD><EFBFBD>x<00> <00><00>!y -@<00><><EFBFBD><EFBFBD>z<00> <00><00>@<00><><EFBFBD><EFBFBD>{<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>|@<00><00><00>}Kj<00>~5<00>]5<00>d<00> <00><00>k<00> <00><00>w<00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00><00> 5<00><><00> 5<00><><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@ <00><00>><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>Nj<00><00><00><00><00><><00><00><00><><00><00><00><00>_<00>L<00>n<00>5<00><00>@ <00><00>}<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><><00><00><00><00><00><00><00><><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><00>L<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00>5<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Aj<00> <00><00><00><><00><00><00><><00><00><00><00>N<00> <00><00>^<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>ij<00><00><00><00>z<00><00><00><><00> .<00><><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00>!<00><00><00>w<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00><00>.<00><><00>5<00><>@ <00><00><><00><><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> <00><00>j<00> <00><00><00><><EFBFBD><EFBFBD><00>
<00><00><><00><><EFBFBD><EFBFBD> <00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
<00> <00><00><00>  <00>j<00> <00> <00><00><>  <00><00><><00> <00><00> 5<00><00> 5<00>@
<00><00><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> #j<00><00> <00><00><> <00><00><><00> <00><00> 5<00><00> 5<00>3@
<00><00>><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> Nj<00><00> <00><00><> <00><00><><00>  <00><00>_! L<00>n" 5<00>#@
<00><00>}<00><><EFBFBD><EFBFBD>$<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>%@ <00><00><00>& <00>j<00> ' <00><00><>( <00><00><><00>) <00><00>*
<00><00><><00><><EFBFBD><EFBFBD>+<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>,<00> <00><00><00>- <00>j<00><><EFBFBD><EFBFBD><EFBFBD>.<00> <00><00><>/ <00><00><00><><EFBFBD><EFBFBD>0<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>1<00><00><00><00>2#j<00>3<00><00><00><>4<00><00><><00>5<00><00>65<00><00>75<00>38@ <00><00><><00><><EFBFBD><EFBFBD>9<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>:<00><00><00><00>;<00>j<00><<00><00><00><>=<00><00><><00>><00><00>?5<00><00>@5<00>A@ <00><00><><00><><EFBFBD><EFBFBD>B<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>C<00><00><00><00>D<00>j<00><><EFBFBD><EFBFBD><EFBFBD>E<00><00><00><>F<00><00><><00>G<00><00>H<00><00><>I<00><00><><00><><EFBFBD><EFBFBD>J<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>K<00><00><00><00>L<00>j<00>M<00><00><00><>N<00><00><><00>O<00><00>P5<00><00>Q5<00>R@<00><00><><00><><EFBFBD><EFBFBD>S<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>T<00><00><00><00>U#j<00>V<00><00><00><>W<00><00><><00>X<00><00>Y5<00><00>Z5<00>3[@ <00><00>\ L<00>]@
<00><00><00><><EFBFBD><EFBFBD>^<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>_@ <00><00><00>` <00>j<00> a <00><00><>b <00><00><><00>c <00><00>d
<00><00>5<00><><EFBFBD><EFBFBD>e<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>f@ <00><00><00>g Aj<00> h <00><00><>i <00><00><><00>j <00><00>Nk
<00><00>^<00><><EFBFBD><EFBFBD>l<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>m@ <00><00><00>n ij<00>o <00><00>zp <00><00><>q <00><00><><00><><EFBFBD><EFBFBD>r<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>s@ <00><00><00>t <00><00>j<00>u<00>:<00><><EFBFBD><EFBFBD>v<00> <00><00><><00><><EFBFBD><EFBFBD>w<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>x<00> <00><00><00>y j<00><><EFBFBD><EFBFBD><EFBFBD>z<00> <00><00>!{ -@<00><><EFBFBD><EFBFBD>|<00> <00><00>@<00><><EFBFBD><EFBFBD>}<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>~@<00><00><00>Kj<00><00>5<00>]<00>5<00>d<00> <00><00>k<00> <00><00>w<00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00><00> 5<00><><00> 5<00><><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@ <00><00>><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>Nj<00><00><00><00><00><><00><00><00><><00><00><00><00>_<00>L<00>n<00>5<00><00>@ <00><00>}<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><><00><00><00><00><00><00><00><><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><00>L<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00>5<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Aj<00> <00><00><00><><00><00><00><><00><00><00><00>N<00> <00><00>^<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>ij<00><00><00><00>z<00><00><00><><00> .<00><><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00>!<00><00><00>w<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00>.<00><>5<00><>@ <00><00><><00><><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00> <00><00>j<00>  <00><00><00><><EFBFBD><EFBFBD>
<00>
<00><00><><00><><EFBFBD><EFBFBD> <00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> <00> <00><00><00>  <00>j<00><00> <00><00><> <00><00><><00> <00><00> 5<00><00> 5<00>@
<00><00><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> #j<00><00> <00><00><> <00><00><><00> <00><00> 5<00><00> 5<00>3@
<00><00>><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> Nj<00> <00> <00><00><>! <00><00><><00>" <00><00>_# L<00>n$ 5<00>%@
<00><00>}<00><><EFBFBD><EFBFBD>&<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>'@ <00><00><00>( <00>j<00> ) <00><00><>* <00><00><><00>+ <00><00>,
<00><00><><00><><EFBFBD><EFBFBD>-<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>.<00> <00><00><00>/ <00>j<00><><EFBFBD><EFBFBD><EFBFBD>0<00> <00><00><>1 <00><00><00><><EFBFBD><EFBFBD>2<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>3<00><00><00><00>4#j<00>5<00><00><00><>6<00><00><><00>7<00><00>85<00><00>95<00>3:@ <00><00><><00><><EFBFBD><EFBFBD>;<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><<00><00><00><00>=<00>j<00>><00><00><00><>?<00><00><><00>@<00><00>A5<00><00>B5<00>C@ <00><00><><00><><EFBFBD><EFBFBD>D<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>E<00><00><00><00>F<00>j<00><><EFBFBD><EFBFBD><EFBFBD>G<00><00><00><>H<00><00><><00>I<00><00>J<00><00><>K<00><00><><00><><EFBFBD><EFBFBD>L<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>M<00><00><00><00>N<00>j<00>O<00><00><00><>P<00><00><><00>Q<00><00>R5<00><00>S5<00>T@<00><00><><00><><EFBFBD><EFBFBD>U<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>V<00><00><00><00>W#j<00>X<00><00><00><>Y<00><00><><00>Z<00><00>[5<00><00>\5<00>3]@ <00><00>^ L<00>_@
<00><00><00><><EFBFBD><EFBFBD>`<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>a@ <00><00><00>b <00>j<00> c <00><00><>d <00><00><><00>e <00><00>f
<00><00>5<00><><EFBFBD><EFBFBD>g<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>h@ <00><00><00>i Aj<00> j <00><00><>k <00><00><><00>l <00><00>Nm
<00><00>^<00><><EFBFBD><EFBFBD>n<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>o@ <00><00><00>p ij<00>q <00><00>zr <00><00><>s <00><00><><00><><EFBFBD><EFBFBD>t<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>u@ <00><00><00>v <00><00>j<00>w<00>E<00><><EFBFBD><EFBFBD>x<00> <00><00><><00><><EFBFBD><EFBFBD>y<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>z<00> <00><00><00>{ j<00><><EFBFBD><EFBFBD><EFBFBD>|<00> <00><00>!} -@<00><><EFBFBD><EFBFBD>~<00> <00><00>@<00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Kj<00><00>5<00>]<00>5<00>d<00> <00><00>k<00> <00><00>w<00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00><00> 5<00><><00> 5<00><><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@ <00><00>><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>Nj<00><00><00><00><00><><00><00><00><><00><00><00><00>_<00>L<00>n<00>5<00><00>@ <00><00>}<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><><00><00><00><00><00><00><00><><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00><00>@<00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>#j<00><00><00><00><00><><00><00><00><><00><00><00><00><00>5<00><00><00>5<00>3<00>@<00><00><00>L<00><00>@ <00><00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00> <00><00><00><><00><00><00><><00><00><00><00><00> <00><00>5<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Aj<00> <00><00><00><><00><00><00><><00><00><00><00>N<00> <00><00>^<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>ij<00><00><00><00>z<00><00><00><><00> .<00><><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00>!<00><00><00>w<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00>j<00>.<00><>5<00><>@ <00><00><><00><><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00>
 <00><00>j<00>  <00><00><00><><EFBFBD><EFBFBD> <00>
<00><00><><00><><EFBFBD><EFBFBD> <00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> <00>j<00><00> <00><00><> <00><00><><00> <00><00> 5<00><00> 5<00>@
<00><00><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00> #j<00><00> <00><00><> <00><00><><00> <00><00> 5<00><00> 5<00>3@
<00><00>><00><><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> <00> <00><00><00>! Nj<00>"<00> <00><00><># <00><00><><00>$ <00><00>_% L<00>n& 5<00>'@
<00><00>}<00><><EFBFBD><EFBFBD>(<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>)@ <00><00><00>* <00>j<00> + <00><00><>, <00><00><><00>- <00><00>.
<00><00><><00><><EFBFBD><EFBFBD>/<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>0<00> <00><00><00>1 <00>j<00><><EFBFBD><EFBFBD><EFBFBD>2<00> <00><00><>3 <00><00><00><><EFBFBD><EFBFBD>4<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>5<00><00><00><00>6#j<00>7<00><00><00><>8<00><00><><00>9<00><00>:5<00><00>;5<00>3<@ <00><00><><00><><EFBFBD><EFBFBD>=<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>><00><00><00><00>?<00>j<00>@<00><00><00><>A<00><00><><00>B<00><00>C5<00><00>D5<00>E@ <00><00><><00><><EFBFBD><EFBFBD>F<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>G<00><00><00><00>H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>I<00><00><00><>J<00><00><><00>K<00><00>L<00><00><>M<00><00><><00><><EFBFBD><EFBFBD>N<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>O<00><00><00><00>P<00>j<00>Q<00><00><00><>R<00><00><><00>S<00><00>T5<00><00>U5<00>V@<00><00><><00><><EFBFBD><EFBFBD>W<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>X<00><00><00><00>Y#j<00>Z<00><00><00><>[<00><00><><00>\<00><00>]5<00><00>^5<00>3_@ <00><00>` L<00>a@
<00><00><00><><EFBFBD><EFBFBD>b<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>c@ <00><00><00>d <00>j<00> e <00><00><>f <00><00><><00>g <00><00>h
<00><00>5<00><><EFBFBD><EFBFBD>i<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>j@ <00><00><00>k Aj<00> l <00><00><>m <00><00><><00>n <00><00>No
<00><00>^<00><><EFBFBD><EFBFBD>p<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>q@ <00><00><00>r ij<00>s <00><00>zt <00><00><>u <00><00><><00><><EFBFBD><EFBFBD>v<00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>w@ <00><00><00>x <00><00>j<00>yL<00>TzL<00>k{@H<00><><00><><EFBFBD><EFBFBD>|<00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>}@
<00><00><00>~
Q<00>j<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@
<00><00><00><00>
Q<00>j<00><00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@
<00><00><00><00>
Q<00>j<00><00><00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00> H<00>
<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00><00><00><00><><EFBFBD><EFBFBD><EFBFBD><00> <00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> <00><00><00><00> <00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00> H<00><00><><EFBFBD><EFBFBD><EFBFBD><00> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00> 5<00> <00> H<00><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> 5<00>#<00><00><00><00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> H<00>
<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00><00><00><><00><00><00><00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> H<00><00><><EFBFBD><EFBFBD><EFBFBD><00>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ <00><00><00><00> Q<00>j<00><00> 5<00> <00>H<00><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00>5<00>#<00><00><00>4<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00>H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00><00><00>C<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00><00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00>H<00>R<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00>H<00>e<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00><00><00>t<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00><00><00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00>H<00> <00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00>Q<00>j<00><00>L<00> <00>@<00><00>0 <00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<00><00><00><00><00><00>j<00><00><00><00>: <00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><00><00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00> <00><00>j<00> <00><00>B <00><><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> <00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00> <00><00>j<00>
<00><00>T <00><><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> <00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00> <00><00>j<00> <00><00>h <00><><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00> <00><00>j<00> <00><00>w <00><><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00> <00><00>j<00> <00><00>t<00><><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00> <00> j<00>  <00><00> <00>.<00>& <00><00><00><> <00><><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>! <00><00><00><00>" <00>j<00><><EFBFBD><EFBFBD><EFBFBD># <00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD>$ <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>% @<00><00><00>& Q<00>j<00>' <00><00>
<00> ( <00><00>) <00>.<00>&* <00>L<00><> + @<00><00><> <00><><EFBFBD><EFBFBD>, <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>- <01><00><00><00>. <00>j<00><><EFBFBD><EFBFBD><EFBFBD>/ <01>H<00><><00><><EFBFBD><EFBFBD><EFBFBD>0 <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>1 @<00><00><00>2 Q<00>j<00>3 <00><00>
<00> 4 <00><00>5 <00>.<00>&6 <00><00><> <00><><EFBFBD><EFBFBD>7 <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>8 <01><00><00><00>9 <00> j<00><><EFBFBD><EFBFBD><EFBFBD>: <01>H<00><> <00><><EFBFBD><EFBFBD>; <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>< @<00><00><00>= Q<00>j<00>> H<00><> <00><><EFBFBD><EFBFBD>? <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@ @<00><00><00>A Q<00>j<00>B H<00><> <00><><EFBFBD><EFBFBD>C <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>D @<00><00><00>E Q<00>j<00>F <00><00><> G <00><00>
H L<00>
I L<00>
J @$
:
<00><><EFBFBD><EFBFBD>K <01><00><00>H
<00><><EFBFBD><EFBFBD>L <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>M <01><00><00><00>N <00>j<00><><EFBFBD><EFBFBD><EFBFBD>O <01><00><00><><00>P S
<00><><EFBFBD><EFBFBD><EFBFBD>Q <01>H<00>a
<00><><EFBFBD><EFBFBD>R <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>S @<00><00><00>T Q<00>j<00>U H<00>h
<00><><EFBFBD><EFBFBD>V <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>W @<00><00><00>X Q<00>j<00>Y H<00>t
<00><><EFBFBD><EFBFBD>Z <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>[ @<00><00><00>\ Q<00>j<00>] <00><00><>
^ <00><00><>
_ <00><00><>
` <00><00><>
a <00><00><>
b <00><00><>
c <00><00><>
d <00><00><>
e <00><00><>
f <00><00><>
g <00><00><>
h <00><00> i <00><00> j <00><00> k <00><00>" l <00><00>+ m <00><00>5 n <00><00>? o <00><00>I p <00><00>S q <00><00>] r <00><00>g s <00><00><>
t <00><00><>
u <00><00><>
v <00><00><>
w <00><00><>
x <00><00><>
y <00><00> z <00><00> { <00><00> | <00><00>" } <00><00>+ ~ <00><00>5  <00><00>? <00> <00><00>I <00> <00><00>S <00> <00><00>] <00> L<00>r <00> L<00>~ <00> @<00><00><> <00> <00><00><> <00> <00><00><> <00> <00><00><> <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00><00> <00><00><> <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00><00> <00><00><> <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00><00> <00><00> <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00><00> <00><00> <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00><00> <00><00>- <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00><00> <00><00>C <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00><00> <00><00>Y <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00><00> <00><00>n <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00><00> <00><00><> <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00><00> <00><00><> <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00><00> <00><00><> <00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01><00><00><00><00> <00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01>
<00><00><00><00> 
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @ <00><00><00><00>  Q<00>j<00>
<00><00><> <00><><EFBFBD><EFBFBD>
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
<01><00><00><00>
<00><00>j<00><><EFBFBD><EFBFBD><EFBFBD>
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
<01>
<00><00><00>

H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
@ <00><00><00>
 Q<00>j<00>
<00><00><> <00><><EFBFBD><EFBFBD>
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
<01><00><00><00>
<00><00>j<00><><EFBFBD><EFBFBD><EFBFBD>
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
<01>
<00><00><00>

H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
@ <00><00><00>
 Q<00>j<00>
<00><00><> <00><><EFBFBD><EFBFBD>
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
<01><00><00><00>
<00><00>j<00><><EFBFBD><EFBFBD><EFBFBD>
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
<01>
<00><00><00>

H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
@ <00><00><00>
 Q<00>j<00>
<00><00><> <00><><EFBFBD><EFBFBD>
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
<01><00><00><00>!
<00><00>j<00><><EFBFBD><EFBFBD><EFBFBD>"
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>#
<01>
<00><00><00>$

H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>%
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>&
@ <00><00><00>'
 Q<00>j<00>(
<00><00> <00><><EFBFBD><EFBFBD>)
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>*
<01><00><00><00>+
<00><00>j<00><><EFBFBD><EFBFBD><EFBFBD>,
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>-
<01>
<00><00><00>.

H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>/
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>0
@ <00><00><00>1
 Q<00>j<00>2
<00><00>% <00><><EFBFBD><EFBFBD>3
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>4
<01><00><00><00>5
<00><00>j<00><><EFBFBD><EFBFBD><EFBFBD>6
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>7
<01>
<00><00><00>8

H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>9
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>:
@ <00><00><00>;
 Q<00>j<00><
<00><00>8 <00><><EFBFBD><EFBFBD>=
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>>
<01><00><00><00>?
<00><00>j<00><><EFBFBD><EFBFBD><EFBFBD>@
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>A
<01>
<00><00><00>B

H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>C
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>D
@ <00><00><00>E
 Q<00>j<00>F
<00><00>K <00><><EFBFBD><EFBFBD>G
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>H
<01><00><00><00>I
<00><00>j<00><><EFBFBD><EFBFBD><EFBFBD>J
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>K
<01>
<00><00><00>L

H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>M
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>N
@ <00><00><00>O
 Q<00>j<00>P
<00><00>^ <00><><EFBFBD><EFBFBD>Q
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>R
<01><00><00><00>S
<00><00>j<00><><EFBFBD><EFBFBD><EFBFBD>T
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>U
<01>
<00><00><00>V

H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>W
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>X
@ <00><00><00>Y
 Q<00>j<00>Z
<00><00>q <00><><EFBFBD><EFBFBD>[
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>\
<01><00><00><00>]
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>^
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>_
@
<00><00><00>`

Q<00>j<00>a
<00><00><> <00><><EFBFBD><EFBFBD>b
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>c
<01><00><00><00>d
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>e
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>f
@
<00><00><00>g

Q<00>j<00>h
<00><00><> <00><><EFBFBD><EFBFBD>i
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>j
<01><00><00><00>k
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>l
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>m
@
<00><00><00>n

Q<00>j<00>o
<00><00><> <00><><EFBFBD><EFBFBD>p
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>q
<01><00><00><00>r
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>s
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>t
@
<00><00><00>u

Q<00>j<00>v
<00><00><> <00><><EFBFBD><EFBFBD>w
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>x
<01><00><00><00>y
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>z
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>{
@
<00><00><00>|

Q<00>j<00>}
<00><00><> <00><><EFBFBD><EFBFBD>~
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>
<01><00><00><00><00>
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@
<00><00><00><00>

Q<00>j<00><00>
<00><00><> <00><><EFBFBD><EFBFBD><EFBFBD>
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<01><00><00><00><00>
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@
<00><00><00><00>

Q<00>j<00><00>
<00><00><> <00><><EFBFBD><EFBFBD><EFBFBD>
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<01><00><00><00><00>
H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<01> 1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@
<00><00><00><00>

Q<00>j<00><00>
.<00><00>
<00><00><00><><EFBFBD><EFBFBD><EFBFBD>
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<01><00><00><00><00>
.j<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<01> H<00>@<00><><EFBFBD><EFBFBD><EFBFBD>
<01>
1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@ <00><00><00><00>
 Q<00>j<00><00>
 .<00>L<00>
H<00>Y<00><><EFBFBD><EFBFBD><EFBFBD>
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@<00><00><00><00>
Q<00>j<00><00>
H<00>s<00><><EFBFBD><EFBFBD><EFBFBD>
<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@<00><00><00><00>
Q<00>j<00><00>
<00><00><><00>
L<00><><00>
L<00><><00>
L<00><><00>
@<00><00><><00>
<00><00><><00>
<00><00><00>
<00><00>
<00>
<00><00><00>
.<00><00>
ShaderPPtr<EditorExtension>m_FileIDm_PathIDPPtr<PrefabInstance>SerializedShaderm_ParsedFormSerializedPropertiesm_PropInfom_PropsSerializedPropertym_Descriptionm_Attributesm_Flagsm_DefValue[0]m_DefValue[1]m_DefValue[2]m_DefValue[3]SerializedTexturePropertym_DefTexturem_DefaultNamem_TexDimm_SubShadersSerializedSubShaderm_PassesSerializedPassm_NameIndicesSerializedShaderStatem_StateSerializedShaderRTBlendStatertBlend0SerializedShaderFloatValuesrcBlendvalnamedestBlendsrcBlendAlphadestBlendAlphablendOpblendOpAlphacolMaskrtBlend1rtBlend2rtBlend3rtBlend4rtBlend5rtBlend6rtBlend7rtSeparateBlendzClipzTestzWritecullingconservativeoffsetFactoroffsetUnitsalphaToMaskSerializedStencilOpstencilOppassfailzFailcompstencilOpFrontstencilOpBackstencilReadMaskstencilWriteMaskstencilReffogStartfogEndfogDensitySerializedShaderVectorValuefogColorxyzwfogModegpuProgramIDSerializedTagMapm_Tagstagsm_LODlightingm_ProgramMaskSerializedProgramprogVertexm_SubProgramsSerializedSubProgramm_BlobIndexParserBindChannelsm_ChannelsShaderBindChannelsourcetargetm_SourceMapm_KeywordIndicesm_ShaderHardwareTierm_GpuProgramTypeSerializedProgramParametersm_Parametersm_VectorParamsVectorParameterm_NameIndexm_ArraySizem_Dimm_MatrixParamsMatrixParameterm_RowCountm_TextureParamsTextureParameterm_SamplerIndexm_MultiSampledm_BufferParamsBufferBindingm_ConstantBuffersConstantBufferm_StructParamsStructParameterm_StructSizem_VectorMembersm_MatrixMembersm_Sizem_IsPartialCBm_ConstantBufferBindingsm_UAVParamsUAVParameterm_OriginalIndexm_SamplersSamplerParametersamplerbindPointm_ShaderRequirementsm_PlayerSubProgramsSerializedPlayerSubProgramm_ParameterBlobIndicesm_CommonParametersm_SerializedKeywordStateMaskprogFragmentprogGeometryprogHullprogDomainprogRayTracingm_HasInstancingVariantm_HasProceduralInstancingVariantm_UseNamem_TextureNameSerializedPackageRequirementsm_PackageRequirementsm_RequirementsSerializedPackageRequirementversionstatusm_StatusMessagem_CombinedStatusm_KeywordNamesm_KeywordFlagsm_CustomEditorNamem_FallbackNamem_DependenciesSerializedShaderDependencyfromtom_CustomEditorForRenderPipelinesSerializedCustomEditorForRenderPipelinecustomEditorNamerenderPipelineTypem_DisableNoSubshadersMessageplatformsoffsetscompressedLengthsdecompressedLengthscompressedBlobstageCountsPPtr<Shader>m_NonModifiableTexturesm_ShaderIsBakedm_DefaultTextureserrorsShaderErrormessagemessageDetailsfilecompilerPlatformlinewarningruntimeErrorShaderCompilationInfom_CompileInfom_SnippetsShaderSnippetm_Codem_AssetPathm_AssetNamem_PlatformMaskm_HardwareTierVariantsMaskm_StartLinem_TypesMaskm_IncludesHashbytes[0]bytes[1]bytes[2]bytes[3]bytes[4]bytes[5]bytes[6]bytes[7]bytes[8]bytes[9]bytes[10]bytes[11]bytes[12]bytes[13]bytes[14]bytes[15]m_CodeHashm_FromOtherm_ForceSyncCompilationm_UseDxcAPIsm_NeverUseDxcAPIsm_Languagem_VariantsUserGlobal0m_VariantsUserGlobal1m_VariantsUserGlobal2m_VariantsUserGlobal3m_VariantsUserGlobal4m_VariantsUserGlobal5m_VariantsUserGlobal6m_VariantsUserLocal0m_VariantsUserLocal1m_VariantsUserLocal2m_VariantsUserLocal3m_VariantsUserLocal4m_VariantsUserLocal5m_VariantsUserLocal6m_VariantsBuiltin0m_VariantsBuiltin1m_VariantsBuiltin2m_VariantsBuiltin3m_VariantsBuiltin4m_VariantsBuiltin5m_VariantsBuiltin6m_DynamicBranchKeywordsm_PrunedKeywords0m_PrunedKeywords1m_PrunedKeywords2m_PrunedKeywords3m_PrunedKeywords4m_PrunedKeywords5m_PrunedKeywords6m_BaseRequirementsm_KeywordTargetInfoKeywordTargetInfokeywordNamerequirementsm_NonStrippedUserKeywordsm_BuiltinKeywordsm_MeshComponentsFromSnippetsm_HasSurfaceShadersm_HasFixedFunctionShadersm_CompileSmokeTestAfterImportm_AssetGUIDdata[0]data[1]data[2]data[3]m_AssetLocalIdentifierInFile<00><><EFBFBD><EFBFBD><EFBFBD>R=<3D>5k<1B>wP~<00>7<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00> E<00> <00><00><00>.<00>(<00>
<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00> Q<00>j<00>FS <00><00><00>.<00>(<00>E<00>\ <00><00><00><00>.<00>(<00><00><00>e<00><00><00><><00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><00>H<00>j<00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00><00><00><><00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><00>H<00>j<00><><EFBFBD><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>!@<00><00><00>"Q<00>j<00>#<00><00><>$L<00><>%L<00><>&@<00><00><>'<00><00><><00><><EFBFBD><EFBFBD>(<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>)<00><00><00><00>*<00>j<00><><EFBFBD><EFBFBD><EFBFBD>+<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD>,<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>-@<00><00><00>.Q<00>j<00>/H<00>
<00><><EFBFBD><EFBFBD><EFBFBD>0<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>1@<00><00><00>2Q<00>j<00>3<00><00><00><><EFBFBD><EFBFBD>4<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>5<00><00><00><00>6H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>7<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>8@<00><00><00>9Q<00>j<00>:H<00><00><><EFBFBD><EFBFBD>;<00><>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><@<40><00><00><00>=<00>Q<00>j<00>><00>*=<00><><EFBFBD><EFBFBD>?<00><00><00>O<00><><EFBFBD><EFBFBD>@<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>A<00><00><00><00>B<00>j<00><><EFBFBD><EFBFBD><EFBFBD>C<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD>D<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>E@<00><00><00>FQ<00>j<00>GY
<00>H<00><00>e I<00><00>J<00>.<00>(K<00><00><00>oL <00><00>wM <00><00>yN <00><00>{O <00><00>wP <00><00>yQ <00><00><><00><><EFBFBD><EFBFBD>R<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>S<00><00><00><00>T<00>j<00><><EFBFBD><EFBFBD><EFBFBD>U<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD>V<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>W@<00><00><00>XQ<00>j<00>Y<00><00>
<00>Z<00><00><><00><><EFBFBD><EFBFBD>[<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>\<00><00><00><00>]<00>j<00><><EFBFBD><EFBFBD><EFBFBD>^<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD>_<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>`@<00><00><00>aQ<00>j<00>b<00><00>
<00>c<00><00><><00><><EFBFBD><EFBFBD>d<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>e<00><00><00><00>f<00>j<00><><EFBFBD><EFBFBD><EFBFBD>g<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD>h<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>i@<00><00><00>jQ<00>j<00>kV<00>
<00>l <00><00><>m <00><00><>n <00><00><>o <00><00><>p <00><00><><00><><EFBFBD><EFBFBD>q<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><00><00>s<00>j<00><><EFBFBD><EFBFBD><EFBFBD>t<00>H<00><><00><><EFBFBD><EFBFBD>u<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>v@<00><00><00>wQ<00>j<00>xH<00><><00><><EFBFBD><EFBFBD>y<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>z@<00><00><00>{Q<00>j<00>|L<00><>}@<40>MaterialPPtr<EditorExtension>m_FileIDm_PathIDPPtr<PrefabInstance>PPtr<Shader>m_Shaderm_Parentm_ModifiedSerializedPropertiesm_ValidKeywordsm_InvalidKeywordsm_LightmapFlagsm_EnableInstancingVariantsm_DoubleSidedGIm_CustomRenderQueuestringTagMapdisabledShaderPassesm_LockedPropertiesUnityPropertySheetm_SavedPropertiesm_TexEnvsUnityTexEnvm_Texturem_Scalexym_Offsetm_Intsm_Floatsm_Colorsrgbam_BuildTextureStacksBuildTextureStackReferencegroupNameitemNamem_AllowLocking<00><><EFBFBD>|<00><><73>ҵ<EFBFBD><D2B5><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>V^7<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00>E<00> <00><00>'<00>.<00>0<00>9a<00> <00><00>'<00>.<00>0<00><00><00>r<00> <00><00>' <00>.<00>0
<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00> Q<00>j<00><00><00>N<00><><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><01><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><01><00><><00> <00><00><><00>.<00>
<00>H<00>
<00><><EFBFBD><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00><00><00>f<00><><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><01><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><01>x<00><00><><EFBFBD><EFBFBD><EFBFBD><01>H<00><><00><><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00>!Q<00>j<00>"H<00><><00><><EFBFBD><EFBFBD>#<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>$@<00><00><00>%Q<00>j<00>&H<00><><00><><EFBFBD><EFBFBD>'<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>(@<00><00><00>)Q<00>j<00>*y<00>
<00> +<00><00>',<00>.<00>0-<00><00><><00><><EFBFBD><EFBFBD>.@1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>/<00><00><00>0.<00>j<00>1H<00><><00><><EFBFBD><EFBFBD>2<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>3@<00><00><00>4Q<00>j<00>5H<00><><00><><EFBFBD><EFBFBD>6<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>7@<00><00><00>8Q<00>j<00>9H<00><><00><><EFBFBD><EFBFBD>:<01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>;@<00><00><00><Q<00>j<00>=h<00><><00> ><00><00>'?<00>.<00>0@<00><00><00><>AA<00><00><>BA
<00><><EFBFBD><EFBFBD>C<00>H<00><><00><><EFBFBD><EFBFBD>D<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>E@<00><00><00>FQ<00>j<00>GH<00>)<00><><EFBFBD><EFBFBD>H<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>I@<00><00><00>JQ<00>j<00>KH<00>2<00><><EFBFBD><EFBFBD>L<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>M@<00><00><00>NQ<00>j<00>O>O P<00><00>'Q<00>.<00>0R<00>>T S<00><00>'T<00>.<00>0U<00>ScriptedImporterPPtr<EditorExtension>m_FileIDm_PathIDPPtr<PrefabInstance>m_InternalIDToNameTablem_ExternalObjectsSourceAssetIdentifiertypeassemblynamem_UsedFileIDsm_UserDatam_AssetBundleNamem_AssetBundleVariantm_UseAsTemplatem_ExposeTemplateAsShaderShaderGraphTemplatem_TemplatecategorydescriptionPPtr<$Texture2D>iconthumbnailr<00><><EFBFBD><EFBFBD>O(If<>,<2C>5X׽"<00><00>7<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00>E<00> <00><00><00>.<00><00>(a<00> <00><00><00>.<00><00><00><00>r<00> <00><00> <00>.<00>
<00>4<00>v<00> A<00><00> A.<00> A<00><00>]<00>A<00><00>K<00>h<00><><00> <00><00><00>.<00><00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00>H<00>3<00><><EFBFBD><EFBFBD><EFBFBD><01><>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<40><00><00><00><00>Q<00>j<00><00><00><00>=<00><00>HA<00><00>`<00><00>n<00><00>zA<00><00><> A<00><00><>!APPtr<EditorExtension>m_FileIDm_PathIDPPtr<PrefabInstance>m_ShaderIDm_AllowMaterialOverridem_SurfaceTypem_AlphaModem_CastShadowsm_HasVertexModificationInMotionVectorm_IsVFXCompatiblem<><6D>b<EFBFBD>O<EFBFBD><4F>h<00><><EFBFBD><EFBFBD>K<EFBFBD>E<EFBFBD>p4<00>/<2F><>+<2B><><EFBFBD><EFBFBD>(<00><00>j<>[<5B><>@B<><00><00>y<EFBFBD><00>y<EFBFBD><00>y<EFBFBD>k<><6B><EFBFBD><EFBFBD>ƵC<C6B5>J\W<>fq]&<26><>&Q@g<>~v<>*<2A><14>-V<>=<1C><>J<EFBFBD><4A><EFBFBD>p<EFBFBD><70><EFBFBD><00>@<40>7<><37>L<EFBFBD><4C><EFBFBD>tOUT<55> T#<1A>O<><4F>T<EFBFBD><54><EFBFBD>z<EFBFBD><00><><EFBFBD><EFBFBD>w0<77>K<EFBFBD><4B><05><><EFBFBD>`ea<65><61><EFBFBD>kRL<52><4C><EFBFBD>YqU<> <00>y<EFBFBD>EUnity.ShaderGraph.Editor::UnityEditor.ShaderGraph.ShaderGraphMetadata ?<3F><04> ?<3F><04> R<>_Color_Normal_Mask_TilesPerMeter _ColorColor<00>white_NormalNormalwhite_MaskMaskwhite_TilesPerMeter TilesPerMeter<00>?
_DrawOrder
Draw OrderH<>HB_DecalMeshBiasTypeDecalMesh BiasType-Enum(Default, 0, Depth Bias, 0, View Bias, 1)_DecalMeshDepthBiasDecalMesh DepthBias_DecalMeshViewBiasDecalMesh ViewBiasunity_Lightmapsunity_Lightmapsunity_LightmapsIndunity_LightmapsIndunity_ShadowMasksunity_ShadowMasksDBufferProjector<00>@ <noninit> A <noninit> <noninit> A <noninit> <noninit> <noninit>pA <noninit><00>@ <noninit> A <noninit> <noninit> A <noninit> <noninit> <noninit>pA <noninit><00>@ <noninit> A <noninit> <noninit> A <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit><00>@ <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit>C <noninit>C <noninit> <noninit>unity_FogStart unity_FogEndunity_FogDensity <noninit> <noninit> <noninit> <noninit>unity_FogColor<00><><EFBFBD><EFBFBD>4<EFBFBD>DisableBatchingFalse LIGHTMODEDBufferProjector PreviewTypePlaneRenderPipelineUniversalPipelineShaderGraphShadertrueShaderGraphTargetIdUniversalDecalSubTarget 

DecalScreenSpaceProjector<00>@ <noninit> A <noninit><00>@ <noninit> A <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit><00>@ <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit>C <noninit>C <noninit> <noninit>unity_FogStart unity_FogEndunity_FogDensity <noninit> <noninit> <noninit> <noninit>unity_FogColor<00><><EFBFBD><EFBFBD>įDisableBatchingFalse LIGHTMODEDecalScreenSpaceProjector PreviewTypePlaneRenderPipelineUniversalPipelineShaderGraphShadertrueShaderGraphTargetIdUniversalDecalSubTarget

 DecalGBufferProjector<00>@ <noninit> A <noninit><00>@ <noninit> A <noninit> <noninit> <noninit>`A <noninit><00>@ <noninit> A <noninit><00>@ <noninit> A <noninit> <noninit> <noninit> <noninit><00>@ <noninit> A <noninit><00>@ <noninit> A <noninit> <noninit> <noninit>`A <noninit><00>@ <noninit> A <noninit><00>@ <noninit> A <noninit> <noninit> <noninit>`A <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit><00>@ <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit>C <noninit>C <noninit> <noninit>unity_FogStart unity_FogEndunity_FogDensity <noninit> <noninit> <noninit> <noninit>unity_FogColor<00><><EFBFBD><EFBFBD><EFBFBD>xDisableBatchingFalse LIGHTMODEDecalGBufferProjector PreviewTypePlaneRenderPipelineUniversalPipelineShaderGraphShadertrueShaderGraphTargetIdUniversalDecalSubTarget

!" DBufferMesh<00>@ <noninit> A <noninit> <noninit> A <noninit> <noninit> <noninit>pA <noninit><00>@ <noninit> A <noninit> <noninit> A <noninit> <noninit> <noninit>pA <noninit><00>@ <noninit> A <noninit> <noninit> A <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit><00>@ <noninit> <noninit>@ <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit>C <noninit>C <noninit> <noninit>unity_FogStart unity_FogEndunity_FogDensity <noninit> <noninit> <noninit> <noninit>unity_FogColor<00><><EFBFBD><EFBFBD>q<EFBFBD>DisableBatchingFalse LIGHTMODE DBufferMesh PreviewTypePlaneRenderPipelineUniversalPipelineShaderGraphShadertrueShaderGraphTargetIdUniversalDecalSubTarget 

DecalScreenSpaceMesh<00>@ <noninit> A <noninit><00>@ <noninit> A <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit><00>@ <noninit> <noninit>@ <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit>C <noninit>C <noninit> <noninit>unity_FogStart unity_FogEndunity_FogDensity <noninit> <noninit> <noninit> <noninit>unity_FogColor<00><><EFBFBD><EFBFBD>߁DisableBatchingFalse LIGHTMODEDecalScreenSpaceMesh PreviewTypePlaneRenderPipelineUniversalPipelineShaderGraphShadertrueShaderGraphTargetIdUniversalDecalSubTarget
#$%&'()*$
 #$%&'()*DecalGBufferMesh<00>@ <noninit> A <noninit><00>@ <noninit> A <noninit> <noninit> <noninit>`A <noninit><00>@ <noninit> A <noninit><00>@ <noninit> A <noninit> <noninit> <noninit> <noninit><00>@ <noninit> A <noninit><00>@ <noninit> A <noninit> <noninit> <noninit>`A <noninit><00>@ <noninit> A <noninit><00>@ <noninit> A <noninit> <noninit> <noninit>`A <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit><00>@ <noninit> <noninit>@ <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit>C <noninit>C <noninit> <noninit>unity_FogStart unity_FogEndunity_FogDensity <noninit> <noninit> <noninit> <noninit>unity_FogColor<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DisableBatchingFalse LIGHTMODEDecalGBufferMesh PreviewTypePlaneRenderPipelineUniversalPipelineShaderGraphShadertrueShaderGraphTargetIdUniversalDecalSubTarget
#$%&'()+!
!"#$%&'()+ScenePickingPass<00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit> <noninit><00>? <noninit> <noninit> <noninit> <noninit>pA <noninit><00>? <noninit><00>@ <noninit><00>? <noninit>@ <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit> <noninit> <noninit> <noninit>A <noninit>C <noninit>C <noninit> <noninit>unity_FogStart unity_FogEndunity_FogDensity <noninit> <noninit> <noninit> <noninit>unity_FogColor<00><><EFBFBD><EFBFBD>,oDisableBatchingFalse LIGHTMODEPicking PreviewTypePlaneRenderPipelineUniversalPipelineShaderGraphShadertrueShaderGraphTargetIdUniversalDecalSubTarget  DisableBatchingFalse PreviewTypePlaneRenderPipelineUniversalPipelineShaderGraphShadertrueShaderGraphTargetIdUniversalDecalSubTarget,STEREO_INSTANCING_ONUNITY_SINGLE_PASS_STEREOSTEREO_MULTIVIEW_ONSTEREO_CUBEMAP_RENDER_ON _DECAL_LAYERSDOTS_INSTANCING_ON&_FOVEATED_RENDERING_NON_UNIFORM_RASTERPROBE_VOLUMES_L1PROBE_VOLUMES_L2 INSTANCING_ON
FOG_LINEARFOG_EXPFOG_EXP2 _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3_MAIN_LIGHT_SHADOWS_MAIN_LIGHT_SHADOWS_CASCADE_MAIN_LIGHT_SHADOWS_SCREEN_ADDITIONAL_LIGHTS_VERTEX_ADDITIONAL_LIGHTS_CLUSTER_LIGHT_LOOP_DECAL_NORMAL_BLEND_LOW_DECAL_NORMAL_BLEND_MEDIUM_DECAL_NORMAL_BLEND_HIGH_SCREEN_SPACE_IRRADIANCE_ADDITIONAL_LIGHT_SHADOWS _SHADOWS_SOFT_SHADOWS_SOFT_LOW_SHADOWS_SOFT_MEDIUM_SHADOWS_SOFT_HIGH_LIGHT_COOKIES DEBUG_DISPLAY_GBUFFER_NORMALS_OCT_RENDER_PASS_ENABLED LIGHTMAP_ONDYNAMICLIGHTMAP_ONDIRLIGHTMAP_COMBINEDUSE_LEGACY_LIGHTMAPSLIGHTMAP_BICUBIC_SAMPLINGREFLECTION_PROBE_ROTATIONLIGHTMAP_SHADOW_MIXINGSHADOWS_SHADOWMASK_MIXED_LIGHTING_SUBTRACTIVE,$Hidden/Decal/1_Decal Material Volume5UnityEditor.ShaderGraph.GenericShaderGraphMaterialGUI!Hidden/Shader Graph/FallbackError3UnityEditor.Rendering.Universal.DecalShaderGraphGUI<UnityEngine.Rendering.Universal.UniversalRenderPipelineAsset_Color_Mask_Normalunity_Lightmapsunity_LightmapsIndunity_MipmapStreaming_DebugTexunity_ShadowMasks4<>M<>#if defined(SHADER_STAGE_VERTEX)
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
#if defined(SHADER_STAGE_FRAGMENT)
#define _DBUFFER_MRT1_KEYWORD_DECLARED 1
#define _DBUFFER_MRT2_KEYWORD_DECLARED 1
#define _DBUFFER_MRT3_KEYWORD_DECLARED 1
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
cbuffer UnityDynamicKeywords {
int _FOVEATED_RENDERING_NON_UNIFORM_RASTER;
};
#line 52 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
#define UNITY_INSTANCED_LOD_FADE
#define UNITY_INSTANCED_SH
#define UNITY_INSTANCED_LIGHTMAPSTS
#define UNITY_INSTANCED_RENDERER_BOUNDS
#line 52 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
/* UNITY: Original start of shader */
// Pragmas
#pragma target 4.5
#pragma exclude_renderers gles3 glcore
#pragma vertex Vert
#pragma fragment Frag
#pragma multi_compile_instancing
#pragma editor_sync_compilation
// Keywords
#pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3
#pragma multi_compile _ _DECAL_LAYERS
// GraphKeywords: <None>
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
// Defines
#define ATTRIBUTES_NEED_NORMAL
#define ATTRIBUTES_NEED_TANGENT
#define VARYINGS_NEED_POSITION_WS
#define VARYINGS_NEED_NORMAL_WS
#define VARYINGS_NEED_TANGENT_WS
#define HAVE_MESH_MODIFICATION
#define SHADERPASS SHADERPASS_DBUFFER_PROJECTOR
#define _MATERIAL_AFFECTS_ALBEDO 1
#define _MATERIAL_AFFECTS_NORMAL 1
#define _MATERIAL_AFFECTS_NORMAL_BLEND 1
#define _MATERIAL_AFFECTS_MAOS 1
// Includes
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"
// -- Properties used by ScenePickingPass
#ifdef SCENEPICKINGPASS
float4 _SelectionID;
#endif
#if _RENDER_PASS_ENABLED
#define GBUFFER3 0
FRAMEBUFFER_INPUT_X_FLOAT(GBUFFER3);
#define GBUFFER4 1
FRAMEBUFFER_INPUT_X_UINT(GBUFFER4);
#endif
// --------------------------------------------------
// Structs and Packing
struct Attributes
{
float3 positionOS : POSITION;
float3 normalOS : NORMAL;
float4 tangentOS : TANGENT;
#if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID)
uint instanceID : INSTANCEID_SEMANTIC;
#endif
};
struct Varyings
{
float4 positionCS : SV_POSITION;
float3 positionWS;
float3 normalWS;
float4 tangentWS;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
struct SurfaceDescriptionInputs
{
float3 WorldSpaceNormal;
float3 TangentSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 ObjectSpacePosition;
float3 AbsoluteWorldSpacePosition;
float2 NDCPosition;
float2 PixelPosition;
};
struct VertexDescriptionInputs
{
};
struct PackedVaryings
{
float4 positionCS : SV_POSITION;
float4 tangentWS : INTERP0;
float3 positionWS : INTERP1;
float3 normalWS : INTERP2;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
PackedVaryings PackVaryings (Varyings input)
{
PackedVaryings output;
ZERO_INITIALIZE(PackedVaryings, output);
output.positionCS = input.positionCS;
output.tangentWS.xyzw = input.tangentWS;
output.positionWS.xyz = input.positionWS;
output.normalWS.xyz = input.normalWS;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
Varyings UnpackVaryings (PackedVaryings input)
{
Varyings output;
output.positionCS = input.positionCS;
output.tangentWS = input.tangentWS.xyzw;
output.positionWS = input.positionWS.xyz;
output.normalWS = input.normalWS.xyz;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
// --------------------------------------------------
// Graph
// Graph Properties
CBUFFER_START(UnityPerMaterial)
float4 _Color_TexelSize;
float4 _Normal_TexelSize;
float4 _Mask_TexelSize;
float _TilesPerMeter;
float _DrawOrder;
float _DecalMeshBiasType;
float _DecalMeshDepthBias;
float _DecalMeshViewBias;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
CBUFFER_END
// Object and Global properties
SAMPLER(SamplerState_Linear_Repeat);
TEXTURE2D(_Color);
SAMPLER(sampler_Color);
TEXTURE2D(_Normal);
SAMPLER(sampler_Normal);
TEXTURE2D(_Mask);
SAMPLER(sampler_Mask);
// Graph Includes
#include_with_pragmas "Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline/GetSceneNormal.hlsl"
// Graph Functions
void Unity_Add_float3(float3 A, float3 B, out float3 Out)
{
Out = A + B;
}
void Unity_OneMinus_float3(float3 In, out float3 Out)
{
Out = 1 - In;
}
void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
{
Out = A * B;
}
void Unity_Multiply_float_float(float A, float B, out float Out)
{
Out = A * B;
}
void Unity_Saturate_float(float In, out float Out)
{
Out = saturate(In);
}
struct Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float
{
float3 ObjectSpacePosition;
};
void SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float _Sharpness, Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float IN, out float Mask_1)
{
float3 _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3;
Unity_Add_float3(IN.ObjectSpacePosition, float3(0.5, 0.5, 0.5), _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3);
float3 _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3;
Unity_OneMinus_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3);
float3 _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3;
Unity_Multiply_float3_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3, _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3);
float _Split_040f2669b21e47e0b7644de186562ac4_R_1_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[0];
float _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[1];
float _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[2];
float _Split_040f2669b21e47e0b7644de186562ac4_A_4_Float = 0;
float _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float;
Unity_Multiply_float_float(_Split_040f2669b21e47e0b7644de186562ac4_R_1_Float, _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float, _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float);
float _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float;
Unity_Multiply_float_float(_Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float, _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float);
float _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float;
Unity_Multiply_float_float(_Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float);
float _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float = _Sharpness;
float _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float;
Unity_Multiply_float_float(_Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float, _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float, _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float);
float _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
Unity_Saturate_float(_Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float, _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float);
Mask_1 = _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
}
void Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDY' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddy(In);
}
void Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDX' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddx(In);
}
void Unity_CrossProduct_float(float3 A, float3 B, out float3 Out)
{
Out = cross(A, B);
}
void Unity_Normalize_float3(float3 In, out float3 Out)
{
Out = normalize(In);
}
struct Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float
{
float3 WorldSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 AbsoluteWorldSpacePosition;
};
void SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(int _Space, Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float IN, out float3 Out_1)
{
float3 _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3;
Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(IN.AbsoluteWorldSpacePosition, _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3);
float3 _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3;
Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(IN.AbsoluteWorldSpacePosition, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3);
float3 _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
Unity_CrossProduct_float(_DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3, _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3);
float3 _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
_Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3 = TransformWorldToObjectNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
_Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3 = TransformWorldToViewNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3 = TransformWorldToTangent(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, tangentTransform, false);
}
float3 _Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3;
if (_Space == 0)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
else if (_Space == 1)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
}
else if (_Space == 2)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
}
else if (_Space == 3)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
}
else
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
float3 _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
Unity_Normalize_float3(_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3, _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3);
Out_1 = _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
}
// unity-custom-func-begin
void SwitchOnSRP_float(float3 URP, float3 HDRP, out float3 Out){
#if defined(UNIVERSAL_PIPELINE_CORE_INCLUDED)
Out = URP;
#else
Out = HDRP;
#endif
}
// unity-custom-func-end
// Graph Vertex
struct VertexDescription
{
};
VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
{
VertexDescription description = (VertexDescription)0;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float Alpha;
float3 NormalTS;
float NormalAlpha;
float Metallic;
float Occlusion;
float Smoothness;
float MAOSAlpha;
};
SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
{
SurfaceDescription surface = (SurfaceDescription)0;
UnityTexture2D _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Color);
float4 _ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4 = float4(IN.NDCPosition.xy, 0, 0);
float3 _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3;
GetSceneNormal_float((_ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4.xy), _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3);
float _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float = _TilesPerMeter;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_68493394e5a142309b873d6cd7c2747b_Blend /= dot(Triplanar_68493394e5a142309b873d6cd7c2747b_Blend, 1.0);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_X = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.zy);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Y = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xz);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Z = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xy);
float4 _Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4 = Triplanar_68493394e5a142309b873d6cd7c2747b_X * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.x + Triplanar_68493394e5a142309b873d6cd7c2747b_Y * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.y + Triplanar_68493394e5a142309b873d6cd7c2747b_Z * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.z;
Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14;
_DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14.ObjectSpacePosition = IN.ObjectSpacePosition;
float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float(500000), _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14, _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float);
UnityTexture2D _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Normal);
Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float _FaceNormal_9e1486c25af1475e95e303471cd85801;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceNormal = IN.WorldSpaceNormal;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceTangent = IN.WorldSpaceTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
float3 _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3;
SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(2, _FaceNormal_9e1486c25af1475e95e303471cd85801, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3);
float3 _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3;
SwitchOnSRP_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3, _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3);
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend = SafePositivePow_float(_SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend /= (Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z ).xxx;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_X = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.zy));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xz));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xy));
Triplanar_f7cd4cce612a452abe14bc0016c02901_X = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.zy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.x);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xz, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.y);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.z);
float4 _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4 = float4(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.zyx * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xzy * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xyz * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z, 1);
{
// Converting Normal from AbsoluteWorld to Tangent via world space
float3 world;
world = _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb = TransformWorldToTangent(world, tangentTransform, true);
}
}
UnityTexture2D _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Mask);
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend /= dot(Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend, 1.0);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.zy);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xz);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xy);
float4 _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4 = Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.x + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.y + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.z;
float _Split_69497f2d37a849768fdedd210c547a22_R_1_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[0];
float _Split_69497f2d37a849768fdedd210c547a22_G_2_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[1];
float _Split_69497f2d37a849768fdedd210c547a22_B_3_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[2];
float _Split_69497f2d37a849768fdedd210c547a22_A_4_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[3];
surface.BaseColor = (_Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4.xyz);
surface.Alpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.NormalTS = (_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.xyz);
surface.NormalAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.Metallic = _Split_69497f2d37a849768fdedd210c547a22_R_1_Float;
surface.Occlusion = _Split_69497f2d37a849768fdedd210c547a22_G_2_Float;
surface.Smoothness = _Split_69497f2d37a849768fdedd210c547a22_A_4_Float;
surface.MAOSAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
return surface;
}
// --------------------------------------------------
// Build Graph Inputs
// $features.graphVertex: $include("VertexAnimation.template.hlsl")
// ^ ERROR: $include cannot find file : VertexAnimation.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
// $features.graphPixel: $include("SharedCode.template.hlsl")
// ^ ERROR: $include cannot find file : SharedCode.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
{
SurfaceDescriptionInputs output;
ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
/* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
// must use interpolated tangent, bitangent and normal before they are normalized in the pixel shader.
float3 unnormalizedNormalWS = input.normalWS;
const float renormFactor = 1.0 / length(unnormalizedNormalWS);
// use bitangent on the fly like in hdrp
// IMPORTANT! If we ever support Flip on double sided materials ensure bitangent and tangent are NOT flipped.
float crossSign = (input.tangentWS.w > 0.0 ? 1.0 : -1.0) * GetOddNegativeScale();
float3 bitang = crossSign * cross(input.normalWS.xyz, input.tangentWS.xyz);
output.WorldSpaceNormal = renormFactor*input.normalWS.xyz; // we want a unit length Normal Vector node in shader graph
output.TangentSpaceNormal = float3(0.0f, 0.0f, 1.0f);
// to preserve mikktspace compliance we use same scale renormFactor as was used on the normal.
// This is explained in section 2.2 in "surface gradient based bump mapping framework"
output.WorldSpaceTangent = renormFactor*input.tangentWS.xyz;
output.WorldSpaceBiTangent = renormFactor*bitang;
output.ObjectSpacePosition = TransformWorldToObject(input.positionWS);
output.AbsoluteWorldSpacePosition = GetAbsolutePositionWS(input.positionWS);
#if UNITY_UV_STARTS_AT_TOP
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x < 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#else
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x > 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#endif
output.NDCPosition = output.PixelPosition.xy / _ScreenParams.xy;
output.NDCPosition.y = 1.0f - output.NDCPosition.y;
#if defined(UNITY_UIE_INCLUDED)
#else
#endif
#if UNITY_ANY_INSTANCING_ENABLED
#else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect.
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign = IS_FRONT_VFACE(input.cullFace, true, false);
#else
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
#endif
#undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
return output;
}
// --------------------------------------------------
// Build Surface Data
void GetSurfaceData(Varyings input, float4 positionCS, float angleFadeFactor, out DecalSurfaceData surfaceData)
{
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_FORWARD_EMISSIVE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
half4x4 normalToWorld = UNITY_ACCESS_INSTANCED_PROP(Decal, _NormalToWorld);
half fadeFactor = clamp(normalToWorld[0][3], 0.0f, 1.0f) * angleFadeFactor;
float2 scale = float2(normalToWorld[3][0], normalToWorld[3][1]);
float2 offset = float2(normalToWorld[3][2], normalToWorld[3][3]);
half3 normalWS = TransformObjectToWorldDir(half3(0, 1, 0));
half3 tangentWS = TransformObjectToWorldDir(half3(1, 0, 0));
half3 bitangentWS = TransformObjectToWorldDir(half3(0, 0, 1));
half sign = dot(cross(normalWS, tangentWS), bitangentWS) > 0 ? 1 : -1;
input.normalWS.xyz = normalWS;
input.tangentWS.xyzw = half4(tangentWS, sign);
#else
#if defined(LOD_FADE_CROSSFADE) && USE_UNITY_CROSSFADE
LODFadeCrossFade(positionCS);
#endif
half fadeFactor = half(1.0);
#endif
SurfaceDescriptionInputs surfaceDescriptionInputs = BuildSurfaceDescriptionInputs(input);
SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
// setup defaults -- these are used if the graph doesn't output a value
ZERO_INITIALIZE(DecalSurfaceData, surfaceData);
surfaceData.occlusion = half(1.0);
surfaceData.smoothness = half(0);
#ifdef _MATERIAL_AFFECTS_NORMAL
surfaceData.normalWS.w = half(1.0);
#else
surfaceData.normalWS.w = half(0.0);
#endif
// copy across graph values, if defined
surfaceData.baseColor.xyz = half3(surfaceDescription.BaseColor);
surfaceData.baseColor.w = half(surfaceDescription.Alpha * fadeFactor);
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
#if defined(_MATERIAL_AFFECTS_NORMAL)
surfaceData.normalWS.xyz = normalize(mul((half3x3)normalToWorld, surfaceDescription.NormalTS.xyz));
#else
surfaceData.normalWS.xyz = normalize(normalToWorld[2].xyz);
#endif
#elif (SHADERPASS == SHADERPASS_DBUFFER_MESH) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_MESH) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_MESH)
#if defined(_MATERIAL_AFFECTS_NORMAL)
float sgn = input.tangentWS.w; // should be either +1 or -1
float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz);
half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz);
// We need to normalize as we use mikkt tangent space and this is expected (tangent space is not normalize)
surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld));
#else
surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); // Default to vertex normal
#endif
#endif
surfaceData.normalWS.w = surfaceDescription.NormalAlpha * fadeFactor;
// In case of Smoothness / AO / Metal, all the three are always computed but color mask can change
surfaceData.metallic = half(surfaceDescription.Metallic);
surfaceData.occlusion = half(surfaceDescription.Occlusion);
surfaceData.smoothness = half(surfaceDescription.Smoothness);
surfaceData.MAOSAlpha = half(surfaceDescription.MAOSAlpha * fadeFactor);
}
// --------------------------------------------------
// Main
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl"
<Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline#1_Decal Material Volume.shadergraph<00>}<7D><>6<01>L<EFBFBD><4C>і<EFBFBD><02><>n<7F><6E>@_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2_ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2&_FOVEATED_RENDERING_NON_UNIFORM_RASTER<00><> DOTS_INSTANCING_ON<00><> SHADOWS_SOFT<46>DIRLIGHTMAP_COMBINED<45>DYNAMICLIGHTMAP_ON<00>SHADOWS_SCREEN<00> INSTANCING_ONPROCEDURAL_INSTANCING_ON@STEREO_MULTIVIEW_ON<00>STEREO_INSTANCING_ON<4F>"UNITY_DEVICE_SUPPORTS_NATIVE_16BIT (UNITY_DEVICE_SUPPORTS_INLINE_RAY_TRACING<00>_DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 _DECAL_LAYERS DOTS_INSTANCING_ON _FOVEATED_RENDERING_NON_UNIFORM_RASTER PROBE_VOLUMES_L1 PROBE_VOLUMES_L2 INSTANCING_ON FOG_LINEAR FOG_EXP FOG_EXP2į0<>#if defined(SHADER_STAGE_VERTEX)
#define _MAIN_LIGHT_SHADOWS_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_CASCADE_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_SCREEN_KEYWORD_DECLARED 1
#define _ADDITIONAL_LIGHTS_VERTEX_KEYWORD_DECLARED 1
#define _ADDITIONAL_LIGHTS_KEYWORD_DECLARED 1
#define _CLUSTER_LIGHT_LOOP_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_LOW_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_MEDIUM_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_HIGH_KEYWORD_DECLARED 1
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
#if defined(SHADER_STAGE_FRAGMENT)
#define _SCREEN_SPACE_IRRADIANCE_KEYWORD_DECLARED 1
#define _ADDITIONAL_LIGHT_SHADOWS_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_LOW_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_MEDIUM_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_HIGH_KEYWORD_DECLARED 1
#define _LIGHT_COOKIES_KEYWORD_DECLARED 1
#define DEBUG_DISPLAY_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_CASCADE_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_SCREEN_KEYWORD_DECLARED 1
#define _ADDITIONAL_LIGHTS_VERTEX_KEYWORD_DECLARED 1
#define _ADDITIONAL_LIGHTS_KEYWORD_DECLARED 1
#define _CLUSTER_LIGHT_LOOP_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_LOW_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_MEDIUM_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_HIGH_KEYWORD_DECLARED 1
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
cbuffer UnityDynamicKeywords {
int _FOVEATED_RENDERING_NON_UNIFORM_RASTER;
};
#line 668 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
#define UNITY_INSTANCED_LOD_FADE
#define UNITY_INSTANCED_SH
#define UNITY_INSTANCED_LIGHTMAPSTS
#define UNITY_INSTANCED_RENDERER_BOUNDS
#line 668 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
/* UNITY: Original start of shader */
// Pragmas
#pragma target 2.5
#pragma vertex Vert
#pragma fragment Frag
#pragma multi_compile_instancing
#pragma editor_sync_compilation
// Keywords
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
#pragma multi_compile_fragment _ _SCREEN_SPACE_IRRADIANCE
#pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
#pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS
#pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
#pragma multi_compile _ _CLUSTER_LIGHT_LOOP
#pragma multi_compile_fragment _ _LIGHT_COOKIES
#pragma multi_compile_fragment _ DEBUG_DISPLAY
#pragma multi_compile _DECAL_NORMAL_BLEND_LOW _DECAL_NORMAL_BLEND_MEDIUM _DECAL_NORMAL_BLEND_HIGH
#pragma multi_compile _ _DECAL_LAYERS
// GraphKeywords: <None>
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
// Defines
#define ATTRIBUTES_NEED_NORMAL
#define ATTRIBUTES_NEED_TANGENT
#define VARYINGS_NEED_POSITION_WS
#define VARYINGS_NEED_NORMAL_WS
#define VARYINGS_NEED_TANGENT_WS
#define VARYINGS_NEED_FOG_AND_VERTEX_LIGHT
#define VARYINGS_NEED_SH
#define VARYINGS_NEED_STATIC_LIGHTMAP_UV
#define VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV
#define VARYINGS_NEED_SHADOW_COORD
#define HAVE_MESH_MODIFICATION
#define SHADERPASS SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR
#define _MATERIAL_AFFECTS_ALBEDO 1
#define _MATERIAL_AFFECTS_NORMAL 1
#define _MATERIAL_AFFECTS_NORMAL_BLEND 1
#define _MATERIAL_AFFECTS_MAOS 1
// Includes
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl"
// -- Properties used by ScenePickingPass
#ifdef SCENEPICKINGPASS
float4 _SelectionID;
#endif
#if _RENDER_PASS_ENABLED
#define GBUFFER3 0
FRAMEBUFFER_INPUT_X_FLOAT(GBUFFER3);
#define GBUFFER4 1
FRAMEBUFFER_INPUT_X_UINT(GBUFFER4);
#endif
// --------------------------------------------------
// Structs and Packing
struct Attributes
{
float3 positionOS : POSITION;
float3 normalOS : NORMAL;
float4 tangentOS : TANGENT;
#if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID)
uint instanceID : INSTANCEID_SEMANTIC;
#endif
};
struct Varyings
{
float4 positionCS : SV_POSITION;
float3 positionWS;
float3 normalWS;
float4 tangentWS;
#if defined(LIGHTMAP_ON)
float2 staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
float2 dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
float3 sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
float4 probeOcclusion;
#endif
float4 fogFactorAndVertexLight;
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
float4 shadowCoord;
#endif
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
struct SurfaceDescriptionInputs
{
float3 WorldSpaceNormal;
float3 TangentSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 ObjectSpacePosition;
float3 AbsoluteWorldSpacePosition;
float2 NDCPosition;
float2 PixelPosition;
};
struct VertexDescriptionInputs
{
};
struct PackedVaryings
{
float4 positionCS : SV_POSITION;
#if defined(LIGHTMAP_ON)
float2 staticLightmapUV : INTERP0;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
float2 dynamicLightmapUV : INTERP1;
#endif
#if !defined(LIGHTMAP_ON)
float3 sh : INTERP2;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
float4 probeOcclusion : INTERP3;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
float4 shadowCoord : INTERP4;
#endif
float4 tangentWS : INTERP5;
float4 fogFactorAndVertexLight : INTERP6;
float3 positionWS : INTERP7;
float3 normalWS : INTERP8;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
PackedVaryings PackVaryings (Varyings input)
{
PackedVaryings output;
ZERO_INITIALIZE(PackedVaryings, output);
output.positionCS = input.positionCS;
#if defined(LIGHTMAP_ON)
output.staticLightmapUV = input.staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
output.dynamicLightmapUV = input.dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
output.sh = input.sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
output.probeOcclusion = input.probeOcclusion;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
output.shadowCoord = input.shadowCoord;
#endif
output.tangentWS.xyzw = input.tangentWS;
output.fogFactorAndVertexLight.xyzw = input.fogFactorAndVertexLight;
output.positionWS.xyz = input.positionWS;
output.normalWS.xyz = input.normalWS;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
Varyings UnpackVaryings (PackedVaryings input)
{
Varyings output;
output.positionCS = input.positionCS;
#if defined(LIGHTMAP_ON)
output.staticLightmapUV = input.staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
output.dynamicLightmapUV = input.dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
output.sh = input.sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
output.probeOcclusion = input.probeOcclusion;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
output.shadowCoord = input.shadowCoord;
#endif
output.tangentWS = input.tangentWS.xyzw;
output.fogFactorAndVertexLight = input.fogFactorAndVertexLight.xyzw;
output.positionWS = input.positionWS.xyz;
output.normalWS = input.normalWS.xyz;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
// --------------------------------------------------
// Graph
// Graph Properties
CBUFFER_START(UnityPerMaterial)
float4 _Color_TexelSize;
float4 _Normal_TexelSize;
float4 _Mask_TexelSize;
float _TilesPerMeter;
float _DrawOrder;
float _DecalMeshBiasType;
float _DecalMeshDepthBias;
float _DecalMeshViewBias;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
CBUFFER_END
// Object and Global properties
SAMPLER(SamplerState_Linear_Repeat);
TEXTURE2D(_Color);
SAMPLER(sampler_Color);
TEXTURE2D(_Normal);
SAMPLER(sampler_Normal);
TEXTURE2D(_Mask);
SAMPLER(sampler_Mask);
// Graph Includes
#include_with_pragmas "Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline/GetSceneNormal.hlsl"
// Graph Functions
void Unity_Add_float3(float3 A, float3 B, out float3 Out)
{
Out = A + B;
}
void Unity_OneMinus_float3(float3 In, out float3 Out)
{
Out = 1 - In;
}
void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
{
Out = A * B;
}
void Unity_Multiply_float_float(float A, float B, out float Out)
{
Out = A * B;
}
void Unity_Saturate_float(float In, out float Out)
{
Out = saturate(In);
}
struct Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float
{
float3 ObjectSpacePosition;
};
void SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float _Sharpness, Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float IN, out float Mask_1)
{
float3 _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3;
Unity_Add_float3(IN.ObjectSpacePosition, float3(0.5, 0.5, 0.5), _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3);
float3 _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3;
Unity_OneMinus_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3);
float3 _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3;
Unity_Multiply_float3_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3, _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3);
float _Split_040f2669b21e47e0b7644de186562ac4_R_1_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[0];
float _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[1];
float _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[2];
float _Split_040f2669b21e47e0b7644de186562ac4_A_4_Float = 0;
float _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float;
Unity_Multiply_float_float(_Split_040f2669b21e47e0b7644de186562ac4_R_1_Float, _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float, _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float);
float _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float;
Unity_Multiply_float_float(_Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float, _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float);
float _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float;
Unity_Multiply_float_float(_Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float);
float _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float = _Sharpness;
float _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float;
Unity_Multiply_float_float(_Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float, _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float, _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float);
float _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
Unity_Saturate_float(_Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float, _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float);
Mask_1 = _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
}
void Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDY' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddy(In);
}
void Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDX' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddx(In);
}
void Unity_CrossProduct_float(float3 A, float3 B, out float3 Out)
{
Out = cross(A, B);
}
void Unity_Normalize_float3(float3 In, out float3 Out)
{
Out = normalize(In);
}
struct Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float
{
float3 WorldSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 AbsoluteWorldSpacePosition;
};
void SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(int _Space, Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float IN, out float3 Out_1)
{
float3 _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3;
Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(IN.AbsoluteWorldSpacePosition, _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3);
float3 _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3;
Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(IN.AbsoluteWorldSpacePosition, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3);
float3 _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
Unity_CrossProduct_float(_DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3, _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3);
float3 _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
_Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3 = TransformWorldToObjectNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
_Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3 = TransformWorldToViewNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3 = TransformWorldToTangent(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, tangentTransform, false);
}
float3 _Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3;
if (_Space == 0)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
else if (_Space == 1)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
}
else if (_Space == 2)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
}
else if (_Space == 3)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
}
else
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
float3 _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
Unity_Normalize_float3(_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3, _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3);
Out_1 = _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
}
// unity-custom-func-begin
void SwitchOnSRP_float(float3 URP, float3 HDRP, out float3 Out){
#if defined(UNIVERSAL_PIPELINE_CORE_INCLUDED)
Out = URP;
#else
Out = HDRP;
#endif
}
// unity-custom-func-end
// Graph Vertex
struct VertexDescription
{
};
VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
{
VertexDescription description = (VertexDescription)0;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float Alpha;
float3 NormalTS;
float NormalAlpha;
float Metallic;
float Occlusion;
float Smoothness;
float MAOSAlpha;
};
SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
{
SurfaceDescription surface = (SurfaceDescription)0;
UnityTexture2D _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Color);
float4 _ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4 = float4(IN.NDCPosition.xy, 0, 0);
float3 _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3;
GetSceneNormal_float((_ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4.xy), _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3);
float _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float = _TilesPerMeter;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_68493394e5a142309b873d6cd7c2747b_Blend /= dot(Triplanar_68493394e5a142309b873d6cd7c2747b_Blend, 1.0);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_X = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.zy);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Y = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xz);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Z = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xy);
float4 _Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4 = Triplanar_68493394e5a142309b873d6cd7c2747b_X * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.x + Triplanar_68493394e5a142309b873d6cd7c2747b_Y * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.y + Triplanar_68493394e5a142309b873d6cd7c2747b_Z * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.z;
Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14;
_DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14.ObjectSpacePosition = IN.ObjectSpacePosition;
float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float(500000), _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14, _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float);
UnityTexture2D _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Normal);
Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float _FaceNormal_9e1486c25af1475e95e303471cd85801;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceNormal = IN.WorldSpaceNormal;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceTangent = IN.WorldSpaceTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
float3 _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3;
SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(2, _FaceNormal_9e1486c25af1475e95e303471cd85801, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3);
float3 _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3;
SwitchOnSRP_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3, _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3);
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend = SafePositivePow_float(_SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend /= (Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z ).xxx;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_X = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.zy));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xz));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xy));
Triplanar_f7cd4cce612a452abe14bc0016c02901_X = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.zy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.x);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xz, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.y);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.z);
float4 _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4 = float4(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.zyx * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xzy * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xyz * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z, 1);
{
// Converting Normal from AbsoluteWorld to Tangent via world space
float3 world;
world = _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb = TransformWorldToTangent(world, tangentTransform, true);
}
}
UnityTexture2D _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Mask);
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend /= dot(Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend, 1.0);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.zy);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xz);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xy);
float4 _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4 = Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.x + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.y + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.z;
float _Split_69497f2d37a849768fdedd210c547a22_R_1_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[0];
float _Split_69497f2d37a849768fdedd210c547a22_G_2_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[1];
float _Split_69497f2d37a849768fdedd210c547a22_B_3_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[2];
float _Split_69497f2d37a849768fdedd210c547a22_A_4_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[3];
surface.BaseColor = (_Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4.xyz);
surface.Alpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.NormalTS = (_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.xyz);
surface.NormalAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.Metallic = _Split_69497f2d37a849768fdedd210c547a22_R_1_Float;
surface.Occlusion = _Split_69497f2d37a849768fdedd210c547a22_G_2_Float;
surface.Smoothness = _Split_69497f2d37a849768fdedd210c547a22_A_4_Float;
surface.MAOSAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
return surface;
}
// --------------------------------------------------
// Build Graph Inputs
// $features.graphVertex: $include("VertexAnimation.template.hlsl")
// ^ ERROR: $include cannot find file : VertexAnimation.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
// $features.graphPixel: $include("SharedCode.template.hlsl")
// ^ ERROR: $include cannot find file : SharedCode.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
{
SurfaceDescriptionInputs output;
ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
/* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
// must use interpolated tangent, bitangent and normal before they are normalized in the pixel shader.
float3 unnormalizedNormalWS = input.normalWS;
const float renormFactor = 1.0 / length(unnormalizedNormalWS);
// use bitangent on the fly like in hdrp
// IMPORTANT! If we ever support Flip on double sided materials ensure bitangent and tangent are NOT flipped.
float crossSign = (input.tangentWS.w > 0.0 ? 1.0 : -1.0) * GetOddNegativeScale();
float3 bitang = crossSign * cross(input.normalWS.xyz, input.tangentWS.xyz);
output.WorldSpaceNormal = renormFactor*input.normalWS.xyz; // we want a unit length Normal Vector node in shader graph
output.TangentSpaceNormal = float3(0.0f, 0.0f, 1.0f);
// to preserve mikktspace compliance we use same scale renormFactor as was used on the normal.
// This is explained in section 2.2 in "surface gradient based bump mapping framework"
output.WorldSpaceTangent = renormFactor*input.tangentWS.xyz;
output.WorldSpaceBiTangent = renormFactor*bitang;
output.ObjectSpacePosition = TransformWorldToObject(input.positionWS);
output.AbsoluteWorldSpacePosition = GetAbsolutePositionWS(input.positionWS);
#if UNITY_UV_STARTS_AT_TOP
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x < 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#else
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x > 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#endif
output.NDCPosition = output.PixelPosition.xy / _ScreenParams.xy;
output.NDCPosition.y = 1.0f - output.NDCPosition.y;
#if defined(UNITY_UIE_INCLUDED)
#else
#endif
#if UNITY_ANY_INSTANCING_ENABLED
#else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect.
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign = IS_FRONT_VFACE(input.cullFace, true, false);
#else
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
#endif
#undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
return output;
}
// --------------------------------------------------
// Build Surface Data
void GetSurfaceData(Varyings input, float4 positionCS, float angleFadeFactor, out DecalSurfaceData surfaceData)
{
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_FORWARD_EMISSIVE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
half4x4 normalToWorld = UNITY_ACCESS_INSTANCED_PROP(Decal, _NormalToWorld);
half fadeFactor = clamp(normalToWorld[0][3], 0.0f, 1.0f) * angleFadeFactor;
float2 scale = float2(normalToWorld[3][0], normalToWorld[3][1]);
float2 offset = float2(normalToWorld[3][2], normalToWorld[3][3]);
half3 normalWS = TransformObjectToWorldDir(half3(0, 1, 0));
half3 tangentWS = TransformObjectToWorldDir(half3(1, 0, 0));
half3 bitangentWS = TransformObjectToWorldDir(half3(0, 0, 1));
half sign = dot(cross(normalWS, tangentWS), bitangentWS) > 0 ? 1 : -1;
input.normalWS.xyz = normalWS;
input.tangentWS.xyzw = half4(tangentWS, sign);
#else
#if defined(LOD_FADE_CROSSFADE) && USE_UNITY_CROSSFADE
LODFadeCrossFade(positionCS);
#endif
half fadeFactor = half(1.0);
#endif
SurfaceDescriptionInputs surfaceDescriptionInputs = BuildSurfaceDescriptionInputs(input);
SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
// setup defaults -- these are used if the graph doesn't output a value
ZERO_INITIALIZE(DecalSurfaceData, surfaceData);
surfaceData.occlusion = half(1.0);
surfaceData.smoothness = half(0);
#ifdef _MATERIAL_AFFECTS_NORMAL
surfaceData.normalWS.w = half(1.0);
#else
surfaceData.normalWS.w = half(0.0);
#endif
// copy across graph values, if defined
surfaceData.baseColor.xyz = half3(surfaceDescription.BaseColor);
surfaceData.baseColor.w = half(surfaceDescription.Alpha * fadeFactor);
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
#if defined(_MATERIAL_AFFECTS_NORMAL)
surfaceData.normalWS.xyz = normalize(mul((half3x3)normalToWorld, surfaceDescription.NormalTS.xyz));
#else
surfaceData.normalWS.xyz = normalize(normalToWorld[2].xyz);
#endif
#elif (SHADERPASS == SHADERPASS_DBUFFER_MESH) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_MESH) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_MESH)
#if defined(_MATERIAL_AFFECTS_NORMAL)
float sgn = input.tangentWS.w; // should be either +1 or -1
float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz);
half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz);
// We need to normalize as we use mikkt tangent space and this is expected (tangent space is not normalize)
surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld));
#else
surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); // Default to vertex normal
#endif
#endif
surfaceData.normalWS.w = surfaceDescription.NormalAlpha * fadeFactor;
// In case of Smoothness / AO / Metal, all the three are always computed but color mask can change
surfaceData.metallic = half(surfaceDescription.Metallic);
surfaceData.occlusion = half(surfaceDescription.Occlusion);
surfaceData.smoothness = half(surfaceDescription.Smoothness);
surfaceData.MAOSAlpha = half(surfaceDescription.MAOSAlpha * fadeFactor);
}
// --------------------------------------------------
// Main
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl"
<Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline#1_Decal Material Volume.shadergraph<00><><EFBFBD><EFBFBD><00><00>O\<5C>\1Tq+<2B><><>@
__MAIN_LIGHT_SHADOWS_MAIN_LIGHT_SHADOWS_CASCADE_MAIN_LIGHT_SHADOWS_SCREEN__ADDITIONAL_LIGHTS_VERTEX_ADDITIONAL_LIGHTS__CLUSTER_LIGHT_LOOP_DECAL_NORMAL_BLEND_LOW_DECAL_NORMAL_BLEND_MEDIUM_DECAL_NORMAL_BLEND_HIGH_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2__SCREEN_SPACE_IRRADIANCE__ADDITIONAL_LIGHT_SHADOWS_ _SHADOWS_SOFT_SHADOWS_SOFT_LOW_SHADOWS_SOFT_MEDIUM_SHADOWS_SOFT_HIGH__LIGHT_COOKIES_ DEBUG_DISPLAY__MAIN_LIGHT_SHADOWS_MAIN_LIGHT_SHADOWS_CASCADE_MAIN_LIGHT_SHADOWS_SCREEN__ADDITIONAL_LIGHTS_VERTEX_ADDITIONAL_LIGHTS__CLUSTER_LIGHT_LOOP_DECAL_NORMAL_BLEND_LOW_DECAL_NORMAL_BLEND_MEDIUM_DECAL_NORMAL_BLEND_HIGH_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2&_FOVEATED_RENDERING_NON_UNIFORM_RASTER! DOTS_INSTANCING_ON<00><> SHADOWS_SOFT<46>DIRLIGHTMAP_COMBINED<45>DYNAMICLIGHTMAP_ON<00>SHADOWS_SCREEN<00> INSTANCING_ONPROCEDURAL_INSTANCING_ON@STEREO_MULTIVIEW_ON<00>STEREO_INSTANCING_ON<4F>"UNITY_DEVICE_SUPPORTS_NATIVE_16BIT (UNITY_DEVICE_SUPPORTS_INLINE_RAY_TRACING_SCREEN_SPACE_IRRADIANCE _ADDITIONAL_LIGHT_SHADOWS _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH _LIGHT_COOKIES DEBUG_DISPLAY _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS _CLUSTER_LIGHT_LOOP _DECAL_NORMAL_BLEND_LOW _DECAL_NORMAL_BLEND_MEDIUM _DECAL_NORMAL_BLEND_HIGH _DECAL_LAYERS DOTS_INSTANCING_ON _FOVEATED_RENDERING_NON_UNIFORM_RASTER PROBE_VOLUMES_L1 PROBE_VOLUMES_L2 INSTANCING_ON FOG_LINEAR FOG_EXP FOG_EXP2<00>xP<>#if defined(SHADER_STAGE_VERTEX)
#define _MAIN_LIGHT_SHADOWS_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_CASCADE_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_SCREEN_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_LOW_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_MEDIUM_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_HIGH_KEYWORD_DECLARED 1
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
#if defined(SHADER_STAGE_FRAGMENT)
#define _SHADOWS_SOFT_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_LOW_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_MEDIUM_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_HIGH_KEYWORD_DECLARED 1
#define _GBUFFER_NORMALS_OCT_KEYWORD_DECLARED 1
#define _RENDER_PASS_ENABLED_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_CASCADE_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_SCREEN_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_LOW_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_MEDIUM_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_HIGH_KEYWORD_DECLARED 1
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
cbuffer UnityDynamicKeywords {
int _FOVEATED_RENDERING_NON_UNIFORM_RASTER;
};
#line 1366 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
#define UNITY_INSTANCED_LOD_FADE
#define UNITY_INSTANCED_SH
#define UNITY_INSTANCED_LIGHTMAPSTS
#define UNITY_INSTANCED_RENDERER_BOUNDS
#line 1366 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
/* UNITY: Original start of shader */
// Pragmas
#pragma target 4.5
#pragma exclude_renderers gles3 glcore
#pragma vertex Vert
#pragma fragment Frag
#pragma multi_compile_instancing
#pragma editor_sync_compilation
// Keywords
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
#pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
#pragma multi_compile _DECAL_NORMAL_BLEND_LOW _DECAL_NORMAL_BLEND_MEDIUM _DECAL_NORMAL_BLEND_HIGH
#pragma multi_compile _ _DECAL_LAYERS
#pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
#pragma multi_compile_fragment _ _RENDER_PASS_ENABLED
// GraphKeywords: <None>
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
// Defines
#define ATTRIBUTES_NEED_NORMAL
#define ATTRIBUTES_NEED_TANGENT
#define VARYINGS_NEED_POSITION_WS
#define VARYINGS_NEED_NORMAL_WS
#define VARYINGS_NEED_TANGENT_WS
#define VARYINGS_NEED_SH
#define VARYINGS_NEED_STATIC_LIGHTMAP_UV
#define VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV
#define VARYINGS_NEED_SHADOW_COORD
#define HAVE_MESH_MODIFICATION
#define SHADERPASS SHADERPASS_DECAL_GBUFFER_PROJECTOR
#define _MATERIAL_AFFECTS_ALBEDO 1
#define _MATERIAL_AFFECTS_NORMAL 1
#define _MATERIAL_AFFECTS_NORMAL_BLEND 1
#define _MATERIAL_AFFECTS_MAOS 1
// Includes
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/GBufferOutput.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl"
// -- Properties used by ScenePickingPass
#ifdef SCENEPICKINGPASS
float4 _SelectionID;
#endif
#if _RENDER_PASS_ENABLED
#define GBUFFER3 0
FRAMEBUFFER_INPUT_X_FLOAT(GBUFFER3);
#define GBUFFER4 1
FRAMEBUFFER_INPUT_X_UINT(GBUFFER4);
#endif
// --------------------------------------------------
// Structs and Packing
struct Attributes
{
float3 positionOS : POSITION;
float3 normalOS : NORMAL;
float4 tangentOS : TANGENT;
#if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID)
uint instanceID : INSTANCEID_SEMANTIC;
#endif
};
struct Varyings
{
float4 positionCS : SV_POSITION;
float3 positionWS;
float3 normalWS;
float4 tangentWS;
#if defined(LIGHTMAP_ON)
float2 staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
float2 dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
float3 sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
float4 probeOcclusion;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
float4 shadowCoord;
#endif
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
struct SurfaceDescriptionInputs
{
float3 WorldSpaceNormal;
float3 TangentSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 ObjectSpacePosition;
float3 AbsoluteWorldSpacePosition;
float2 NDCPosition;
float2 PixelPosition;
};
struct VertexDescriptionInputs
{
};
struct PackedVaryings
{
float4 positionCS : SV_POSITION;
#if defined(LIGHTMAP_ON)
float2 staticLightmapUV : INTERP0;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
float2 dynamicLightmapUV : INTERP1;
#endif
#if !defined(LIGHTMAP_ON)
float3 sh : INTERP2;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
float4 probeOcclusion : INTERP3;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
float4 shadowCoord : INTERP4;
#endif
float4 tangentWS : INTERP5;
float3 positionWS : INTERP6;
float3 normalWS : INTERP7;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
PackedVaryings PackVaryings (Varyings input)
{
PackedVaryings output;
ZERO_INITIALIZE(PackedVaryings, output);
output.positionCS = input.positionCS;
#if defined(LIGHTMAP_ON)
output.staticLightmapUV = input.staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
output.dynamicLightmapUV = input.dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
output.sh = input.sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
output.probeOcclusion = input.probeOcclusion;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
output.shadowCoord = input.shadowCoord;
#endif
output.tangentWS.xyzw = input.tangentWS;
output.positionWS.xyz = input.positionWS;
output.normalWS.xyz = input.normalWS;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
Varyings UnpackVaryings (PackedVaryings input)
{
Varyings output;
output.positionCS = input.positionCS;
#if defined(LIGHTMAP_ON)
output.staticLightmapUV = input.staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
output.dynamicLightmapUV = input.dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
output.sh = input.sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
output.probeOcclusion = input.probeOcclusion;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
output.shadowCoord = input.shadowCoord;
#endif
output.tangentWS = input.tangentWS.xyzw;
output.positionWS = input.positionWS.xyz;
output.normalWS = input.normalWS.xyz;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
// --------------------------------------------------
// Graph
// Graph Properties
CBUFFER_START(UnityPerMaterial)
float4 _Color_TexelSize;
float4 _Normal_TexelSize;
float4 _Mask_TexelSize;
float _TilesPerMeter;
float _DrawOrder;
float _DecalMeshBiasType;
float _DecalMeshDepthBias;
float _DecalMeshViewBias;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
CBUFFER_END
// Object and Global properties
SAMPLER(SamplerState_Linear_Repeat);
TEXTURE2D(_Color);
SAMPLER(sampler_Color);
TEXTURE2D(_Normal);
SAMPLER(sampler_Normal);
TEXTURE2D(_Mask);
SAMPLER(sampler_Mask);
// Graph Includes
#include_with_pragmas "Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline/GetSceneNormal.hlsl"
// Graph Functions
void Unity_Add_float3(float3 A, float3 B, out float3 Out)
{
Out = A + B;
}
void Unity_OneMinus_float3(float3 In, out float3 Out)
{
Out = 1 - In;
}
void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
{
Out = A * B;
}
void Unity_Multiply_float_float(float A, float B, out float Out)
{
Out = A * B;
}
void Unity_Saturate_float(float In, out float Out)
{
Out = saturate(In);
}
struct Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float
{
float3 ObjectSpacePosition;
};
void SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float _Sharpness, Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float IN, out float Mask_1)
{
float3 _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3;
Unity_Add_float3(IN.ObjectSpacePosition, float3(0.5, 0.5, 0.5), _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3);
float3 _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3;
Unity_OneMinus_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3);
float3 _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3;
Unity_Multiply_float3_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3, _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3);
float _Split_040f2669b21e47e0b7644de186562ac4_R_1_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[0];
float _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[1];
float _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[2];
float _Split_040f2669b21e47e0b7644de186562ac4_A_4_Float = 0;
float _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float;
Unity_Multiply_float_float(_Split_040f2669b21e47e0b7644de186562ac4_R_1_Float, _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float, _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float);
float _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float;
Unity_Multiply_float_float(_Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float, _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float);
float _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float;
Unity_Multiply_float_float(_Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float);
float _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float = _Sharpness;
float _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float;
Unity_Multiply_float_float(_Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float, _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float, _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float);
float _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
Unity_Saturate_float(_Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float, _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float);
Mask_1 = _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
}
void Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDY' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddy(In);
}
void Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDX' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddx(In);
}
void Unity_CrossProduct_float(float3 A, float3 B, out float3 Out)
{
Out = cross(A, B);
}
void Unity_Normalize_float3(float3 In, out float3 Out)
{
Out = normalize(In);
}
struct Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float
{
float3 WorldSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 AbsoluteWorldSpacePosition;
};
void SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(int _Space, Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float IN, out float3 Out_1)
{
float3 _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3;
Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(IN.AbsoluteWorldSpacePosition, _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3);
float3 _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3;
Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(IN.AbsoluteWorldSpacePosition, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3);
float3 _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
Unity_CrossProduct_float(_DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3, _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3);
float3 _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
_Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3 = TransformWorldToObjectNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
_Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3 = TransformWorldToViewNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3 = TransformWorldToTangent(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, tangentTransform, false);
}
float3 _Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3;
if (_Space == 0)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
else if (_Space == 1)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
}
else if (_Space == 2)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
}
else if (_Space == 3)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
}
else
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
float3 _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
Unity_Normalize_float3(_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3, _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3);
Out_1 = _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
}
// unity-custom-func-begin
void SwitchOnSRP_float(float3 URP, float3 HDRP, out float3 Out){
#if defined(UNIVERSAL_PIPELINE_CORE_INCLUDED)
Out = URP;
#else
Out = HDRP;
#endif
}
// unity-custom-func-end
// Graph Vertex
struct VertexDescription
{
};
VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
{
VertexDescription description = (VertexDescription)0;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float Alpha;
float3 NormalTS;
float NormalAlpha;
float Metallic;
float Occlusion;
float Smoothness;
float MAOSAlpha;
};
SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
{
SurfaceDescription surface = (SurfaceDescription)0;
UnityTexture2D _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Color);
float4 _ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4 = float4(IN.NDCPosition.xy, 0, 0);
float3 _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3;
GetSceneNormal_float((_ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4.xy), _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3);
float _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float = _TilesPerMeter;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_68493394e5a142309b873d6cd7c2747b_Blend /= dot(Triplanar_68493394e5a142309b873d6cd7c2747b_Blend, 1.0);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_X = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.zy);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Y = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xz);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Z = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xy);
float4 _Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4 = Triplanar_68493394e5a142309b873d6cd7c2747b_X * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.x + Triplanar_68493394e5a142309b873d6cd7c2747b_Y * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.y + Triplanar_68493394e5a142309b873d6cd7c2747b_Z * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.z;
Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14;
_DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14.ObjectSpacePosition = IN.ObjectSpacePosition;
float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float(500000), _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14, _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float);
UnityTexture2D _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Normal);
Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float _FaceNormal_9e1486c25af1475e95e303471cd85801;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceNormal = IN.WorldSpaceNormal;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceTangent = IN.WorldSpaceTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
float3 _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3;
SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(2, _FaceNormal_9e1486c25af1475e95e303471cd85801, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3);
float3 _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3;
SwitchOnSRP_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3, _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3);
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend = SafePositivePow_float(_SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend /= (Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z ).xxx;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_X = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.zy));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xz));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xy));
Triplanar_f7cd4cce612a452abe14bc0016c02901_X = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.zy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.x);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xz, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.y);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.z);
float4 _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4 = float4(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.zyx * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xzy * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xyz * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z, 1);
{
// Converting Normal from AbsoluteWorld to Tangent via world space
float3 world;
world = _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb = TransformWorldToTangent(world, tangentTransform, true);
}
}
UnityTexture2D _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Mask);
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend /= dot(Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend, 1.0);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.zy);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xz);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xy);
float4 _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4 = Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.x + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.y + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.z;
float _Split_69497f2d37a849768fdedd210c547a22_R_1_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[0];
float _Split_69497f2d37a849768fdedd210c547a22_G_2_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[1];
float _Split_69497f2d37a849768fdedd210c547a22_B_3_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[2];
float _Split_69497f2d37a849768fdedd210c547a22_A_4_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[3];
surface.BaseColor = (_Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4.xyz);
surface.Alpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.NormalTS = (_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.xyz);
surface.NormalAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.Metallic = _Split_69497f2d37a849768fdedd210c547a22_R_1_Float;
surface.Occlusion = _Split_69497f2d37a849768fdedd210c547a22_G_2_Float;
surface.Smoothness = _Split_69497f2d37a849768fdedd210c547a22_A_4_Float;
surface.MAOSAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
return surface;
}
// --------------------------------------------------
// Build Graph Inputs
// $features.graphVertex: $include("VertexAnimation.template.hlsl")
// ^ ERROR: $include cannot find file : VertexAnimation.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
// $features.graphPixel: $include("SharedCode.template.hlsl")
// ^ ERROR: $include cannot find file : SharedCode.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
{
SurfaceDescriptionInputs output;
ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
/* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
// must use interpolated tangent, bitangent and normal before they are normalized in the pixel shader.
float3 unnormalizedNormalWS = input.normalWS;
const float renormFactor = 1.0 / length(unnormalizedNormalWS);
// use bitangent on the fly like in hdrp
// IMPORTANT! If we ever support Flip on double sided materials ensure bitangent and tangent are NOT flipped.
float crossSign = (input.tangentWS.w > 0.0 ? 1.0 : -1.0) * GetOddNegativeScale();
float3 bitang = crossSign * cross(input.normalWS.xyz, input.tangentWS.xyz);
output.WorldSpaceNormal = renormFactor*input.normalWS.xyz; // we want a unit length Normal Vector node in shader graph
output.TangentSpaceNormal = float3(0.0f, 0.0f, 1.0f);
// to preserve mikktspace compliance we use same scale renormFactor as was used on the normal.
// This is explained in section 2.2 in "surface gradient based bump mapping framework"
output.WorldSpaceTangent = renormFactor*input.tangentWS.xyz;
output.WorldSpaceBiTangent = renormFactor*bitang;
output.ObjectSpacePosition = TransformWorldToObject(input.positionWS);
output.AbsoluteWorldSpacePosition = GetAbsolutePositionWS(input.positionWS);
#if UNITY_UV_STARTS_AT_TOP
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x < 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#else
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x > 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#endif
output.NDCPosition = output.PixelPosition.xy / _ScreenParams.xy;
output.NDCPosition.y = 1.0f - output.NDCPosition.y;
#if defined(UNITY_UIE_INCLUDED)
#else
#endif
#if UNITY_ANY_INSTANCING_ENABLED
#else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect.
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign = IS_FRONT_VFACE(input.cullFace, true, false);
#else
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
#endif
#undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
return output;
}
// --------------------------------------------------
// Build Surface Data
void GetSurfaceData(Varyings input, float4 positionCS, float angleFadeFactor, out DecalSurfaceData surfaceData)
{
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_FORWARD_EMISSIVE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
half4x4 normalToWorld = UNITY_ACCESS_INSTANCED_PROP(Decal, _NormalToWorld);
half fadeFactor = clamp(normalToWorld[0][3], 0.0f, 1.0f) * angleFadeFactor;
float2 scale = float2(normalToWorld[3][0], normalToWorld[3][1]);
float2 offset = float2(normalToWorld[3][2], normalToWorld[3][3]);
half3 normalWS = TransformObjectToWorldDir(half3(0, 1, 0));
half3 tangentWS = TransformObjectToWorldDir(half3(1, 0, 0));
half3 bitangentWS = TransformObjectToWorldDir(half3(0, 0, 1));
half sign = dot(cross(normalWS, tangentWS), bitangentWS) > 0 ? 1 : -1;
input.normalWS.xyz = normalWS;
input.tangentWS.xyzw = half4(tangentWS, sign);
#else
#if defined(LOD_FADE_CROSSFADE) && USE_UNITY_CROSSFADE
LODFadeCrossFade(positionCS);
#endif
half fadeFactor = half(1.0);
#endif
SurfaceDescriptionInputs surfaceDescriptionInputs = BuildSurfaceDescriptionInputs(input);
SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
// setup defaults -- these are used if the graph doesn't output a value
ZERO_INITIALIZE(DecalSurfaceData, surfaceData);
surfaceData.occlusion = half(1.0);
surfaceData.smoothness = half(0);
#ifdef _MATERIAL_AFFECTS_NORMAL
surfaceData.normalWS.w = half(1.0);
#else
surfaceData.normalWS.w = half(0.0);
#endif
// copy across graph values, if defined
surfaceData.baseColor.xyz = half3(surfaceDescription.BaseColor);
surfaceData.baseColor.w = half(surfaceDescription.Alpha * fadeFactor);
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
#if defined(_MATERIAL_AFFECTS_NORMAL)
surfaceData.normalWS.xyz = normalize(mul((half3x3)normalToWorld, surfaceDescription.NormalTS.xyz));
#else
surfaceData.normalWS.xyz = normalize(normalToWorld[2].xyz);
#endif
#elif (SHADERPASS == SHADERPASS_DBUFFER_MESH) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_MESH) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_MESH)
#if defined(_MATERIAL_AFFECTS_NORMAL)
float sgn = input.tangentWS.w; // should be either +1 or -1
float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz);
half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz);
// We need to normalize as we use mikkt tangent space and this is expected (tangent space is not normalize)
surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld));
#else
surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); // Default to vertex normal
#endif
#endif
surfaceData.normalWS.w = surfaceDescription.NormalAlpha * fadeFactor;
// In case of Smoothness / AO / Metal, all the three are always computed but color mask can change
surfaceData.metallic = half(surfaceDescription.Metallic);
surfaceData.occlusion = half(surfaceDescription.Occlusion);
surfaceData.smoothness = half(surfaceDescription.Smoothness);
surfaceData.MAOSAlpha = half(surfaceDescription.MAOSAlpha * fadeFactor);
}
// --------------------------------------------------
// Main
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl"
<Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline#1_Decal Material Volume.shadergraph<00>}<7D><>Xf ј<>+n<>M<EFBFBD><4D>_~9@__MAIN_LIGHT_SHADOWS_MAIN_LIGHT_SHADOWS_CASCADE_MAIN_LIGHT_SHADOWS_SCREEN_DECAL_NORMAL_BLEND_LOW_DECAL_NORMAL_BLEND_MEDIUM_DECAL_NORMAL_BLEND_HIGH_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2 _ _SHADOWS_SOFT_SHADOWS_SOFT_LOW_SHADOWS_SOFT_MEDIUM_SHADOWS_SOFT_HIGH__GBUFFER_NORMALS_OCT__RENDER_PASS_ENABLED__MAIN_LIGHT_SHADOWS_MAIN_LIGHT_SHADOWS_CASCADE_MAIN_LIGHT_SHADOWS_SCREEN_DECAL_NORMAL_BLEND_LOW_DECAL_NORMAL_BLEND_MEDIUM_DECAL_NORMAL_BLEND_HIGH_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2&_FOVEATED_RENDERING_NON_UNIFORM_RASTER<00><> DOTS_INSTANCING_ON<00><> SHADOWS_SOFT<46>DIRLIGHTMAP_COMBINED<45>DYNAMICLIGHTMAP_ON<00>SHADOWS_SCREEN<00> INSTANCING_ONPROCEDURAL_INSTANCING_ON@STEREO_MULTIVIEW_ON<00>STEREO_INSTANCING_ON<4F>"UNITY_DEVICE_SUPPORTS_NATIVE_16BIT (UNITY_DEVICE_SUPPORTS_INLINE_RAY_TRACING<00>_SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH _GBUFFER_NORMALS_OCT _RENDER_PASS_ENABLED _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN _DECAL_NORMAL_BLEND_LOW _DECAL_NORMAL_BLEND_MEDIUM _DECAL_NORMAL_BLEND_HIGH _DECAL_LAYERS DOTS_INSTANCING_ON _FOVEATED_RENDERING_NON_UNIFORM_RASTER PROBE_VOLUMES_L1 PROBE_VOLUMES_L2 INSTANCING_ON FOG_LINEAR FOG_EXP FOG_EXP2q<><00><>#if defined(SHADER_STAGE_VERTEX)
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
#if defined(SHADER_STAGE_FRAGMENT)
#define _DBUFFER_MRT1_KEYWORD_DECLARED 1
#define _DBUFFER_MRT2_KEYWORD_DECLARED 1
#define _DBUFFER_MRT3_KEYWORD_DECLARED 1
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
cbuffer UnityDynamicKeywords {
int _FOVEATED_RENDERING_NON_UNIFORM_RASTER;
};
#line 2054 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
#define UNITY_INSTANCED_LOD_FADE
#define UNITY_INSTANCED_SH
#define UNITY_INSTANCED_LIGHTMAPSTS
#define UNITY_INSTANCED_RENDERER_BOUNDS
#line 2054 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
/* UNITY: Original start of shader */
// Pragmas
#pragma target 4.5
#pragma exclude_renderers gles3 glcore
#pragma vertex Vert
#pragma fragment Frag
#pragma multi_compile_instancing
#pragma editor_sync_compilation
// Keywords
#pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3
#pragma multi_compile _ _DECAL_LAYERS
// GraphKeywords: <None>
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
// Defines
#define ATTRIBUTES_NEED_NORMAL
#define ATTRIBUTES_NEED_TANGENT
#define ATTRIBUTES_NEED_TEXCOORD0
#define ATTRIBUTES_NEED_TEXCOORD1
#define ATTRIBUTES_NEED_TEXCOORD2
#define VARYINGS_NEED_POSITION_WS
#define VARYINGS_NEED_NORMAL_WS
#define VARYINGS_NEED_TANGENT_WS
#define VARYINGS_NEED_TEXCOORD0
#define HAVE_MESH_MODIFICATION
#define SHADERPASS SHADERPASS_DBUFFER_MESH
#define _MATERIAL_AFFECTS_ALBEDO 1
#define _MATERIAL_AFFECTS_NORMAL 1
#define _MATERIAL_AFFECTS_NORMAL_BLEND 1
#define _MATERIAL_AFFECTS_MAOS 1
// Includes
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"
// -- Properties used by ScenePickingPass
#ifdef SCENEPICKINGPASS
float4 _SelectionID;
#endif
#if _RENDER_PASS_ENABLED
#define GBUFFER3 0
FRAMEBUFFER_INPUT_X_FLOAT(GBUFFER3);
#define GBUFFER4 1
FRAMEBUFFER_INPUT_X_UINT(GBUFFER4);
#endif
// --------------------------------------------------
// Structs and Packing
struct Attributes
{
float3 positionOS : POSITION;
float3 normalOS : NORMAL;
float4 tangentOS : TANGENT;
float4 uv0 : TEXCOORD0;
float4 uv1 : TEXCOORD1;
float4 uv2 : TEXCOORD2;
#if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID)
uint instanceID : INSTANCEID_SEMANTIC;
#endif
};
struct Varyings
{
float4 positionCS : SV_POSITION;
float3 positionWS;
float3 normalWS;
float4 tangentWS;
float4 texCoord0;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
struct SurfaceDescriptionInputs
{
float3 WorldSpaceNormal;
float3 TangentSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 ObjectSpacePosition;
float3 AbsoluteWorldSpacePosition;
float2 NDCPosition;
float2 PixelPosition;
};
struct VertexDescriptionInputs
{
};
struct PackedVaryings
{
float4 positionCS : SV_POSITION;
float4 tangentWS : INTERP0;
float4 texCoord0 : INTERP1;
float3 positionWS : INTERP2;
float3 normalWS : INTERP3;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
PackedVaryings PackVaryings (Varyings input)
{
PackedVaryings output;
ZERO_INITIALIZE(PackedVaryings, output);
output.positionCS = input.positionCS;
output.tangentWS.xyzw = input.tangentWS;
output.texCoord0.xyzw = input.texCoord0;
output.positionWS.xyz = input.positionWS;
output.normalWS.xyz = input.normalWS;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
Varyings UnpackVaryings (PackedVaryings input)
{
Varyings output;
output.positionCS = input.positionCS;
output.tangentWS = input.tangentWS.xyzw;
output.texCoord0 = input.texCoord0.xyzw;
output.positionWS = input.positionWS.xyz;
output.normalWS = input.normalWS.xyz;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
// --------------------------------------------------
// Graph
// Graph Properties
CBUFFER_START(UnityPerMaterial)
float4 _Color_TexelSize;
float4 _Normal_TexelSize;
float4 _Mask_TexelSize;
float _TilesPerMeter;
float _DrawOrder;
float _DecalMeshBiasType;
float _DecalMeshDepthBias;
float _DecalMeshViewBias;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
CBUFFER_END
// Object and Global properties
SAMPLER(SamplerState_Linear_Repeat);
TEXTURE2D(_Color);
SAMPLER(sampler_Color);
TEXTURE2D(_Normal);
SAMPLER(sampler_Normal);
TEXTURE2D(_Mask);
SAMPLER(sampler_Mask);
// Graph Includes
#include_with_pragmas "Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline/GetSceneNormal.hlsl"
// Graph Functions
void Unity_Add_float3(float3 A, float3 B, out float3 Out)
{
Out = A + B;
}
void Unity_OneMinus_float3(float3 In, out float3 Out)
{
Out = 1 - In;
}
void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
{
Out = A * B;
}
void Unity_Multiply_float_float(float A, float B, out float Out)
{
Out = A * B;
}
void Unity_Saturate_float(float In, out float Out)
{
Out = saturate(In);
}
struct Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float
{
float3 ObjectSpacePosition;
};
void SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float _Sharpness, Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float IN, out float Mask_1)
{
float3 _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3;
Unity_Add_float3(IN.ObjectSpacePosition, float3(0.5, 0.5, 0.5), _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3);
float3 _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3;
Unity_OneMinus_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3);
float3 _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3;
Unity_Multiply_float3_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3, _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3);
float _Split_040f2669b21e47e0b7644de186562ac4_R_1_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[0];
float _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[1];
float _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[2];
float _Split_040f2669b21e47e0b7644de186562ac4_A_4_Float = 0;
float _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float;
Unity_Multiply_float_float(_Split_040f2669b21e47e0b7644de186562ac4_R_1_Float, _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float, _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float);
float _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float;
Unity_Multiply_float_float(_Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float, _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float);
float _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float;
Unity_Multiply_float_float(_Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float);
float _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float = _Sharpness;
float _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float;
Unity_Multiply_float_float(_Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float, _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float, _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float);
float _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
Unity_Saturate_float(_Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float, _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float);
Mask_1 = _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
}
void Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDY' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddy(In);
}
void Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDX' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddx(In);
}
void Unity_CrossProduct_float(float3 A, float3 B, out float3 Out)
{
Out = cross(A, B);
}
void Unity_Normalize_float3(float3 In, out float3 Out)
{
Out = normalize(In);
}
struct Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float
{
float3 WorldSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 AbsoluteWorldSpacePosition;
};
void SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(int _Space, Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float IN, out float3 Out_1)
{
float3 _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3;
Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(IN.AbsoluteWorldSpacePosition, _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3);
float3 _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3;
Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(IN.AbsoluteWorldSpacePosition, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3);
float3 _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
Unity_CrossProduct_float(_DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3, _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3);
float3 _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
_Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3 = TransformWorldToObjectNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
_Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3 = TransformWorldToViewNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3 = TransformWorldToTangent(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, tangentTransform, false);
}
float3 _Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3;
if (_Space == 0)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
else if (_Space == 1)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
}
else if (_Space == 2)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
}
else if (_Space == 3)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
}
else
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
float3 _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
Unity_Normalize_float3(_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3, _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3);
Out_1 = _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
}
// unity-custom-func-begin
void SwitchOnSRP_float(float3 URP, float3 HDRP, out float3 Out){
#if defined(UNIVERSAL_PIPELINE_CORE_INCLUDED)
Out = URP;
#else
Out = HDRP;
#endif
}
// unity-custom-func-end
// Graph Vertex
struct VertexDescription
{
};
VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
{
VertexDescription description = (VertexDescription)0;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float Alpha;
float3 NormalTS;
float NormalAlpha;
float Metallic;
float Occlusion;
float Smoothness;
float MAOSAlpha;
};
SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
{
SurfaceDescription surface = (SurfaceDescription)0;
UnityTexture2D _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Color);
float4 _ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4 = float4(IN.NDCPosition.xy, 0, 0);
float3 _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3;
GetSceneNormal_float((_ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4.xy), _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3);
float _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float = _TilesPerMeter;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_68493394e5a142309b873d6cd7c2747b_Blend /= dot(Triplanar_68493394e5a142309b873d6cd7c2747b_Blend, 1.0);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_X = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.zy);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Y = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xz);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Z = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xy);
float4 _Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4 = Triplanar_68493394e5a142309b873d6cd7c2747b_X * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.x + Triplanar_68493394e5a142309b873d6cd7c2747b_Y * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.y + Triplanar_68493394e5a142309b873d6cd7c2747b_Z * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.z;
Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14;
_DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14.ObjectSpacePosition = IN.ObjectSpacePosition;
float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float(500000), _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14, _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float);
UnityTexture2D _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Normal);
Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float _FaceNormal_9e1486c25af1475e95e303471cd85801;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceNormal = IN.WorldSpaceNormal;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceTangent = IN.WorldSpaceTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
float3 _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3;
SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(2, _FaceNormal_9e1486c25af1475e95e303471cd85801, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3);
float3 _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3;
SwitchOnSRP_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3, _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3);
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend = SafePositivePow_float(_SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend /= (Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z ).xxx;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_X = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.zy));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xz));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xy));
Triplanar_f7cd4cce612a452abe14bc0016c02901_X = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.zy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.x);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xz, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.y);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.z);
float4 _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4 = float4(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.zyx * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xzy * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xyz * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z, 1);
{
// Converting Normal from AbsoluteWorld to Tangent via world space
float3 world;
world = _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb = TransformWorldToTangent(world, tangentTransform, true);
}
}
UnityTexture2D _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Mask);
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend /= dot(Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend, 1.0);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.zy);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xz);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xy);
float4 _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4 = Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.x + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.y + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.z;
float _Split_69497f2d37a849768fdedd210c547a22_R_1_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[0];
float _Split_69497f2d37a849768fdedd210c547a22_G_2_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[1];
float _Split_69497f2d37a849768fdedd210c547a22_B_3_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[2];
float _Split_69497f2d37a849768fdedd210c547a22_A_4_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[3];
surface.BaseColor = (_Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4.xyz);
surface.Alpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.NormalTS = (_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.xyz);
surface.NormalAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.Metallic = _Split_69497f2d37a849768fdedd210c547a22_R_1_Float;
surface.Occlusion = _Split_69497f2d37a849768fdedd210c547a22_G_2_Float;
surface.Smoothness = _Split_69497f2d37a849768fdedd210c547a22_A_4_Float;
surface.MAOSAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
return surface;
}
// --------------------------------------------------
// Build Graph Inputs
// $features.graphVertex: $include("VertexAnimation.template.hlsl")
// ^ ERROR: $include cannot find file : VertexAnimation.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
// $features.graphPixel: $include("SharedCode.template.hlsl")
// ^ ERROR: $include cannot find file : SharedCode.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
{
SurfaceDescriptionInputs output;
ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
/* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
// must use interpolated tangent, bitangent and normal before they are normalized in the pixel shader.
float3 unnormalizedNormalWS = input.normalWS;
const float renormFactor = 1.0 / length(unnormalizedNormalWS);
// use bitangent on the fly like in hdrp
// IMPORTANT! If we ever support Flip on double sided materials ensure bitangent and tangent are NOT flipped.
float crossSign = (input.tangentWS.w > 0.0 ? 1.0 : -1.0) * GetOddNegativeScale();
float3 bitang = crossSign * cross(input.normalWS.xyz, input.tangentWS.xyz);
output.WorldSpaceNormal = renormFactor*input.normalWS.xyz; // we want a unit length Normal Vector node in shader graph
output.TangentSpaceNormal = float3(0.0f, 0.0f, 1.0f);
// to preserve mikktspace compliance we use same scale renormFactor as was used on the normal.
// This is explained in section 2.2 in "surface gradient based bump mapping framework"
output.WorldSpaceTangent = renormFactor*input.tangentWS.xyz;
output.WorldSpaceBiTangent = renormFactor*bitang;
output.ObjectSpacePosition = TransformWorldToObject(input.positionWS);
output.AbsoluteWorldSpacePosition = GetAbsolutePositionWS(input.positionWS);
#if UNITY_UV_STARTS_AT_TOP
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x < 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#else
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x > 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#endif
output.NDCPosition = output.PixelPosition.xy / _ScreenParams.xy;
output.NDCPosition.y = 1.0f - output.NDCPosition.y;
#if defined(UNITY_UIE_INCLUDED)
#else
#endif
#if UNITY_ANY_INSTANCING_ENABLED
#else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect.
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign = IS_FRONT_VFACE(input.cullFace, true, false);
#else
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
#endif
#undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
return output;
}
// --------------------------------------------------
// Build Surface Data
void GetSurfaceData(Varyings input, float4 positionCS, float angleFadeFactor, out DecalSurfaceData surfaceData)
{
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_FORWARD_EMISSIVE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
half4x4 normalToWorld = UNITY_ACCESS_INSTANCED_PROP(Decal, _NormalToWorld);
half fadeFactor = clamp(normalToWorld[0][3], 0.0f, 1.0f) * angleFadeFactor;
float2 scale = float2(normalToWorld[3][0], normalToWorld[3][1]);
float2 offset = float2(normalToWorld[3][2], normalToWorld[3][3]);
input.texCoord0.xy = input.texCoord0.xy * scale + offset;
half3 normalWS = TransformObjectToWorldDir(half3(0, 1, 0));
half3 tangentWS = TransformObjectToWorldDir(half3(1, 0, 0));
half3 bitangentWS = TransformObjectToWorldDir(half3(0, 0, 1));
half sign = dot(cross(normalWS, tangentWS), bitangentWS) > 0 ? 1 : -1;
input.normalWS.xyz = normalWS;
input.tangentWS.xyzw = half4(tangentWS, sign);
#else
#if defined(LOD_FADE_CROSSFADE) && USE_UNITY_CROSSFADE
LODFadeCrossFade(positionCS);
#endif
half fadeFactor = half(1.0);
#endif
SurfaceDescriptionInputs surfaceDescriptionInputs = BuildSurfaceDescriptionInputs(input);
SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
// setup defaults -- these are used if the graph doesn't output a value
ZERO_INITIALIZE(DecalSurfaceData, surfaceData);
surfaceData.occlusion = half(1.0);
surfaceData.smoothness = half(0);
#ifdef _MATERIAL_AFFECTS_NORMAL
surfaceData.normalWS.w = half(1.0);
#else
surfaceData.normalWS.w = half(0.0);
#endif
// copy across graph values, if defined
surfaceData.baseColor.xyz = half3(surfaceDescription.BaseColor);
surfaceData.baseColor.w = half(surfaceDescription.Alpha * fadeFactor);
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
#if defined(_MATERIAL_AFFECTS_NORMAL)
surfaceData.normalWS.xyz = normalize(mul((half3x3)normalToWorld, surfaceDescription.NormalTS.xyz));
#else
surfaceData.normalWS.xyz = normalize(normalToWorld[2].xyz);
#endif
#elif (SHADERPASS == SHADERPASS_DBUFFER_MESH) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_MESH) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_MESH)
#if defined(_MATERIAL_AFFECTS_NORMAL)
float sgn = input.tangentWS.w; // should be either +1 or -1
float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz);
half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz);
// We need to normalize as we use mikkt tangent space and this is expected (tangent space is not normalize)
surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld));
#else
surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); // Default to vertex normal
#endif
#endif
surfaceData.normalWS.w = surfaceDescription.NormalAlpha * fadeFactor;
// In case of Smoothness / AO / Metal, all the three are always computed but color mask can change
surfaceData.metallic = half(surfaceDescription.Metallic);
surfaceData.occlusion = half(surfaceDescription.Occlusion);
surfaceData.smoothness = half(surfaceDescription.Smoothness);
surfaceData.MAOSAlpha = half(surfaceDescription.MAOSAlpha * fadeFactor);
}
// --------------------------------------------------
// Main
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl"
<Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline#1_Decal Material Volume.shadergraph<00>}<7D><><00>D<EFBFBD>`ܶBEÏ<45>5`<60><><EFBFBD>@_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2_ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2&_FOVEATED_RENDERING_NON_UNIFORM_RASTER<00><> DOTS_INSTANCING_ON<00><> SHADOWS_SOFT<46>DIRLIGHTMAP_COMBINED<45>DYNAMICLIGHTMAP_ON<00>SHADOWS_SCREEN<00> INSTANCING_ONPROCEDURAL_INSTANCING_ON@STEREO_MULTIVIEW_ON<00>STEREO_INSTANCING_ON<4F>"UNITY_DEVICE_SUPPORTS_NATIVE_16BIT (UNITY_DEVICE_SUPPORTS_INLINE_RAY_TRACING<00>_DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 _DECAL_LAYERS DOTS_INSTANCING_ON _FOVEATED_RENDERING_NON_UNIFORM_RASTER PROBE_VOLUMES_L1 PROBE_VOLUMES_L2 INSTANCING_ON FOG_LINEAR FOG_EXP FOG_EXP2߁s<>#if defined(SHADER_STAGE_VERTEX)
#define LIGHTMAP_ON_KEYWORD_DECLARED 1
#define DYNAMICLIGHTMAP_ON_KEYWORD_DECLARED 1
#define DIRLIGHTMAP_COMBINED_KEYWORD_DECLARED 1
#define USE_LEGACY_LIGHTMAPS_KEYWORD_DECLARED 1
#define LIGHTMAP_BICUBIC_SAMPLING_KEYWORD_DECLARED 1
#define REFLECTION_PROBE_ROTATION_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_CASCADE_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_SCREEN_KEYWORD_DECLARED 1
#define _ADDITIONAL_LIGHTS_VERTEX_KEYWORD_DECLARED 1
#define _ADDITIONAL_LIGHTS_KEYWORD_DECLARED 1
#define LIGHTMAP_SHADOW_MIXING_KEYWORD_DECLARED 1
#define SHADOWS_SHADOWMASK_KEYWORD_DECLARED 1
#define _CLUSTER_LIGHT_LOOP_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_LOW_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_MEDIUM_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_HIGH_KEYWORD_DECLARED 1
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
#if defined(SHADER_STAGE_FRAGMENT)
#define _ADDITIONAL_LIGHT_SHADOWS_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_LOW_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_MEDIUM_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_HIGH_KEYWORD_DECLARED 1
#define DEBUG_DISPLAY_KEYWORD_DECLARED 1
#define LIGHTMAP_ON_KEYWORD_DECLARED 1
#define DYNAMICLIGHTMAP_ON_KEYWORD_DECLARED 1
#define DIRLIGHTMAP_COMBINED_KEYWORD_DECLARED 1
#define USE_LEGACY_LIGHTMAPS_KEYWORD_DECLARED 1
#define LIGHTMAP_BICUBIC_SAMPLING_KEYWORD_DECLARED 1
#define REFLECTION_PROBE_ROTATION_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_CASCADE_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_SCREEN_KEYWORD_DECLARED 1
#define _ADDITIONAL_LIGHTS_VERTEX_KEYWORD_DECLARED 1
#define _ADDITIONAL_LIGHTS_KEYWORD_DECLARED 1
#define LIGHTMAP_SHADOW_MIXING_KEYWORD_DECLARED 1
#define SHADOWS_SHADOWMASK_KEYWORD_DECLARED 1
#define _CLUSTER_LIGHT_LOOP_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_LOW_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_MEDIUM_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_HIGH_KEYWORD_DECLARED 1
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
cbuffer UnityDynamicKeywords {
int _FOVEATED_RENDERING_NON_UNIFORM_RASTER;
};
#line 2681 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
#define UNITY_INSTANCED_LOD_FADE
#define UNITY_INSTANCED_SH
#define UNITY_INSTANCED_LIGHTMAPSTS
#define UNITY_INSTANCED_RENDERER_BOUNDS
#line 2681 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
/* UNITY: Original start of shader */
// Pragmas
#pragma target 2.5
#pragma vertex Vert
#pragma fragment Frag
#pragma multi_compile_instancing
#pragma editor_sync_compilation
// Keywords
#pragma multi_compile _ LIGHTMAP_ON
#pragma multi_compile _ DYNAMICLIGHTMAP_ON
#pragma multi_compile _ DIRLIGHTMAP_COMBINED
#pragma multi_compile _ USE_LEGACY_LIGHTMAPS
#pragma multi_compile _ LIGHTMAP_BICUBIC_SAMPLING
#pragma multi_compile _ REFLECTION_PROBE_ROTATION
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
#pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
#pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS
#pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
#pragma multi_compile _ LIGHTMAP_SHADOW_MIXING
#pragma multi_compile _ SHADOWS_SHADOWMASK
#pragma multi_compile _ _CLUSTER_LIGHT_LOOP
#pragma multi_compile _DECAL_NORMAL_BLEND_LOW _DECAL_NORMAL_BLEND_MEDIUM _DECAL_NORMAL_BLEND_HIGH
#pragma multi_compile_fragment _ DEBUG_DISPLAY
#pragma multi_compile _ _DECAL_LAYERS
// GraphKeywords: <None>
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
// Defines
#define ATTRIBUTES_NEED_NORMAL
#define ATTRIBUTES_NEED_TANGENT
#define ATTRIBUTES_NEED_TEXCOORD0
#define ATTRIBUTES_NEED_TEXCOORD1
#define ATTRIBUTES_NEED_TEXCOORD2
#define VARYINGS_NEED_POSITION_WS
#define VARYINGS_NEED_NORMAL_WS
#define VARYINGS_NEED_TANGENT_WS
#define VARYINGS_NEED_TEXCOORD0
#define VARYINGS_NEED_FOG_AND_VERTEX_LIGHT
#define VARYINGS_NEED_SH
#define VARYINGS_NEED_STATIC_LIGHTMAP_UV
#define VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV
#define VARYINGS_NEED_SHADOW_COORD
#define HAVE_MESH_MODIFICATION
#define SHADERPASS SHADERPASS_DECAL_SCREEN_SPACE_MESH
#define _MATERIAL_AFFECTS_ALBEDO 1
#define _MATERIAL_AFFECTS_NORMAL 1
#define _MATERIAL_AFFECTS_NORMAL_BLEND 1
#define _MATERIAL_AFFECTS_MAOS 1
// Includes
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl"
// -- Properties used by ScenePickingPass
#ifdef SCENEPICKINGPASS
float4 _SelectionID;
#endif
#if _RENDER_PASS_ENABLED
#define GBUFFER3 0
FRAMEBUFFER_INPUT_X_FLOAT(GBUFFER3);
#define GBUFFER4 1
FRAMEBUFFER_INPUT_X_UINT(GBUFFER4);
#endif
// --------------------------------------------------
// Structs and Packing
struct Attributes
{
float3 positionOS : POSITION;
float3 normalOS : NORMAL;
float4 tangentOS : TANGENT;
float4 uv0 : TEXCOORD0;
float4 uv1 : TEXCOORD1;
float4 uv2 : TEXCOORD2;
#if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID)
uint instanceID : INSTANCEID_SEMANTIC;
#endif
};
struct Varyings
{
float4 positionCS : SV_POSITION;
float3 positionWS;
float3 normalWS;
float4 tangentWS;
float4 texCoord0;
#if defined(LIGHTMAP_ON)
float2 staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
float2 dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
float3 sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
float4 probeOcclusion;
#endif
float4 fogFactorAndVertexLight;
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
float4 shadowCoord;
#endif
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
struct SurfaceDescriptionInputs
{
float3 WorldSpaceNormal;
float3 TangentSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 ObjectSpacePosition;
float3 AbsoluteWorldSpacePosition;
float2 NDCPosition;
float2 PixelPosition;
};
struct VertexDescriptionInputs
{
};
struct PackedVaryings
{
float4 positionCS : SV_POSITION;
#if defined(LIGHTMAP_ON)
float2 staticLightmapUV : INTERP0;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
float2 dynamicLightmapUV : INTERP1;
#endif
#if !defined(LIGHTMAP_ON)
float3 sh : INTERP2;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
float4 probeOcclusion : INTERP3;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
float4 shadowCoord : INTERP4;
#endif
float4 tangentWS : INTERP5;
float4 texCoord0 : INTERP6;
float4 fogFactorAndVertexLight : INTERP7;
float3 positionWS : INTERP8;
float3 normalWS : INTERP9;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
PackedVaryings PackVaryings (Varyings input)
{
PackedVaryings output;
ZERO_INITIALIZE(PackedVaryings, output);
output.positionCS = input.positionCS;
#if defined(LIGHTMAP_ON)
output.staticLightmapUV = input.staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
output.dynamicLightmapUV = input.dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
output.sh = input.sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
output.probeOcclusion = input.probeOcclusion;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
output.shadowCoord = input.shadowCoord;
#endif
output.tangentWS.xyzw = input.tangentWS;
output.texCoord0.xyzw = input.texCoord0;
output.fogFactorAndVertexLight.xyzw = input.fogFactorAndVertexLight;
output.positionWS.xyz = input.positionWS;
output.normalWS.xyz = input.normalWS;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
Varyings UnpackVaryings (PackedVaryings input)
{
Varyings output;
output.positionCS = input.positionCS;
#if defined(LIGHTMAP_ON)
output.staticLightmapUV = input.staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
output.dynamicLightmapUV = input.dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
output.sh = input.sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
output.probeOcclusion = input.probeOcclusion;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
output.shadowCoord = input.shadowCoord;
#endif
output.tangentWS = input.tangentWS.xyzw;
output.texCoord0 = input.texCoord0.xyzw;
output.fogFactorAndVertexLight = input.fogFactorAndVertexLight.xyzw;
output.positionWS = input.positionWS.xyz;
output.normalWS = input.normalWS.xyz;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
// --------------------------------------------------
// Graph
// Graph Properties
CBUFFER_START(UnityPerMaterial)
float4 _Color_TexelSize;
float4 _Normal_TexelSize;
float4 _Mask_TexelSize;
float _TilesPerMeter;
float _DrawOrder;
float _DecalMeshBiasType;
float _DecalMeshDepthBias;
float _DecalMeshViewBias;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
CBUFFER_END
// Object and Global properties
SAMPLER(SamplerState_Linear_Repeat);
TEXTURE2D(_Color);
SAMPLER(sampler_Color);
TEXTURE2D(_Normal);
SAMPLER(sampler_Normal);
TEXTURE2D(_Mask);
SAMPLER(sampler_Mask);
// Graph Includes
#include_with_pragmas "Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline/GetSceneNormal.hlsl"
// Graph Functions
void Unity_Add_float3(float3 A, float3 B, out float3 Out)
{
Out = A + B;
}
void Unity_OneMinus_float3(float3 In, out float3 Out)
{
Out = 1 - In;
}
void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
{
Out = A * B;
}
void Unity_Multiply_float_float(float A, float B, out float Out)
{
Out = A * B;
}
void Unity_Saturate_float(float In, out float Out)
{
Out = saturate(In);
}
struct Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float
{
float3 ObjectSpacePosition;
};
void SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float _Sharpness, Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float IN, out float Mask_1)
{
float3 _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3;
Unity_Add_float3(IN.ObjectSpacePosition, float3(0.5, 0.5, 0.5), _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3);
float3 _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3;
Unity_OneMinus_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3);
float3 _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3;
Unity_Multiply_float3_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3, _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3);
float _Split_040f2669b21e47e0b7644de186562ac4_R_1_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[0];
float _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[1];
float _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[2];
float _Split_040f2669b21e47e0b7644de186562ac4_A_4_Float = 0;
float _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float;
Unity_Multiply_float_float(_Split_040f2669b21e47e0b7644de186562ac4_R_1_Float, _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float, _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float);
float _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float;
Unity_Multiply_float_float(_Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float, _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float);
float _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float;
Unity_Multiply_float_float(_Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float);
float _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float = _Sharpness;
float _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float;
Unity_Multiply_float_float(_Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float, _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float, _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float);
float _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
Unity_Saturate_float(_Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float, _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float);
Mask_1 = _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
}
void Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDY' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddy(In);
}
void Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDX' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddx(In);
}
void Unity_CrossProduct_float(float3 A, float3 B, out float3 Out)
{
Out = cross(A, B);
}
void Unity_Normalize_float3(float3 In, out float3 Out)
{
Out = normalize(In);
}
struct Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float
{
float3 WorldSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 AbsoluteWorldSpacePosition;
};
void SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(int _Space, Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float IN, out float3 Out_1)
{
float3 _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3;
Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(IN.AbsoluteWorldSpacePosition, _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3);
float3 _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3;
Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(IN.AbsoluteWorldSpacePosition, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3);
float3 _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
Unity_CrossProduct_float(_DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3, _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3);
float3 _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
_Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3 = TransformWorldToObjectNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
_Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3 = TransformWorldToViewNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3 = TransformWorldToTangent(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, tangentTransform, false);
}
float3 _Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3;
if (_Space == 0)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
else if (_Space == 1)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
}
else if (_Space == 2)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
}
else if (_Space == 3)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
}
else
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
float3 _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
Unity_Normalize_float3(_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3, _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3);
Out_1 = _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
}
// unity-custom-func-begin
void SwitchOnSRP_float(float3 URP, float3 HDRP, out float3 Out){
#if defined(UNIVERSAL_PIPELINE_CORE_INCLUDED)
Out = URP;
#else
Out = HDRP;
#endif
}
// unity-custom-func-end
// Graph Vertex
struct VertexDescription
{
};
VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
{
VertexDescription description = (VertexDescription)0;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float Alpha;
float3 NormalTS;
float NormalAlpha;
float Metallic;
float Occlusion;
float Smoothness;
float MAOSAlpha;
};
SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
{
SurfaceDescription surface = (SurfaceDescription)0;
UnityTexture2D _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Color);
float4 _ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4 = float4(IN.NDCPosition.xy, 0, 0);
float3 _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3;
GetSceneNormal_float((_ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4.xy), _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3);
float _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float = _TilesPerMeter;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_68493394e5a142309b873d6cd7c2747b_Blend /= dot(Triplanar_68493394e5a142309b873d6cd7c2747b_Blend, 1.0);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_X = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.zy);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Y = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xz);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Z = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xy);
float4 _Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4 = Triplanar_68493394e5a142309b873d6cd7c2747b_X * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.x + Triplanar_68493394e5a142309b873d6cd7c2747b_Y * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.y + Triplanar_68493394e5a142309b873d6cd7c2747b_Z * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.z;
Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14;
_DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14.ObjectSpacePosition = IN.ObjectSpacePosition;
float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float(500000), _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14, _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float);
UnityTexture2D _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Normal);
Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float _FaceNormal_9e1486c25af1475e95e303471cd85801;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceNormal = IN.WorldSpaceNormal;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceTangent = IN.WorldSpaceTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
float3 _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3;
SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(2, _FaceNormal_9e1486c25af1475e95e303471cd85801, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3);
float3 _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3;
SwitchOnSRP_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3, _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3);
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend = SafePositivePow_float(_SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend /= (Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z ).xxx;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_X = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.zy));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xz));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xy));
Triplanar_f7cd4cce612a452abe14bc0016c02901_X = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.zy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.x);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xz, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.y);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.z);
float4 _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4 = float4(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.zyx * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xzy * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xyz * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z, 1);
{
// Converting Normal from AbsoluteWorld to Tangent via world space
float3 world;
world = _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb = TransformWorldToTangent(world, tangentTransform, true);
}
}
UnityTexture2D _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Mask);
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend /= dot(Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend, 1.0);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.zy);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xz);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xy);
float4 _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4 = Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.x + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.y + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.z;
float _Split_69497f2d37a849768fdedd210c547a22_R_1_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[0];
float _Split_69497f2d37a849768fdedd210c547a22_G_2_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[1];
float _Split_69497f2d37a849768fdedd210c547a22_B_3_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[2];
float _Split_69497f2d37a849768fdedd210c547a22_A_4_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[3];
surface.BaseColor = (_Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4.xyz);
surface.Alpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.NormalTS = (_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.xyz);
surface.NormalAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.Metallic = _Split_69497f2d37a849768fdedd210c547a22_R_1_Float;
surface.Occlusion = _Split_69497f2d37a849768fdedd210c547a22_G_2_Float;
surface.Smoothness = _Split_69497f2d37a849768fdedd210c547a22_A_4_Float;
surface.MAOSAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
return surface;
}
// --------------------------------------------------
// Build Graph Inputs
// $features.graphVertex: $include("VertexAnimation.template.hlsl")
// ^ ERROR: $include cannot find file : VertexAnimation.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
// $features.graphPixel: $include("SharedCode.template.hlsl")
// ^ ERROR: $include cannot find file : SharedCode.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
{
SurfaceDescriptionInputs output;
ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
/* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
// must use interpolated tangent, bitangent and normal before they are normalized in the pixel shader.
float3 unnormalizedNormalWS = input.normalWS;
const float renormFactor = 1.0 / length(unnormalizedNormalWS);
// use bitangent on the fly like in hdrp
// IMPORTANT! If we ever support Flip on double sided materials ensure bitangent and tangent are NOT flipped.
float crossSign = (input.tangentWS.w > 0.0 ? 1.0 : -1.0) * GetOddNegativeScale();
float3 bitang = crossSign * cross(input.normalWS.xyz, input.tangentWS.xyz);
output.WorldSpaceNormal = renormFactor*input.normalWS.xyz; // we want a unit length Normal Vector node in shader graph
output.TangentSpaceNormal = float3(0.0f, 0.0f, 1.0f);
// to preserve mikktspace compliance we use same scale renormFactor as was used on the normal.
// This is explained in section 2.2 in "surface gradient based bump mapping framework"
output.WorldSpaceTangent = renormFactor*input.tangentWS.xyz;
output.WorldSpaceBiTangent = renormFactor*bitang;
output.ObjectSpacePosition = TransformWorldToObject(input.positionWS);
output.AbsoluteWorldSpacePosition = GetAbsolutePositionWS(input.positionWS);
#if UNITY_UV_STARTS_AT_TOP
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x < 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#else
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x > 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#endif
output.NDCPosition = output.PixelPosition.xy / _ScreenParams.xy;
output.NDCPosition.y = 1.0f - output.NDCPosition.y;
#if defined(UNITY_UIE_INCLUDED)
#else
#endif
#if UNITY_ANY_INSTANCING_ENABLED
#else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect.
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign = IS_FRONT_VFACE(input.cullFace, true, false);
#else
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
#endif
#undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
return output;
}
// --------------------------------------------------
// Build Surface Data
void GetSurfaceData(Varyings input, float4 positionCS, float angleFadeFactor, out DecalSurfaceData surfaceData)
{
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_FORWARD_EMISSIVE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
half4x4 normalToWorld = UNITY_ACCESS_INSTANCED_PROP(Decal, _NormalToWorld);
half fadeFactor = clamp(normalToWorld[0][3], 0.0f, 1.0f) * angleFadeFactor;
float2 scale = float2(normalToWorld[3][0], normalToWorld[3][1]);
float2 offset = float2(normalToWorld[3][2], normalToWorld[3][3]);
input.texCoord0.xy = input.texCoord0.xy * scale + offset;
half3 normalWS = TransformObjectToWorldDir(half3(0, 1, 0));
half3 tangentWS = TransformObjectToWorldDir(half3(1, 0, 0));
half3 bitangentWS = TransformObjectToWorldDir(half3(0, 0, 1));
half sign = dot(cross(normalWS, tangentWS), bitangentWS) > 0 ? 1 : -1;
input.normalWS.xyz = normalWS;
input.tangentWS.xyzw = half4(tangentWS, sign);
#else
#if defined(LOD_FADE_CROSSFADE) && USE_UNITY_CROSSFADE
LODFadeCrossFade(positionCS);
#endif
half fadeFactor = half(1.0);
#endif
SurfaceDescriptionInputs surfaceDescriptionInputs = BuildSurfaceDescriptionInputs(input);
SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
// setup defaults -- these are used if the graph doesn't output a value
ZERO_INITIALIZE(DecalSurfaceData, surfaceData);
surfaceData.occlusion = half(1.0);
surfaceData.smoothness = half(0);
#ifdef _MATERIAL_AFFECTS_NORMAL
surfaceData.normalWS.w = half(1.0);
#else
surfaceData.normalWS.w = half(0.0);
#endif
// copy across graph values, if defined
surfaceData.baseColor.xyz = half3(surfaceDescription.BaseColor);
surfaceData.baseColor.w = half(surfaceDescription.Alpha * fadeFactor);
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
#if defined(_MATERIAL_AFFECTS_NORMAL)
surfaceData.normalWS.xyz = normalize(mul((half3x3)normalToWorld, surfaceDescription.NormalTS.xyz));
#else
surfaceData.normalWS.xyz = normalize(normalToWorld[2].xyz);
#endif
#elif (SHADERPASS == SHADERPASS_DBUFFER_MESH) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_MESH) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_MESH)
#if defined(_MATERIAL_AFFECTS_NORMAL)
float sgn = input.tangentWS.w; // should be either +1 or -1
float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz);
half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz);
// We need to normalize as we use mikkt tangent space and this is expected (tangent space is not normalize)
surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld));
#else
surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); // Default to vertex normal
#endif
#endif
surfaceData.normalWS.w = surfaceDescription.NormalAlpha * fadeFactor;
// In case of Smoothness / AO / Metal, all the three are always computed but color mask can change
surfaceData.metallic = half(surfaceDescription.Metallic);
surfaceData.occlusion = half(surfaceDescription.Occlusion);
surfaceData.smoothness = half(surfaceDescription.Smoothness);
surfaceData.MAOSAlpha = half(surfaceDescription.MAOSAlpha * fadeFactor);
}
// --------------------------------------------------
// Main
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl"
<Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline#1_Decal Material Volume.shadergraph<00><><EFBFBD><EFBFBD>{
<00><01><><EFBFBD><EFBFBD>JwI<77><49><EFBFBD>3<EFBFBD>@_ LIGHTMAP_ON_DYNAMICLIGHTMAP_ON_DIRLIGHTMAP_COMBINED_USE_LEGACY_LIGHTMAPS_LIGHTMAP_BICUBIC_SAMPLING_REFLECTION_PROBE_ROTATION__MAIN_LIGHT_SHADOWS_MAIN_LIGHT_SHADOWS_CASCADE_MAIN_LIGHT_SHADOWS_SCREEN__ADDITIONAL_LIGHTS_VERTEX_ADDITIONAL_LIGHTS_LIGHTMAP_SHADOW_MIXING_SHADOWS_SHADOWMASK__CLUSTER_LIGHT_LOOP_DECAL_NORMAL_BLEND_LOW_DECAL_NORMAL_BLEND_MEDIUM_DECAL_NORMAL_BLEND_HIGH_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2__ADDITIONAL_LIGHT_SHADOWS_ _SHADOWS_SOFT_SHADOWS_SOFT_LOW_SHADOWS_SOFT_MEDIUM_SHADOWS_SOFT_HIGH_ DEBUG_DISPLAY_ LIGHTMAP_ON_DYNAMICLIGHTMAP_ON_DIRLIGHTMAP_COMBINED_USE_LEGACY_LIGHTMAPS_LIGHTMAP_BICUBIC_SAMPLING_REFLECTION_PROBE_ROTATION__MAIN_LIGHT_SHADOWS_MAIN_LIGHT_SHADOWS_CASCADE_MAIN_LIGHT_SHADOWS_SCREEN__ADDITIONAL_LIGHTS_VERTEX_ADDITIONAL_LIGHTS_LIGHTMAP_SHADOW_MIXING_SHADOWS_SHADOWMASK__CLUSTER_LIGHT_LOOP_DECAL_NORMAL_BLEND_LOW_DECAL_NORMAL_BLEND_MEDIUM_DECAL_NORMAL_BLEND_HIGH_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2&_FOVEATED_RENDERING_NON_UNIFORM_RASTER! DOTS_INSTANCING_ON<00><> SHADOWS_SOFT<46>DIRLIGHTMAP_COMBINED<45>DYNAMICLIGHTMAP_ON<00>SHADOWS_SCREEN<00> INSTANCING_ONPROCEDURAL_INSTANCING_ON@STEREO_MULTIVIEW_ON<00>STEREO_INSTANCING_ON<4F>"UNITY_DEVICE_SUPPORTS_NATIVE_16BIT (UNITY_DEVICE_SUPPORTS_INLINE_RAY_TRACING<00>_ADDITIONAL_LIGHT_SHADOWS _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH DEBUG_DISPLAY LIGHTMAP_ON DYNAMICLIGHTMAP_ON DIRLIGHTMAP_COMBINED USE_LEGACY_LIGHTMAPS LIGHTMAP_BICUBIC_SAMPLING REFLECTION_PROBE_ROTATION _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK _CLUSTER_LIGHT_LOOP _DECAL_NORMAL_BLEND_LOW _DECAL_NORMAL_BLEND_MEDIUM _DECAL_NORMAL_BLEND_HIGH _DECAL_LAYERS DOTS_INSTANCING_ON _FOVEATED_RENDERING_NON_UNIFORM_RASTER PROBE_VOLUMES_L1 PROBE_VOLUMES_L2 INSTANCING_ON FOG_LINEAR FOG_EXP FOG_EXP2<00><>y<>#if defined(SHADER_STAGE_VERTEX)
#define LIGHTMAP_ON_KEYWORD_DECLARED 1
#define DYNAMICLIGHTMAP_ON_KEYWORD_DECLARED 1
#define DIRLIGHTMAP_COMBINED_KEYWORD_DECLARED 1
#define USE_LEGACY_LIGHTMAPS_KEYWORD_DECLARED 1
#define LIGHTMAP_BICUBIC_SAMPLING_KEYWORD_DECLARED 1
#define REFLECTION_PROBE_ROTATION_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_CASCADE_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_SCREEN_KEYWORD_DECLARED 1
#define LIGHTMAP_SHADOW_MIXING_KEYWORD_DECLARED 1
#define _MIXED_LIGHTING_SUBTRACTIVE_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_LOW_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_MEDIUM_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_HIGH_KEYWORD_DECLARED 1
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
#if defined(SHADER_STAGE_FRAGMENT)
#define _SHADOWS_SOFT_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_LOW_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_MEDIUM_KEYWORD_DECLARED 1
#define _SHADOWS_SOFT_HIGH_KEYWORD_DECLARED 1
#define _GBUFFER_NORMALS_OCT_KEYWORD_DECLARED 1
#define _RENDER_PASS_ENABLED_KEYWORD_DECLARED 1
#define LIGHTMAP_ON_KEYWORD_DECLARED 1
#define DYNAMICLIGHTMAP_ON_KEYWORD_DECLARED 1
#define DIRLIGHTMAP_COMBINED_KEYWORD_DECLARED 1
#define USE_LEGACY_LIGHTMAPS_KEYWORD_DECLARED 1
#define LIGHTMAP_BICUBIC_SAMPLING_KEYWORD_DECLARED 1
#define REFLECTION_PROBE_ROTATION_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_CASCADE_KEYWORD_DECLARED 1
#define _MAIN_LIGHT_SHADOWS_SCREEN_KEYWORD_DECLARED 1
#define LIGHTMAP_SHADOW_MIXING_KEYWORD_DECLARED 1
#define _MIXED_LIGHTING_SUBTRACTIVE_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_LOW_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_MEDIUM_KEYWORD_DECLARED 1
#define _DECAL_NORMAL_BLEND_HIGH_KEYWORD_DECLARED 1
#define _DECAL_LAYERS_KEYWORD_DECLARED 1
#define DOTS_INSTANCING_ON_KEYWORD_DECLARED 1
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L1_KEYWORD_DECLARED 1
#define PROBE_VOLUMES_L2_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#define FOG_LINEAR_KEYWORD_DECLARED 1
#define FOG_EXP_KEYWORD_DECLARED 1
#define FOG_EXP2_KEYWORD_DECLARED 1
#endif
cbuffer UnityDynamicKeywords {
int _FOVEATED_RENDERING_NON_UNIFORM_RASTER;
};
#line 3395 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
#define UNITY_INSTANCED_LOD_FADE
#define UNITY_INSTANCED_SH
#define UNITY_INSTANCED_LIGHTMAPSTS
#define UNITY_INSTANCED_RENDERER_BOUNDS
#line 3395 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
/* UNITY: Original start of shader */
// Pragmas
#pragma target 4.5
#pragma exclude_renderers gles3 glcore
#pragma vertex Vert
#pragma fragment Frag
#pragma multi_compile_instancing
#pragma editor_sync_compilation
// Keywords
#pragma multi_compile _ LIGHTMAP_ON
#pragma multi_compile _ DYNAMICLIGHTMAP_ON
#pragma multi_compile _ DIRLIGHTMAP_COMBINED
#pragma multi_compile _ USE_LEGACY_LIGHTMAPS
#pragma multi_compile _ LIGHTMAP_BICUBIC_SAMPLING
#pragma multi_compile _ REFLECTION_PROBE_ROTATION
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
#pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
#pragma multi_compile _ LIGHTMAP_SHADOW_MIXING
#pragma multi_compile _ _MIXED_LIGHTING_SUBTRACTIVE
#pragma multi_compile _DECAL_NORMAL_BLEND_LOW _DECAL_NORMAL_BLEND_MEDIUM _DECAL_NORMAL_BLEND_HIGH
#pragma multi_compile _ _DECAL_LAYERS
#pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
#pragma multi_compile_fragment _ _RENDER_PASS_ENABLED
// GraphKeywords: <None>
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
// Defines
#define ATTRIBUTES_NEED_NORMAL
#define ATTRIBUTES_NEED_TANGENT
#define ATTRIBUTES_NEED_TEXCOORD0
#define ATTRIBUTES_NEED_TEXCOORD1
#define ATTRIBUTES_NEED_TEXCOORD2
#define VARYINGS_NEED_POSITION_WS
#define VARYINGS_NEED_NORMAL_WS
#define VARYINGS_NEED_TANGENT_WS
#define VARYINGS_NEED_TEXCOORD0
#define VARYINGS_NEED_FOG_AND_VERTEX_LIGHT
#define VARYINGS_NEED_SH
#define VARYINGS_NEED_STATIC_LIGHTMAP_UV
#define VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV
#define VARYINGS_NEED_SHADOW_COORD
#define HAVE_MESH_MODIFICATION
#define SHADERPASS SHADERPASS_DECAL_GBUFFER_MESH
#define _MATERIAL_AFFECTS_ALBEDO 1
#define _MATERIAL_AFFECTS_NORMAL 1
#define _MATERIAL_AFFECTS_NORMAL_BLEND 1
#define _MATERIAL_AFFECTS_MAOS 1
// Includes
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/GBufferOutput.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl"
// -- Properties used by ScenePickingPass
#ifdef SCENEPICKINGPASS
float4 _SelectionID;
#endif
#if _RENDER_PASS_ENABLED
#define GBUFFER3 0
FRAMEBUFFER_INPUT_X_FLOAT(GBUFFER3);
#define GBUFFER4 1
FRAMEBUFFER_INPUT_X_UINT(GBUFFER4);
#endif
// --------------------------------------------------
// Structs and Packing
struct Attributes
{
float3 positionOS : POSITION;
float3 normalOS : NORMAL;
float4 tangentOS : TANGENT;
float4 uv0 : TEXCOORD0;
float4 uv1 : TEXCOORD1;
float4 uv2 : TEXCOORD2;
#if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID)
uint instanceID : INSTANCEID_SEMANTIC;
#endif
};
struct Varyings
{
float4 positionCS : SV_POSITION;
float3 positionWS;
float3 normalWS;
float4 tangentWS;
float4 texCoord0;
#if defined(LIGHTMAP_ON)
float2 staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
float2 dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
float3 sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
float4 probeOcclusion;
#endif
float4 fogFactorAndVertexLight;
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
float4 shadowCoord;
#endif
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
struct SurfaceDescriptionInputs
{
float3 WorldSpaceNormal;
float3 TangentSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 ObjectSpacePosition;
float3 AbsoluteWorldSpacePosition;
float2 NDCPosition;
float2 PixelPosition;
};
struct VertexDescriptionInputs
{
};
struct PackedVaryings
{
float4 positionCS : SV_POSITION;
#if defined(LIGHTMAP_ON)
float2 staticLightmapUV : INTERP0;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
float2 dynamicLightmapUV : INTERP1;
#endif
#if !defined(LIGHTMAP_ON)
float3 sh : INTERP2;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
float4 probeOcclusion : INTERP3;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
float4 shadowCoord : INTERP4;
#endif
float4 tangentWS : INTERP5;
float4 texCoord0 : INTERP6;
float4 fogFactorAndVertexLight : INTERP7;
float3 positionWS : INTERP8;
float3 normalWS : INTERP9;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
PackedVaryings PackVaryings (Varyings input)
{
PackedVaryings output;
ZERO_INITIALIZE(PackedVaryings, output);
output.positionCS = input.positionCS;
#if defined(LIGHTMAP_ON)
output.staticLightmapUV = input.staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
output.dynamicLightmapUV = input.dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
output.sh = input.sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
output.probeOcclusion = input.probeOcclusion;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
output.shadowCoord = input.shadowCoord;
#endif
output.tangentWS.xyzw = input.tangentWS;
output.texCoord0.xyzw = input.texCoord0;
output.fogFactorAndVertexLight.xyzw = input.fogFactorAndVertexLight;
output.positionWS.xyz = input.positionWS;
output.normalWS.xyz = input.normalWS;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
Varyings UnpackVaryings (PackedVaryings input)
{
Varyings output;
output.positionCS = input.positionCS;
#if defined(LIGHTMAP_ON)
output.staticLightmapUV = input.staticLightmapUV;
#endif
#if defined(DYNAMICLIGHTMAP_ON)
output.dynamicLightmapUV = input.dynamicLightmapUV;
#endif
#if !defined(LIGHTMAP_ON)
output.sh = input.sh;
#endif
#if defined(USE_APV_PROBE_OCCLUSION)
output.probeOcclusion = input.probeOcclusion;
#endif
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
output.shadowCoord = input.shadowCoord;
#endif
output.tangentWS = input.tangentWS.xyzw;
output.texCoord0 = input.texCoord0.xyzw;
output.fogFactorAndVertexLight = input.fogFactorAndVertexLight.xyzw;
output.positionWS = input.positionWS.xyz;
output.normalWS = input.normalWS.xyz;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
// --------------------------------------------------
// Graph
// Graph Properties
CBUFFER_START(UnityPerMaterial)
float4 _Color_TexelSize;
float4 _Normal_TexelSize;
float4 _Mask_TexelSize;
float _TilesPerMeter;
float _DrawOrder;
float _DecalMeshBiasType;
float _DecalMeshDepthBias;
float _DecalMeshViewBias;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
CBUFFER_END
// Object and Global properties
SAMPLER(SamplerState_Linear_Repeat);
TEXTURE2D(_Color);
SAMPLER(sampler_Color);
TEXTURE2D(_Normal);
SAMPLER(sampler_Normal);
TEXTURE2D(_Mask);
SAMPLER(sampler_Mask);
// Graph Includes
#include_with_pragmas "Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline/GetSceneNormal.hlsl"
// Graph Functions
void Unity_Add_float3(float3 A, float3 B, out float3 Out)
{
Out = A + B;
}
void Unity_OneMinus_float3(float3 In, out float3 Out)
{
Out = 1 - In;
}
void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out)
{
Out = A * B;
}
void Unity_Multiply_float_float(float A, float B, out float Out)
{
Out = A * B;
}
void Unity_Saturate_float(float In, out float Out)
{
Out = saturate(In);
}
struct Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float
{
float3 ObjectSpacePosition;
};
void SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float _Sharpness, Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float IN, out float Mask_1)
{
float3 _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3;
Unity_Add_float3(IN.ObjectSpacePosition, float3(0.5, 0.5, 0.5), _Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3);
float3 _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3;
Unity_OneMinus_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3);
float3 _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3;
Unity_Multiply_float3_float3(_Add_54a0e6a92bc54d398974c36131327a71_Out_2_Vector3, _OneMinus_b69452e66116496c9fb73a6e1e311464_Out_1_Vector3, _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3);
float _Split_040f2669b21e47e0b7644de186562ac4_R_1_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[0];
float _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[1];
float _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float = _Multiply_96ad1f89ec964b85920a6b210a339e0c_Out_2_Vector3[2];
float _Split_040f2669b21e47e0b7644de186562ac4_A_4_Float = 0;
float _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float;
Unity_Multiply_float_float(_Split_040f2669b21e47e0b7644de186562ac4_R_1_Float, _Split_040f2669b21e47e0b7644de186562ac4_G_2_Float, _Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float);
float _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float;
Unity_Multiply_float_float(_Multiply_43842b06142b4e3d86c6a4ff082e7690_Out_2_Float, _Split_040f2669b21e47e0b7644de186562ac4_B_3_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float);
float _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float;
Unity_Multiply_float_float(_Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_881185ecd63d4194a06af27c7ac3001e_Out_2_Float, _Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float);
float _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float = _Sharpness;
float _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float;
Unity_Multiply_float_float(_Multiply_7cdc1e1683824f8aa6ec47343ed9da06_Out_2_Float, _Property_a20f488a72284671a89a8d80f60220f1_Out_0_Float, _Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float);
float _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
Unity_Saturate_float(_Multiply_35bd862573e44fe3b04b82db39a32aee_Out_2_Float, _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float);
Mask_1 = _Saturate_49d906b81fbd4031a81cfb0ba44f83f4_Out_1_Float;
}
void Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDY' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddy(In);
}
void Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(float3 In, out float3 Out)
{
#if defined(SHADER_STAGE_RAY_TRACING) && defined(RAYTRACING_SHADER_GRAPH_DEFAULT)
#error 'DDX' node is not supported in ray tracing, please provide an alternate implementation, relying for instance on the 'Raytracing Quality' keyword
#endif
Out = ddx(In);
}
void Unity_CrossProduct_float(float3 A, float3 B, out float3 Out)
{
Out = cross(A, B);
}
void Unity_Normalize_float3(float3 In, out float3 Out)
{
Out = normalize(In);
}
struct Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float
{
float3 WorldSpaceNormal;
float3 WorldSpaceTangent;
float3 WorldSpaceBiTangent;
float3 AbsoluteWorldSpacePosition;
};
void SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(int _Space, Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float IN, out float3 Out_1)
{
float3 _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3;
Unity_DDY_0e907faf81734c558aba6597c2a95dec_float3(IN.AbsoluteWorldSpacePosition, _DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3);
float3 _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3;
Unity_DDX_a3b8c8bd55e349e980d104178e569227_float3(IN.AbsoluteWorldSpacePosition, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3);
float3 _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
Unity_CrossProduct_float(_DDY_0e907faf81734c558aba6597c2a95dec_Out_1_Vector3, _DDX_a3b8c8bd55e349e980d104178e569227_Out_1_Vector3, _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3);
float3 _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
_Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3 = TransformWorldToObjectNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
_Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3 = TransformWorldToViewNormal(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, false);
float3 _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3 = TransformWorldToTangent(_CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3.xyz, tangentTransform, false);
}
float3 _Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3;
if (_Space == 0)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
else if (_Space == 1)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_87f746fe95c141f49c4a384d6514b2f2_Out_1_Vector3;
}
else if (_Space == 2)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _CrossProduct_e7988e207bce4b3e9d90ff02f1716bb6_Out_2_Vector3;
}
else if (_Space == 3)
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_8d417530668644b58d83669f29f62b52_Out_1_Vector3;
}
else
{
_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3 = _Transform_5f0973a3c25d42ca88ddf98cca780606_Out_1_Vector3;
}
float3 _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
Unity_Normalize_float3(_Space_baa2c6909f8445c1929d4b5b069539b9_Out_0_Vector3, _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3);
Out_1 = _Normalize_f0ef3f4e40184ff4b5e1766a11c6d7ea_Out_1_Vector3;
}
// unity-custom-func-begin
void SwitchOnSRP_float(float3 URP, float3 HDRP, out float3 Out){
#if defined(UNIVERSAL_PIPELINE_CORE_INCLUDED)
Out = URP;
#else
Out = HDRP;
#endif
}
// unity-custom-func-end
// Graph Vertex
struct VertexDescription
{
};
VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
{
VertexDescription description = (VertexDescription)0;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
float3 BaseColor;
float Alpha;
float3 NormalTS;
float NormalAlpha;
float Metallic;
float Occlusion;
float Smoothness;
float MAOSAlpha;
};
SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
{
SurfaceDescription surface = (SurfaceDescription)0;
UnityTexture2D _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Color);
float4 _ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4 = float4(IN.NDCPosition.xy, 0, 0);
float3 _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3;
GetSceneNormal_float((_ScreenPosition_9d137c4e692a4692b2059d665a76da71_Out_0_Vector4.xy), _GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3);
float _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float = _TilesPerMeter;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_68493394e5a142309b873d6cd7c2747b_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_68493394e5a142309b873d6cd7c2747b_Blend /= dot(Triplanar_68493394e5a142309b873d6cd7c2747b_Blend, 1.0);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_X = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.zy);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Y = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xz);
float4 Triplanar_68493394e5a142309b873d6cd7c2747b_Z = SAMPLE_TEXTURE2D(_Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.tex, _Property_00e8bba0f88845b5bbb6a571d2fd088b_Out_0_Texture2D.samplerstate, Triplanar_68493394e5a142309b873d6cd7c2747b_UV.xy);
float4 _Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4 = Triplanar_68493394e5a142309b873d6cd7c2747b_X * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.x + Triplanar_68493394e5a142309b873d6cd7c2747b_Y * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.y + Triplanar_68493394e5a142309b873d6cd7c2747b_Z * Triplanar_68493394e5a142309b873d6cd7c2747b_Blend.z;
Bindings_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14;
_DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14.ObjectSpacePosition = IN.ObjectSpacePosition;
float _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
SG_DecalEdgeMask_ea046900739fbcc4498f7b47f45545c9_float(float(500000), _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14, _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float);
UnityTexture2D _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Normal);
Bindings_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float _FaceNormal_9e1486c25af1475e95e303471cd85801;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceNormal = IN.WorldSpaceNormal;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceTangent = IN.WorldSpaceTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.WorldSpaceBiTangent = IN.WorldSpaceBiTangent;
_FaceNormal_9e1486c25af1475e95e303471cd85801.AbsoluteWorldSpacePosition = IN.AbsoluteWorldSpacePosition;
float3 _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3;
SG_FaceNormal_e1024532a1a801f41a6f45f93c8da7a8_float(2, _FaceNormal_9e1486c25af1475e95e303471cd85801, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3);
float3 _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3;
SwitchOnSRP_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, _FaceNormal_9e1486c25af1475e95e303471cd85801_Out_1_Vector3, _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3);
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend = SafePositivePow_float(_SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend /= (Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z ).xxx;
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_X = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.zy));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xz));
float3 Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = UnpackNormal(SAMPLE_TEXTURE2D(_Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.tex, _Property_acf574d4edee47ee9f115a62aeec6a59_Out_0_Texture2D.samplerstate, Triplanar_f7cd4cce612a452abe14bc0016c02901_UV.xy));
Triplanar_f7cd4cce612a452abe14bc0016c02901_X = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.zy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.x);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Y = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xz, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.y);
Triplanar_f7cd4cce612a452abe14bc0016c02901_Z = float3(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xy + _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.xy, abs(Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.z) * _SwitchOnSRPCustomFunction_88874f778e7f4523a6827ccd047b807d_Out_2_Vector3.z);
float4 _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4 = float4(Triplanar_f7cd4cce612a452abe14bc0016c02901_X.zyx * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.x + Triplanar_f7cd4cce612a452abe14bc0016c02901_Y.xzy * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.y + Triplanar_f7cd4cce612a452abe14bc0016c02901_Z.xyz * Triplanar_f7cd4cce612a452abe14bc0016c02901_Blend.z, 1);
{
// Converting Normal from AbsoluteWorld to Tangent via world space
float3 world;
world = _Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb;
{
float3x3 tangentTransform = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.rgb = TransformWorldToTangent(world, tangentTransform, true);
}
}
UnityTexture2D _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D = UnityBuildTexture2DStructNoScale(_Mask);
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV = IN.AbsoluteWorldSpacePosition * _Property_4d062f4aba4b455f9bf1f82d30edba18_Out_0_Float;
float3 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend = SafePositivePow_float(_GetSceneNormalCustomFunction_ad3905a6e8c648758cecbd4fad673c69_WorldNormal_1_Vector3, min(float(8), floor(log2(Min_float())/log2(1/sqrt(3)))) );
Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend /= dot(Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend, 1.0);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.zy);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xz);
float4 Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z = SAMPLE_TEXTURE2D(_Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.tex, _Property_418b3ba351a543d4a38db1eaa91d2e1f_Out_0_Texture2D.samplerstate, Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_UV.xy);
float4 _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4 = Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_X * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.x + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Y * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.y + Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Z * Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Blend.z;
float _Split_69497f2d37a849768fdedd210c547a22_R_1_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[0];
float _Split_69497f2d37a849768fdedd210c547a22_G_2_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[1];
float _Split_69497f2d37a849768fdedd210c547a22_B_3_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[2];
float _Split_69497f2d37a849768fdedd210c547a22_A_4_Float = _Triplanar_90b9f2b0332a42c987b9ae8dd9f25335_Out_0_Vector4[3];
surface.BaseColor = (_Triplanar_68493394e5a142309b873d6cd7c2747b_Out_0_Vector4.xyz);
surface.Alpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.NormalTS = (_Triplanar_f7cd4cce612a452abe14bc0016c02901_Out_0_Vector4.xyz);
surface.NormalAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
surface.Metallic = _Split_69497f2d37a849768fdedd210c547a22_R_1_Float;
surface.Occlusion = _Split_69497f2d37a849768fdedd210c547a22_G_2_Float;
surface.Smoothness = _Split_69497f2d37a849768fdedd210c547a22_A_4_Float;
surface.MAOSAlpha = _DecalEdgeMask_64beaa5d57e14ae5b73dc0ea68331b14_Mask_1_Float;
return surface;
}
// --------------------------------------------------
// Build Graph Inputs
// $features.graphVertex: $include("VertexAnimation.template.hlsl")
// ^ ERROR: $include cannot find file : VertexAnimation.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
// $features.graphPixel: $include("SharedCode.template.hlsl")
// ^ ERROR: $include cannot find file : SharedCode.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
{
SurfaceDescriptionInputs output;
ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
/* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
// must use interpolated tangent, bitangent and normal before they are normalized in the pixel shader.
float3 unnormalizedNormalWS = input.normalWS;
const float renormFactor = 1.0 / length(unnormalizedNormalWS);
// use bitangent on the fly like in hdrp
// IMPORTANT! If we ever support Flip on double sided materials ensure bitangent and tangent are NOT flipped.
float crossSign = (input.tangentWS.w > 0.0 ? 1.0 : -1.0) * GetOddNegativeScale();
float3 bitang = crossSign * cross(input.normalWS.xyz, input.tangentWS.xyz);
output.WorldSpaceNormal = renormFactor*input.normalWS.xyz; // we want a unit length Normal Vector node in shader graph
output.TangentSpaceNormal = float3(0.0f, 0.0f, 1.0f);
// to preserve mikktspace compliance we use same scale renormFactor as was used on the normal.
// This is explained in section 2.2 in "surface gradient based bump mapping framework"
output.WorldSpaceTangent = renormFactor*input.tangentWS.xyz;
output.WorldSpaceBiTangent = renormFactor*bitang;
output.ObjectSpacePosition = TransformWorldToObject(input.positionWS);
output.AbsoluteWorldSpacePosition = GetAbsolutePositionWS(input.positionWS);
#if UNITY_UV_STARTS_AT_TOP
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x < 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#else
output.PixelPosition = float2(input.positionCS.x, (_ProjectionParams.x > 0) ? (_ScreenParams.y - input.positionCS.y) : input.positionCS.y);
#endif
output.NDCPosition = output.PixelPosition.xy / _ScreenParams.xy;
output.NDCPosition.y = 1.0f - output.NDCPosition.y;
#if defined(UNITY_UIE_INCLUDED)
#else
#endif
#if UNITY_ANY_INSTANCING_ENABLED
#else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect.
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign = IS_FRONT_VFACE(input.cullFace, true, false);
#else
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
#endif
#undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
return output;
}
// --------------------------------------------------
// Build Surface Data
void GetSurfaceData(Varyings input, float4 positionCS, float angleFadeFactor, out DecalSurfaceData surfaceData)
{
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_FORWARD_EMISSIVE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
half4x4 normalToWorld = UNITY_ACCESS_INSTANCED_PROP(Decal, _NormalToWorld);
half fadeFactor = clamp(normalToWorld[0][3], 0.0f, 1.0f) * angleFadeFactor;
float2 scale = float2(normalToWorld[3][0], normalToWorld[3][1]);
float2 offset = float2(normalToWorld[3][2], normalToWorld[3][3]);
input.texCoord0.xy = input.texCoord0.xy * scale + offset;
half3 normalWS = TransformObjectToWorldDir(half3(0, 1, 0));
half3 tangentWS = TransformObjectToWorldDir(half3(1, 0, 0));
half3 bitangentWS = TransformObjectToWorldDir(half3(0, 0, 1));
half sign = dot(cross(normalWS, tangentWS), bitangentWS) > 0 ? 1 : -1;
input.normalWS.xyz = normalWS;
input.tangentWS.xyzw = half4(tangentWS, sign);
#else
#if defined(LOD_FADE_CROSSFADE) && USE_UNITY_CROSSFADE
LODFadeCrossFade(positionCS);
#endif
half fadeFactor = half(1.0);
#endif
SurfaceDescriptionInputs surfaceDescriptionInputs = BuildSurfaceDescriptionInputs(input);
SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
// setup defaults -- these are used if the graph doesn't output a value
ZERO_INITIALIZE(DecalSurfaceData, surfaceData);
surfaceData.occlusion = half(1.0);
surfaceData.smoothness = half(0);
#ifdef _MATERIAL_AFFECTS_NORMAL
surfaceData.normalWS.w = half(1.0);
#else
surfaceData.normalWS.w = half(0.0);
#endif
// copy across graph values, if defined
surfaceData.baseColor.xyz = half3(surfaceDescription.BaseColor);
surfaceData.baseColor.w = half(surfaceDescription.Alpha * fadeFactor);
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
#if defined(_MATERIAL_AFFECTS_NORMAL)
surfaceData.normalWS.xyz = normalize(mul((half3x3)normalToWorld, surfaceDescription.NormalTS.xyz));
#else
surfaceData.normalWS.xyz = normalize(normalToWorld[2].xyz);
#endif
#elif (SHADERPASS == SHADERPASS_DBUFFER_MESH) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_MESH) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_MESH)
#if defined(_MATERIAL_AFFECTS_NORMAL)
float sgn = input.tangentWS.w; // should be either +1 or -1
float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz);
half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz);
// We need to normalize as we use mikkt tangent space and this is expected (tangent space is not normalize)
surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld));
#else
surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); // Default to vertex normal
#endif
#endif
surfaceData.normalWS.w = surfaceDescription.NormalAlpha * fadeFactor;
// In case of Smoothness / AO / Metal, all the three are always computed but color mask can change
surfaceData.metallic = half(surfaceDescription.Metallic);
surfaceData.occlusion = half(surfaceDescription.Occlusion);
surfaceData.smoothness = half(surfaceDescription.Smoothness);
surfaceData.MAOSAlpha = half(surfaceDescription.MAOSAlpha * fadeFactor);
}
// --------------------------------------------------
// Main
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl"
<Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline#1_Decal Material Volume.shadergraph<00>}<7D><>E <00><>)<29><>kq<6B><71>s<02><><EFBFBD>jT@_ LIGHTMAP_ON_DYNAMICLIGHTMAP_ON_DIRLIGHTMAP_COMBINED_USE_LEGACY_LIGHTMAPS_LIGHTMAP_BICUBIC_SAMPLING_REFLECTION_PROBE_ROTATION__MAIN_LIGHT_SHADOWS_MAIN_LIGHT_SHADOWS_CASCADE_MAIN_LIGHT_SHADOWS_SCREEN_LIGHTMAP_SHADOW_MIXING__MIXED_LIGHTING_SUBTRACTIVE_DECAL_NORMAL_BLEND_LOW_DECAL_NORMAL_BLEND_MEDIUM_DECAL_NORMAL_BLEND_HIGH_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2_ _SHADOWS_SOFT_SHADOWS_SOFT_LOW_SHADOWS_SOFT_MEDIUM_SHADOWS_SOFT_HIGH__GBUFFER_NORMALS_OCT__RENDER_PASS_ENABLED_ LIGHTMAP_ON_DYNAMICLIGHTMAP_ON_DIRLIGHTMAP_COMBINED_USE_LEGACY_LIGHTMAPS_LIGHTMAP_BICUBIC_SAMPLING_REFLECTION_PROBE_ROTATION__MAIN_LIGHT_SHADOWS_MAIN_LIGHT_SHADOWS_CASCADE_MAIN_LIGHT_SHADOWS_SCREEN_LIGHTMAP_SHADOW_MIXING__MIXED_LIGHTING_SUBTRACTIVE_DECAL_NORMAL_BLEND_LOW_DECAL_NORMAL_BLEND_MEDIUM_DECAL_NORMAL_BLEND_HIGH_ _DECAL_LAYERS_DOTS_INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER_PROBE_VOLUMES_L1PROBE_VOLUMES_L2__ INSTANCING_ON__
FOG_LINEARFOG_EXPFOG_EXP2&_FOVEATED_RENDERING_NON_UNIFORM_RASTER<00><> DOTS_INSTANCING_ON<00><> SHADOWS_SOFT<46>DIRLIGHTMAP_COMBINED<45>DYNAMICLIGHTMAP_ON<00>SHADOWS_SCREEN<00> INSTANCING_ONPROCEDURAL_INSTANCING_ON@STEREO_MULTIVIEW_ON<00>STEREO_INSTANCING_ON<4F>"UNITY_DEVICE_SUPPORTS_NATIVE_16BIT (UNITY_DEVICE_SUPPORTS_INLINE_RAY_TRACINGL_SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH _GBUFFER_NORMALS_OCT _RENDER_PASS_ENABLED LIGHTMAP_ON DYNAMICLIGHTMAP_ON DIRLIGHTMAP_COMBINED USE_LEGACY_LIGHTMAPS LIGHTMAP_BICUBIC_SAMPLING REFLECTION_PROBE_ROTATION _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN LIGHTMAP_SHADOW_MIXING _MIXED_LIGHTING_SUBTRACTIVE _DECAL_NORMAL_BLEND_LOW _DECAL_NORMAL_BLEND_MEDIUM _DECAL_NORMAL_BLEND_HIGH _DECAL_LAYERS DOTS_INSTANCING_ON _FOVEATED_RENDERING_NON_UNIFORM_RASTER PROBE_VOLUMES_L1 PROBE_VOLUMES_L2 INSTANCING_ON FOG_LINEAR FOG_EXP FOG_EXP2,o<00>.#if defined(SHADER_STAGE_VERTEX)
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#endif
#if defined(SHADER_STAGE_FRAGMENT)
#define _FOVEATED_RENDERING_NON_UNIFORM_RASTER_KEYWORD_DECLARED 1
#define INSTANCING_ON_KEYWORD_DECLARED 1
#endif
cbuffer UnityDynamicKeywords {
int _FOVEATED_RENDERING_NON_UNIFORM_RASTER;
};
#line 4101 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
#define UNITY_INSTANCED_LOD_FADE
#define UNITY_INSTANCED_SH
#define UNITY_INSTANCED_LIGHTMAPSTS
#define UNITY_INSTANCED_RENDERER_BOUNDS
#line 4101 ""
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
#endif
/* UNITY: Original start of shader */
// Pragmas
#pragma target 2.0
#pragma multi_compile_instancing
#pragma editor_sync_compilation
#pragma vertex Vert
#pragma fragment Frag
// Keywords
// PassKeywords: <None>
// GraphKeywords: <None>
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
// Defines
#define HAVE_MESH_MODIFICATION
#define SHADERPASS SHADERPASS_DEPTHONLY
#define SCENEPICKINGPASS 1
// Includes
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl"
// -- Properties used by ScenePickingPass
#ifdef SCENEPICKINGPASS
float4 _SelectionID;
#endif
#if _RENDER_PASS_ENABLED
#define GBUFFER3 0
FRAMEBUFFER_INPUT_X_FLOAT(GBUFFER3);
#define GBUFFER4 1
FRAMEBUFFER_INPUT_X_UINT(GBUFFER4);
#endif
// --------------------------------------------------
// Structs and Packing
struct Attributes
{
float3 positionOS : POSITION;
#if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID)
uint instanceID : INSTANCEID_SEMANTIC;
#endif
};
struct Varyings
{
float4 positionCS : SV_POSITION;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
struct SurfaceDescriptionInputs
{
};
struct VertexDescriptionInputs
{
};
struct PackedVaryings
{
float4 positionCS : SV_POSITION;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
uint instanceID : CUSTOM_INSTANCE_ID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
#endif
};
PackedVaryings PackVaryings (Varyings input)
{
PackedVaryings output;
ZERO_INITIALIZE(PackedVaryings, output);
output.positionCS = input.positionCS;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
Varyings UnpackVaryings (PackedVaryings input)
{
Varyings output;
output.positionCS = input.positionCS;
#if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID)
output.instanceID = input.instanceID;
#endif
#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
#endif
#if (defined(UNITY_STEREO_INSTANCING_ENABLED))
output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
output.cullFace = input.cullFace;
#endif
return output;
}
// --------------------------------------------------
// Graph
// Graph Properties
CBUFFER_START(UnityPerMaterial)
float4 _Color_TexelSize;
float4 _Normal_TexelSize;
float4 _Mask_TexelSize;
float _TilesPerMeter;
float _DrawOrder;
float _DecalMeshBiasType;
float _DecalMeshDepthBias;
float _DecalMeshViewBias;
UNITY_TEXTURE_STREAMING_DEBUG_VARS;
CBUFFER_END
// Object and Global properties
SAMPLER(SamplerState_Linear_Repeat);
TEXTURE2D(_Color);
SAMPLER(sampler_Color);
TEXTURE2D(_Normal);
SAMPLER(sampler_Normal);
TEXTURE2D(_Mask);
SAMPLER(sampler_Mask);
// Graph Includes
// GraphIncludes: <None>
// Graph Functions
// GraphFunctions: <None>
// Graph Vertex
struct VertexDescription
{
};
VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
{
VertexDescription description = (VertexDescription)0;
return description;
}
// Graph Pixel
struct SurfaceDescription
{
};
SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
{
SurfaceDescription surface = (SurfaceDescription)0;
return surface;
}
// --------------------------------------------------
// Build Graph Inputs
// $features.graphVertex: $include("VertexAnimation.template.hlsl")
// ^ ERROR: $include cannot find file : VertexAnimation.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
// $features.graphPixel: $include("SharedCode.template.hlsl")
// ^ ERROR: $include cannot find file : SharedCode.template.hlsl. Looked into:
// Packages/com.unity.shadergraph/Editor/Generation/Templates
SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
{
SurfaceDescriptionInputs output;
ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
/* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */
#if UNITY_UV_STARTS_AT_TOP
#else
#endif
#if defined(UNITY_UIE_INCLUDED)
#else
#endif
#if UNITY_ANY_INSTANCING_ENABLED
#else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect.
#endif
#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign = IS_FRONT_VFACE(input.cullFace, true, false);
#else
#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
#endif
#undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
return output;
}
// --------------------------------------------------
// Build Surface Data
void GetSurfaceData(Varyings input, float4 positionCS, float angleFadeFactor, out DecalSurfaceData surfaceData)
{
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_FORWARD_EMISSIVE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
half4x4 normalToWorld = UNITY_ACCESS_INSTANCED_PROP(Decal, _NormalToWorld);
half fadeFactor = clamp(normalToWorld[0][3], 0.0f, 1.0f) * angleFadeFactor;
float2 scale = float2(normalToWorld[3][0], normalToWorld[3][1]);
float2 offset = float2(normalToWorld[3][2], normalToWorld[3][3]);
half3 normalWS = TransformObjectToWorldDir(half3(0, 1, 0));
half3 tangentWS = TransformObjectToWorldDir(half3(1, 0, 0));
half3 bitangentWS = TransformObjectToWorldDir(half3(0, 0, 1));
half sign = dot(cross(normalWS, tangentWS), bitangentWS) > 0 ? 1 : -1;
#else
#if defined(LOD_FADE_CROSSFADE) && USE_UNITY_CROSSFADE
LODFadeCrossFade(positionCS);
#endif
half fadeFactor = half(1.0);
#endif
SurfaceDescriptionInputs surfaceDescriptionInputs = BuildSurfaceDescriptionInputs(input);
SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs);
// setup defaults -- these are used if the graph doesn't output a value
ZERO_INITIALIZE(DecalSurfaceData, surfaceData);
surfaceData.occlusion = half(1.0);
surfaceData.smoothness = half(0);
#ifdef _MATERIAL_AFFECTS_NORMAL
surfaceData.normalWS.w = half(1.0);
#else
surfaceData.normalWS.w = half(0.0);
#endif
// copy across graph values, if defined
#if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR)
#if defined(_MATERIAL_AFFECTS_NORMAL)
#else
surfaceData.normalWS.xyz = normalize(normalToWorld[2].xyz);
#endif
#elif (SHADERPASS == SHADERPASS_DBUFFER_MESH) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_MESH) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_MESH)
#if defined(_MATERIAL_AFFECTS_NORMAL)
float sgn = input.tangentWS.w; // should be either +1 or -1
float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz);
half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz);
// We need to normalize as we use mikkt tangent space and this is expected (tangent space is not normalize)
#else
surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); // Default to vertex normal
#endif
#endif
// In case of Smoothness / AO / Metal, all the three are always computed but color mask can change
}
// --------------------------------------------------
// Main
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl"
<Packages/com.unity.shadergraph/GraphTemplates/Cross Pipeline#1_Decal Material Volume.shadergraph<00><><EFBFBD><EFBFBD>(;<3B><><14>޸<EFBFBD>эLT@_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER__ INSTANCING_ON_&_FOVEATED_RENDERING_NON_UNIFORM_RASTER__ INSTANCING_ON&_FOVEATED_RENDERING_NON_UNIFORM_RASTER
SHADOWS_SOFT<46>DIRLIGHTMAP_COMBINED<45>DYNAMICLIGHTMAP_ON<00>SHADOWS_SCREEN<00> INSTANCING_ONPROCEDURAL_INSTANCING_ON@STEREO_MULTIVIEW_ON<00>STEREO_INSTANCING_ON<4F>"UNITY_DEVICE_SUPPORTS_NATIVE_16BIT (UNITY_DEVICE_SUPPORTS_INLINE_RAY_TRACING4_FOVEATED_RENDERING_NON_UNIFORM_RASTER INSTANCING_ONqa<71><61><EFBFBD><15>A<EFBFBD><41><EFBFBD><EFBFBD>˫<EFBFBD>1_Decal Material Volume<00><><EFBFBD><EFBFBD>K<EFBFBD>E<EFBFBD><00><><EFBFBD><EFBFBD>_Color<00>?<00>?_Mask<00>?<00>?_Normal<00>?<00>?unity_Lightmaps<00>?<00>?unity_LightmapsInd<00>?<00>?unity_ShadowMasks<00>?<00>?_DecalMeshBiasType_DecalMeshDepthBias_DecalMeshViewBias
_DrawOrder_TilesPerMeter<00>?m<><6D>b<EFBFBD>O<EFBFBD><4F>j<EFBFBD>[<5B><>@B<>/<2F><>+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>E<EFBFBD><00>y<EFBFBD>Decal Material VolumeDecals A decal template that projects a material from the top, side, and front using triplanar projection. Works great for blending terrain materials onto other objects. Angle fade is not enabled in this shader because it projects correctly at any angle.
In order to use decals in URP, you'll need to add the Decal Renderer Feature to URP's Renderer Data asset. In HDRP, decals work automatically so no settings changes are required.
In both render pipelines, you can add a decal to your scene by right-clicking in your scene's Hierarchy panel and selecting Rendering->HDRP (or URP) Decal Projector. Then select the new Decal Projector and assign it a material that uses your Shader Graph asset.
<i>Supported Pipeline(s): HDRP & URP
Active Target: Decal
VFX Graph Support: disabled</i><00><>* <00>y<EFBFBD>eUnity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.ShaderGraph.UniversalMetadata<00>