Skip to content

Instantly share code, notes, and snippets.

@JSandusky
Created February 6, 2019 11:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JSandusky/a7c443121e036270351d4a76cc5e4d27 to your computer and use it in GitHub Desktop.
Save JSandusky/a7c443121e036270351d4a76cc5e4d27 to your computer and use it in GitHub Desktop.
Material graph node definition XML
<graph name="Material" candebug="false" color="orange">
<!--
<in /> = designates an input socket
<out /> = designates an output socket
<metadata></metadata> = can be attached to sockets or nodes themselves
List of Metadata: [NAME], [valid targets] = [purpose/effect]
Variadics (XXX, XXX_glsl, XXX_dx9, XXX_dx11, XXX_hlsl, XXX_cl12, XXX_cl20)
uniform, node = contents will be written during the uniform generation stage
inline, node|socket = code is not emitted contents of the inline are placed as written (constants, etc)
emit, node = body of code to be emitted
Definitions
ifdef, socket = socket will only be traversed if the contents of the <ifdef></ifdef> are found in the generators
#defines list
ifnotdef, socket = opposite of the above, socket will only be traversed if the given #define is not found
attachdef, socket = only valid on final OUTPUT or INPUT nodes
if the socket has any connections then the given #define will be added to the list
semantic_dx11, socket = DX11 vertex data semantic to use when emitting the vertex data structures
semantic_dx9, socket = DX9 vertex data semantic to use when emitting the vertex data structures
vsout_always, socket = contents will be written with VS_OUTPUT data
vsout_semantic_dx11, socket = ???
vsout_semantic_dx9, socket = ???
Special
include, node = the contents will be written during the #include generation step
use .hlsl for shader includes, when generating GLSL all instances of "hlsl" will be replaced "glsl"
error_notdef, node = contents are #define that will be checked for
if this define is not in the list #defines for shader generation than it is an error
for graph traversal to hit this node
-->
<category name="Textures" desc="Built in texture slots">
<node name="Diffuse" guid="abd3d755-d08f-4cfc-bf3a-0dda75d619e0">
<out type="Texture" guid="11cac587-b3ba-43f2-8556-94fce59b2ce9" />
</node>
<node name="Normal Map" guid="30e10af1-4041-4533-8b6a-d2bda07be30e">
<out type="Texture" guid="b6a44a35-8453-43f5-9d1e-04d731d6f38b" />
</node>
<node name="Specular" guid="fd7155b0-488d-4078-a8de-72581dad278a">
<out type="Texture" guid="270300ff-a635-40d7-8cbc-9f81dfd2030b" />
</node>
<node name="Environment Map" guid="480cce9a-7b96-4bcf-9ed9-ba973a5ee555">
<out type="Texture" guid="575ee5e2-c614-4ecc-ad45-18731162d0a5" />
</node>
<node name="Custom #1" guid="f77710b9-4d01-4543-97d7-0874aba0db1d">
<out type="Texture" guid="f06401b1-d654-44e8-9431-eb2c558956ac" />
</node>
<node name="Custom #2" guid="bd3d1212-f940-459b-9bc9-3401add36197">
<out type="Texture" guid="73debd78-c207-4ad1-b44e-966a9ac2b4aa" />
</node>
<node name="Zone Map" guid="f33fa31e-31cd-40c1-8d69-d6b1748c6364">
<out type="Texture" guid="ebb496a7-7eb8-4951-a6f2-a77c9201ce76" />
</node>
</category>
<category name="Texture Sampling" desc="Reading textures" type="pure" color="cornflowerblue">
<node name="Texture 2D" guid="b3b91a21-0c00-423b-9fc3-8c186d4b61c7">
<in type="String" noconnect="true" guid="375e2b19-0afa-4fcf-951a-d490b397c4f7" />
<out type="Texture" guid="51f2f6dd-bf8f-4ebc-a196-118a44bde777" />
<metadata>
<uniform_glsl>sampler2D {0};</uniform_glsl>
<uniform_hlsl>Texture2D t{0}; SamplerState s{0};</uniform_hlsl>
<inline>s{0}</inline>
</metadata>
</node>
<node name="Texture 3D" guid="85c9144f-9390-4b21-a8b3-9fc7f832a950">
<in type="String" noconnect="true" guid="e6b4307b-e4a5-44e1-9a74-cd74a0b66944" />
<out type="Texture" guid="5e702cfd-b439-48bd-9787-48ced71a81e9" />
<metadata>
<uniform_glsl>sampler3D {0};</uniform_glsl>
<uniform_hlsl>Texture3D t{0};\r\nSamplerState s{0};</uniform_hlsl>
<inline>s{0}</inline>
</metadata>
</node>
<node name="Texture Cube" guid="c2e777be-ade7-475d-9163-402c0b7b8bf7">
<in type="String" noconnect="true" guid="ddd8fed2-de0e-4f7c-869d-14cd837528d1" />
<out type="Texture" guid="e232e49e-f55b-46c0-9d5e-e3517069fc61" />
<metadata>
<uniform_glsl>samplerCube {0};</uniform_glsl>
<uniform_hlsl>TextureCube t{0};\r\nSamplerState s{0};</uniform_hlsl>
<inline>s{0}</inline>
</metadata>
</node>
<node name="Zone Environment" guid="6ffeaed9-503a-470b-ac1f-338daf82cba1">
<out type="Texture" guid="1748bdcc-0faf-41c5-9734-771f4c56e9c2" />
<metadata>
<inline>sZoneCubeMap</inline>
</metadata>
</node>
<node name="Shadow Map" guid="ba9a4051-d9a2-405c-bd3d-4706fa862b08">
<out type="Texture" guid="49b154e2-6a2c-4dda-b30c-f09c5b0399dd" />
<metadata>
<inline>sShadowMap</inline>
</metadata>
</node>
<node name="Sample 2D" type="blueprint" tip="Regular texture sampling" guid="1a418ab5-f6bf-411a-bdb5-e742511d480c">
<in type="Texture" guid="31cee5cd-1360-4978-9515-f292833e7102" />
<in name="UV" type="Vector" editable="false" guid="9b94ff3c-993d-4ef1-8578-7f5a50b24566" />
<out type="Vector" guid="1586e2fb-4f72-49fc-b589-f68c9ebdcd26" />
<metadata>
<emit_hlsl>Sample2D({0},{1})</emit_hlsl>
<emit_glsl>Sample2D({0},{1})</emit_glsl>
</metadata>
</node>
<node name="Sample 2D Normal" type="blueprint" tip="Samples a tangent space normal map" guid="2ff42cd3-e75b-4112-b532-c22efbadd7d0">
<in type="Texture" guid="acb05f04-b08e-4964-ab1c-7c21439ffff7" />
<in type="Vector" editable="false" guid="d2a54edc-39a6-469b-a1d7-add32ae33fe7" />
<in name="RG Packed" type="Bool" guid="00280612-29ec-4c09-a94b-6fb43747f82e" />
<out type="Vector" guid="e5bb90c3-d4be-4180-95c7-1c01cb9b4201" />
</node>
<node name="Sample Cube" type="blueprint" tip="Samples an environment cube" guid="9c2e345d-3754-44d4-bda8-24867b5d0eef">
<in type="Texture" guid="c0567dae-281a-4329-9d1d-da8f4096b046" />
<in type="Vector" editable="false" guid="b2107187-3894-456e-871b-3617a26e2e36" />
<out type="Vector" guid="fca8803c-f03b-4a83-b86a-1ba2cfb9df71" />
</node>
<node name="Sample Point Shadow" type="blueprint" tip="Samples a shadow-cube" guid="e1f5ed8e-5857-4b93-8283-4d922035f940">
<in type="Texture" guid="e3e9ee02-b0a8-4d97-965f-163203519364" />
<in name="Pos" type="Vector" editable="false" guid="ea977f95-07d5-4acf-a4e7-f08162ab2ad2" />
<out type="Bool" guid="ed222a52-fb44-4404-8f9c-ebe5f542adb8" />
</node>
<node name="Sample Spot Shadow" type="blueprint" tip="Performs CSSM sampling" guid="084085fe-b03b-4d2f-a1fd-481f488014c3">
<in type="Texture" guid="96f8a38a-287e-44d2-b2ac-13cff2494c9d" />
<in name="Pos" type="Vector" editable="false" guid="bffe59af-0e3f-47c1-af48-1c7e6e698edb" />
<out type="Bool" guid="9273641b-2cb7-4d0f-ba49-5bebd5747152" />
</node>
<node name="Sample Directional Shadow" type="blueprint" tip="Samples the spot shadow texture" guid="af8ae255-6527-45ca-bbee-c850597501ea">
<in type="Texture" guid="dec573b3-c157-40b7-8312-ae6619bfe0b2" />
<in name="Pos" type="Vector" editable="false" guid="f7bc73e0-6947-4727-90b6-3b69fb51d93e" />
<out type="Bool" guid="7702857e-7315-4a76-bd12-a292074c326f" />
</node>
<node name="Triplanar" type="blueprint" tip="Gets a triplanar mapping for the given input coordinates" guid="dda7dfaf-4271-4352-95c4-b42c364c3952">
<in type="Texture" guid="f3ba7849-6ab0-45d0-8d83-14fe01a238fe" />
<in name="Pos" type="Vector" editable="false" guid="c09e839f-24d7-4db2-8691-adadadfaac02" />
<in name="Nor" type="Vector" editable="false" guid="bdbe7846-64bd-4b23-be48-df772ad0878f" />
<in name="Scale" type="Vector" guid="8fbf086c-0dab-493b-ade8-a8e2940abf6b" />
<out type="Vector" guid="588b9194-fad7-4542-b66d-2baa38a66164" />
<metadata>
<include>#include "GRAPH_SamplerSupport.hlsl"</include>
<emit>TriplanarSample({0}, {1}, {2}, {3})</emit>
</metadata>
</node>
<node name="RGBA Splat" guid="b6a3929c-802c-4fc0-bd24-7f65d6129b9b">
<in name="Splat" type="Texture" guid="048e0ef2-cb10-4f0f-8c5a-1d6027145536" />
<in name="Default" type="Texture" guid="d04ab9ed-b31f-4c90-bed8-2805059023bf" />
<in name="R" type="Texture" guid="dee75d24-9023-41af-b648-10ea300a6909" />
<in name="G" type="Texture" guid="ff1523b2-081d-4bf6-a5e0-075b4d88bf33" />
<in name="B" type="Texture" guid="45e9243e-57f7-4204-a0fb-409ad803ca9a" />
<in name="A" type="Texture" guid="9ab6705a-7201-408b-9b9a-973d0761acab" />
<in name="Scale" type="Vector" guid="726ee868-0c18-4ff7-ae37-fd8d465c3721" />
<out type="Vector" guid="4830555d-4e78-4c69-8227-b8293137ffd5" />
</node>
<node name="Dot-Prod Detailmap" guid="fd943451-1cda-41c9-b0aa-2c8a1184a5e8">
<in name="Splat" type="Texture" guid="14e1cbf5-fbe9-4655-8c13-a2e3ad426293" />
<in name="Details" type="Texture" guid="889d1eac-474e-4a55-b3e8-6b53bf5d3e0e" />
<in name="Scale" type="Vector" guid="ef41831a-12ff-4932-8d08-3ebc77e0b7a3" />
<out type="Vector" guid="a7cfa07b-81b3-4d10-8742-d0b15d90bc6b" />
<metadata>
<include>#include "GRAPH_SamplerSupport.hlsl"</include>
<emit>DotProdDetail({0}, {1}, {2})</emit>
</metadata>
</node>
<node name="Color Correct" guid="b8a433e6-ed25-4a06-b420-98dabd759721">
<in type="Texture" guid="f1c3058b-bdfe-4980-bf4a-51c643e9db42" />
<in type="Vector" guid="c70c160d-5183-4b8c-8932-27c7483977ea" />
<out type="Vector" guid="1fa3e34a-9373-44c6-a077-21de684aa4cd" />
</node>
<node name="Gradient Map" guid="642d7426-700b-49b2-91b0-490fd307d6f8">
<in type="Texture" guid="6693cc2e-de84-4c4b-abe2-5bb7d9258654" />
<in name="T" type="Float" guid="8e54c699-e3cb-49dd-ba32-a72406a2b7e2" />
<out type="Vector" guid="7dd3b6d5-b9d3-454f-8f0e-729412f94f27" />
</node>
<node name="Texel Fetch" tip="Sample a 2d texture with exact integer coordinates" guid="6a2c1248-1f00-4f39-83a6-aecab0f14369">
<in type="Texture" guid="28caab9b-bcbe-438e-b3d5-4225755c94c9" />
<in name="Coord" type="Vector" guid="b97b11e6-0606-461a-a88a-964d257df012" />
<out type="Vector" guid="98544c3b-71c0-4e6c-b7ec-1411ec3c5775" />
<metadata>
<emit>SampleExplicit({0}, {1}.xy)</emit>
</metadata>
</node>
</category>
<category name="Constants" desc="Uniform and non-varying values" color="dodgerblue" type="pure">
<node name="PI" guid="1648542e-2560-4dc5-8550-70cbf7f0ebff">
<out type="Float" guid="bdf521f4-d17a-4063-9da5-333e58d4a1c9">
<metadata>
<inline>PI</inline>
</metadata>
</out>
<metadata>
<include>#define PI 3.141596</include>
</metadata>
</node>
<node name="Phi" guid="6b57ca01-288b-4d53-9e74-e66354ea061b">
<out type="Float" guid="7b9ffbfe-874d-4349-b95d-67dfc2893855">
<metadata>
<inline>PHI</inline>
</metadata>
</out>
<metadata>
<include>#define PHI 1.618</include>
</metadata>
</node>
<node name="Tau" guid="d415b3ac-1c31-4f9c-b62d-3ff44531780e">
<out type="Float" guid="2f060cf1-f153-42d3-afc6-388f42d8252c">
<metadata>
<inline>TAU</inline>
</metadata>
</out>
<metadata>
<include>#define TAU 6.283192</include>
</metadata>
</node>
<node name="Root2" guid="a154dbf2-44ca-4588-8121-1a19e2746cb1">
<out type="Float" guid="bff434ce-3e63-4726-859a-d46ffb9c6815">
<metadata>
<inline>ROOT2</inline>
</metadata>
</out>
<metadata>
<include>#define ROOT2 1.41421</include>
</metadata>
</node>
<node name="Euler's" guid="fc7f0f09-6487-4b76-b5e4-000b031cce98">
<out type="Float" guid="4509e4d8-0bff-433d-9707-e4eb8ec55c0a">
<metadata>
<inline>EULER</inline>
</metadata>
</out>
<metadata>
<include>#define EULER 2.71828182845</include>
</metadata>
</node>
<node name="Uniform Float" tip="A value that can be edited in the material" guid="e4d199f5-cddd-4313-9ff7-0a01d2b725d9">
<in type="String" noconnect="true" guid="0a3c87ee-bfc0-455d-997d-5b80012d70d5" />
<out type="Float" guid="e4bf22e4-6ae3-4dd7-b242-a4dab2023367" />
<metadata>
<uniform>uniform float {0};</uniform>
<emit>{0}</emit>
</metadata>
</node>
<node name="Uniform Vector" tip="A value that can be edited in the material" guid="0d9243e3-fc57-455a-8d58-9598ed7d7395">
<in type="String" noconnect="true" guid="c151580f-9939-4585-a82d-bfc16fbff934" />
<out type="Vector" guid="770cf64d-9060-494f-be17-9a87fc138a14" />
<metadata>
<uniform_glsl>uniform vec4 {0};</uniform_glsl>
<uniform_hlsl>uniform float4 {0};</uniform_hlsl>
<uniform_cl>float4 {0};</uniform_cl>
<emit>{0}</emit>
</metadata>
</node>
<node name="Constant Float" tip="An explicit constant value" guid="5db266ff-dfe0-47d9-853c-3b7b0e153832">
<out type="Float" editable="true" guid="7d8fec7c-f97b-416c-9187-ad36528550eb" />
</node>
<node name="Constant Vector" tip="An explicit constant value" guid="a1f71044-f0d4-485e-a69f-0bf609ad2df1">
<out type="Vector" editable="true" guid="5d76590e-47b5-4b81-aef5-ccd9185777ad" />
</node>
<node name="Time" guid="509c1018-7fae-4576-8027-582771330dde">
<out type="Float" guid="e2bc47a4-11ae-4f1c-9061-921845cada75">
<metadata>
<inline>cTime</inline>
</metadata>
</out>
</node>
</category>
<category name="Basic Math" desc="" color="" type="pure">
<node name="ADD" guid="cd475cc7-2902-42b2-a924-9d23ed76c0fe">
<in type="AnyKey" guid="4d63a12a-8275-45e2-92a2-38af7a697707" />
<in type="AnySource" guid="b0cc9e59-de2f-4032-a283-2493a30a265d" />
<out type="AnySource" guid="ed539a5b-a713-4896-b287-2a21561beadc" />
<metadata>
<emit>({0} + {1})</emit>
</metadata>
</node>
<node name="SUBTRACT" guid="1147af7e-efaa-4982-b383-f42e988c80de">
<in type="AnyKey" guid="8f390fb6-f7bb-42fb-9532-db94ec71c838" />
<in type="AnySource" guid="4668404b-39bf-465c-8396-df0489866272" />
<out type="AnySource" guid="90abb63f-5b5d-4ced-aeb8-3c2fc6b15062" />
<metadata>
<emit>({0} - {1})</emit>
</metadata>
</node>
<node name="MULTIPLY" guid="6b1187f4-01f7-404a-93cc-f34ce9820609">
<in type="AnyKey" guid="03b2e6bf-5eda-4672-9440-1ae98c127bf8" />
<in type="AnySource" guid="1e89cea3-c561-42df-8ead-6cc62b4aada8" />
<out type="AnySource" guid="05bfd2f3-9171-4bd6-83f2-68aef39de02b" />
<metadata>
<emit>({0} * {1})</emit>
</metadata>
</node>
<node name="DIVIDE" guid="537d698a-948e-43e4-b5af-b51a2f7e939d">
<in type="AnyKey" guid="68376311-3118-41c3-a54d-2fdd6cfa2348" />
<in type="AnySource" guid="ae100f0f-ca4e-45d1-bebc-072468bf1065" />
<out type="AnySource" guid="47a0197a-22f0-4ea9-b4ab-b39cb877c101" />
<metadata>
<emit>({0} / {1})</emit>
</metadata>
</node>
<node name="Negate" tip="Unary minus" guid="a347fbef-c9af-424c-b226-d9a159fe5824">
<in type="AnyKey" guid="468f42f2-6fbc-47a4-b783-30d0586304ff" />
<out type="AnySource" guid="5762f2cd-473b-4e8e-809d-a89aca3c8930" />
<metadata>
<emit>(-{0})</emit>
</metadata>
</node>
</category>
<category name="Trigonometry" color="cyan" type="pure" desc="SohCahToa and friends">
<node name="Sine" guid="2c464f74-ea86-4326-af1e-78cf26a7ca60">
<in type="AnyKey" guid="50618214-db87-41bd-9307-305776743674" />
<out type="AnySource" guid="9b796f0c-5255-42ae-9838-55d340fc5d01" />
<metadata>
<emit>sin({0})</emit>
</metadata>
</node>
<node name="Cos" guid="8dff2bd5-e734-44e5-8547-cfc09e24d7c4">
<in type="AnyKey" guid="a997fb9a-767d-4a6e-abd1-b9df721dff6e" />
<out type="AnySource" guid="b953e43d-9d61-431d-ae15-147051cb2a98" />
<metadata>
<emit>cos({0})</emit>
</metadata>
</node>
<node name="Tan" guid="183f412c-daad-4e73-a7e1-41b3978ee22f">
<in type="AnyKey" guid="f61fbf18-510e-4419-a8f8-ccaf71c5ccab" />
<out type="AnySource" guid="e7de9f9a-9183-4f74-9459-2d8906e9e0aa" />
<metadata>
<emit>tan({0})</emit>
</metadata>
</node>
<node name="Asine" guid="3eff8873-1a9c-4249-b771-c76b35b3f291">
<in type="AnyKey" guid="5f247d2b-923e-4c99-858d-94bcd4105475" />
<out type="AnySource" guid="339cbac1-2840-4c0c-932d-dfa68270ee0c" />
<metadata>
<emit>asin({0})</emit>
</metadata>
</node>
<node name="Acos" guid="6399c8af-f396-459c-a6d9-cc0c944d7adb">
<in type="AnyKey" guid="a1bc8b03-f708-4d17-8418-82ad0aec28c5" />
<out type="AnySource" guid="c1ee0e14-83e6-4642-b9ea-95fd5f86f7e9" />
<metadata>
<emit>acos({0})</emit>
</metadata>
</node>
<node name="Atan" guid="13b16a51-47f7-4e4d-a436-0bf0bbafbb51">
<in type="AnyKey" guid="0299b575-55e5-448f-8d49-fd29b49e7868" />
<out type="AnySource" guid="885ec5a2-f4ae-4d0f-80a7-43f8dd6d827f" />
<metadata>
<emit>atan({0})</emit>
</metadata>
</node>
<node name="Atan2" guid="b81fa1da-e310-458f-b520-713c4a181bbc">
<in type="AnyKey" guid="821a930f-aa89-48e5-90a6-50a8a4d3d62d" />
<in type="Float" guid="3a450962-da78-400e-94fe-03db4bd6b12d" />
<out type="AnySource" guid="8ea393dd-879b-4037-bb42-4d782b14afef" />
<metadata>
<emit>atan2({0}, {1})</emit>
</metadata>
</node>
</category>
<category name="Extended Math" color="violet" type="pure" desc="More math routines">
<node name="Sqrt" tip="Square root" guid="229fa70a-b13c-4d49-9b7c-334f062f50b6">
<in type="AnyKey" guid="b0b25dc9-09ac-4e4a-bc30-8bbcc25d6cfd" />
<out type="AnySource" guid="79276550-ce72-4eee-9997-554465bcf6a0" />
<metadata>
<emit>sqrt({0})</emit>
</metadata>
</node>
<node name="Recip Sqrt" tip="Reciprocal square root" guid="1298914a-2b8a-4c03-86a4-cd3ad3e7c6f7">
<in type="AnyKey" guid="4532a257-070b-40c2-8484-92e2a86536b4" />
<out type="AnySource" guid="a8a1c9f2-db38-44f4-a293-1c41af117fd8" />
<metadata>
<emit>rsqrt({0})</emit>
</metadata>
</node>
<node name="Pow" tip="Raise the input to a power" guid="353d2eb1-3dae-45c8-bff9-589a9cd9655f">
<in type="AnyKey" guid="2b5d6257-ebef-4f31-a75d-ce75b660c548" />
<in type="Float" guid="7aa02a5c-10b7-480a-b6b3-7266b430a1cf" />
<out type="AnySource" guid="20348ac0-184f-49f6-9a6a-982dcef9edd6" />
<metadata>
<emit>pow({0}, {1})</emit>
</metadata>
</node>
<node name="Log" guid="67ce4113-c0f5-47ff-a646-bebf3d442859">
<in type="AnyKey" guid="d2b3b498-0e9c-460c-9a20-fa97ced1a78c" />
<out type="AnySource" guid="79d175ee-48e9-4519-9a65-84a09ded646a" />
<metadata>
<emit>log({0})</emit>
</metadata>
</node>
<node name="Log2" guid="96419d79-2132-4607-a383-1c1ae166a624">
<in type="AnyKey" guid="0844a706-5cd0-401f-8605-38a83ffdbc6d" />
<out type="AnySource" guid="2efc3f3d-ca6e-40ab-89b6-5eb6bebc554c" />
<metadata>
<emit>log2({0})</emit>
</metadata>
</node>
<node name="Exp" guid="70101e12-c5bc-4956-8ff6-1a8cc55ea9b3">
<in type="AnyKey" guid="b746d766-e0d6-44b0-8218-36a1d813250f" />
<out type="AnySource" guid="1f96411d-b189-4137-8e9b-2d417822879d" />
<metadata>
<emit>exp({0})</emit>
</metadata>
</node>
<node name="Exp2" guid="be6e1959-19c3-4d50-981d-77014133ea39">
<in type="AnyKey" guid="63d5dba7-a21f-4bbf-a646-dad0b4c54b6e" />
<out type="AnySource" guid="55f64d26-1e51-47ca-bc1b-ffa287ee98bd" />
<metadata>
<emit>exp2({0})</emit>
</metadata>
</node>
<node name="Abs" guid="0f5d21d9-5b1c-440c-a184-268baa3b04a5">
<in type="AnyKey" guid="2ffca4ea-33aa-42f1-b8c3-a838bdd412a7" />
<out type="AnySource" guid="54283977-3324-4a35-bce5-1550f8d8c2c6" />
<metadata>
<emit>abs({0})</emit>
</metadata>
</node>
<node name="Sign" guid="16bde129-4fec-4628-9571-24108db89d51">
<in type="AnyKey" guid="2c34e84b-2e45-4e99-a0d5-3bdb3a5629c6" />
<out type="AnySource" guid="056fac25-7782-4c79-8520-2aa9cd4e97ee" />
<metadata>
<emit>sign({0})</emit>
</metadata>
</node>
<node name="Floor" guid="e03f2046-c687-46b6-a655-b2654681412d">
<in type="AnyKey" guid="1df7e0bd-417d-4eef-b5c0-9c1bae34f3d1" />
<out type="AnySource" guid="dc750459-ab39-4cc9-90b8-173ff8b5cef4" />
<metadata>
<emit>floor({0})</emit>
</metadata>
</node>
<node name="Ceil" guid="b2afaa1f-678c-4033-9f23-fa680ceed9a1">
<in type="AnyKey" guid="54a21ce4-84a4-441d-936e-8cd211bbc22e" />
<out type="AnySource" guid="10a59f08-b34e-40e8-a089-7958534726fb" />
<metadata>
<emit>ceil({0})</emit>
</metadata>
</node>
<node name="Frac" guid="42031368-6b3d-4097-a3a2-60a8a3c98602">
<in type="AnyKey" guid="44e9ca4a-1787-4df2-b827-800254fb457c" />
<out type="AnySource" guid="1cb5ceb4-12e7-4aa3-bab5-b5f03cf77e10" />
<metadata>
<emit>frac({0})</emit>
</metadata>
</node>
<node name="FMod" guid="45937f8c-d5fe-4f4f-bb44-51a529a3b8c9">
<in type="AnyKey" guid="8accaf1d-fe9f-47e6-89fb-85e801ce7a91" />
<out type="AnySource" guid="1fcb438e-4a67-45f6-863a-2458e9d40e22" />
<metadata>
<emit>fmod({0}, {1})</emit>
</metadata>
</node>
</category>
<category name="Ranges" color="magenta" type="pure" desc="Multivalued functions">
<node name="Round" tip="Round floating points to the nearest integer value" guid="12a611ee-d445-4c0e-981a-15d650bfea22">
<in type="AnyKey" guid="8f9ad670-e013-4742-a5cf-0cd18b9d41cf" />
<out type="AnySource" guid="2295a66e-a59d-4542-9567-b8f72f562199" />
<metadata>
<emit>round({0})</emit>
</metadata>
</node>
<node name="Min" tip="Take the minimum of two values" guid="2110cd26-db80-4101-aaca-fc5354773a69">
<in type="AnyKey" guid="a1328c76-d7b9-45a1-82c6-a197249c1bac" />
<in type="AnySource" guid="bec88600-55e0-4444-950f-9eb33c0337a3"/>
<out type="AnySource" guid="54e26f71-1ba1-41d6-8357-9885200a3518" />
<metadata>
<emit>min({0}, {1})</emit>
</metadata>
</node>
<node name="Max" tip="Take the maximum of two values" guid="fce99b9a-a346-436a-881a-20a1c3fd9d91">
<in type="AnyKey" guid="b3d77e4a-a576-4f5e-b566-53dd55f1f550" />
<in type="AnySource" guid="3bcfd7b4-17cc-4ebf-a842-bf30842501b0" />
<out type="AnySource" guid="7d5bcea2-897a-41c7-929d-41cb13a8cda2" />
<metadata>
<emit>max({0}, {1})</emit>
</metadata>
</node>
<node name="Clamp" tip="Bound a value between a lower and upper bound" guid="38d2e8d1-76f5-4e88-a7b8-306d5ae4d9d7">
<in type="AnyKey" guid="f71a9ce5-dd49-4656-b745-f7b9d92c40a8" />
<in name="Min" type="AnySource" guid="b51d84f1-fda7-4e74-96d6-33e18eb3572a" />
<in name="Max" type="AnySource" guid="608903f8-7297-468a-87d6-53bc515058e6" />
<out type="AnySource" guid="41d15fc7-4e16-4839-8ef5-2f6315443a0c" />
<metadata>
<emit>clamp({0}, {1}, {2})</emit>
</metadata>
</node>
<node name="Lerp" tip="Interpolate or extrapolate between two values" guid="cee1f913-d408-42da-b78d-bc490eaca0ce">
<in type="AnyKey" guid="cc9e3a5f-5fb0-461b-acc2-6b50f9be260b" />
<in type="AnySource" guid="47d696a0-61d8-42e8-8086-23d89e944e77" />
<in type="Float" guid="50b914cc-e96a-49ec-b3c8-8c3e6215bf5d" />
<out type="AnySource" guid="bd02c98e-eb72-445d-930d-34d7e7040226" />
<metadata>
<emit>lerp({0}, {1}, {2})</emit>
</metadata>
</node>
<node name="Step" tip="Returns 1.0 if B &gt; A, otherwise 0.0" guid="86915bb3-1513-4392-a7c7-fa4b38cd2039">
<in name="A" type="AnyKey" guid="27e4a570-9acf-4fa4-9eb3-5871e75d783f" />
<in name="B" type="AnySource" guid="8e2ed0e3-ae1a-4ecb-ab28-18a51914899c" />
<out type="AnySource" guid="f0b1ef68-e917-4697-9840-93416a254b6a" />
<metadata>
<emit>step({0}, {1})</emit>
</metadata>
</node>
<node name="Smoothstep" tip="Interpolates between two values using a sigmoid curved. Clamped as well." guid="a55919ef-1e46-48e7-9cfc-56283e029f51">
<in name="A" type="AnyKey" guid="0ea736ff-538a-44e4-877f-6595489b50d8" />
<in name="B" type="AnySource" guid="8347381d-d1a6-4314-8349-75fd5e451928" />
<in name="T" type="AnySource" guid="37aa0763-5d49-433b-9b46-e61ae571cf6f" />
<out type="AnySource" guid="d1358cb5-29f9-4039-89df-f5ba0ffeb877" />
<metadata>
<emit>smoothstep({0}, {1}, {2})</emit>
</metadata>
</node>
<node name="Deg to Rad" tip="Convert degrees to radians" guid="f85f91a6-8d3a-4810-a629-0cf604743dbe">
<in type="AnyKey" guid="d5d4a3d5-e03b-4795-a5c7-2710393e80cf" />
<out type="AnySource" guid="19da9cab-b4c7-48de-a24a-579fb5cb064f" />
<metadata>
<emit>radians({0})</emit>
</metadata>
</node>
<node name="Rad To Deg" tip="Convert radians to degrees" guid="9479932e-f190-40b8-af17-16385845f5b1">
<in type="AnyKey" guid="9cd11779-4d34-4d7b-a335-2b894627b9fb" />
<out type="AnySource" guid="fff9c400-ac9a-4d28-b3f8-c92d4e885fdd" />
<metadata>
<emit>degrees({0})</emit>
</metadata>
</node>
</category>
<category name="Vectors" color="yellow" type="pure" desc="Dots, crosses, and mirrors">
<node name="Dot" tip="Outputs the dot-product of two vectors" guid="69929c1a-18c1-4e57-a86e-7393d2bf4f95">
<in type="Vector" guid="06dfd72b-ae81-4fc5-acac-2fa8d74c8490" />
<in type="Vector" guid="8da9f8d4-fb1b-4735-91e1-d3645ab8f1a2" />
<out type="Float" guid="49a3a208-955a-4bee-af20-1a3643fc0390" />
<metadata>
<emit>dot({0}, {1})</emit>
</metadata>
</node>
<node name="Normalize" tip="Normalizes the input vector" guid="5a4562a3-41cd-4bf5-b8e9-ff75bf015f4c">
<in type="Vector" guid="8bc523de-0b47-47ab-ba01-c8a029dd6803" />
<out type="Vector" guid="5d8d08e2-fda1-48f8-92c0-a683b8aae966" />
<metadata>
<emit>normalize({0})</emit>
</metadata>
</node>
<node name="Length" tip="Outputs the length of the vector" guid="8381018d-def4-4fc6-a911-2b745f4b1f7b">
<in type="Vector" guid="e15e673d-5f63-4339-8756-6bfbd1fede46" />
<out type="Float" guid="0102c2fe-6caa-45b9-8cfd-dedd97842fe7" />
<metadata>
<emit>length({0})</emit>
</metadata>
</node>
<node name="Distance" tip="Distance between two points" guid="1c9b83f7-4386-4000-9ab2-47f02784f936">
<in type="Vector" guid="f2addd70-189f-42ad-b2ef-221081f3c706" />
<in type="Vector" guid="89e7e81a-843c-4a23-a8f3-f0030cbc7fb0" />
<out type="Float" guid="9e776340-27d0-4b5c-b337-749fcb984601" />
<metadata>
<emit>distance({0}, {1})</emit>
</metadata>
</node>
<node name="Cross" tip="Output the vector to the right of the plane formed" guid="ca775f6c-231a-4968-be0c-c775267b632e">
<in type="Vector" guid="301d108e-6e28-455a-aa29-1995ee6b40b4" />
<in type="Vector" guid="14b914a0-c522-48a5-8347-8f29ddbb166f" />
<out type="Vector" guid="ac248898-d6a7-423f-b8e9-ca3fcb59968c" />
<metadata>
<emit>cross({0}, {1})</emit>
</metadata>
</node>
<node name="Reflect" tip="Reflects the source about the relative vector" guid="938f38e2-7983-4896-b5db-f5e4a69d8116">
<in name="Src" type="Vector" guid="1d918326-4168-49f9-bddc-994cb609fe79" />
<in name="Rel To" type="Vector" guid="2e6be266-aa52-41c5-86d7-3a1ec455ce25" />
<out type="Vector" guid="8a2a4186-67de-4a91-9389-bb575432e1d0" />
<metadata>
<emit>reflect({0}, {1})</emit>
</metadata>
</node>
<node name="Face Forward" tip="Outputs the forward facing vector based on the 3 frame vectors" guid="de011a97-d7db-4fc4-8b34-b066552b8734">
<in name="Nor" type="Vector" guid="f84a4813-3812-4882-a39f-7d3d08a045d5" />
<in name="Incident" type="Vector" guid="11d67396-b3bb-40be-82ef-95038b8923f6" />
<in name="Ref" type="Vector" guid="eba8da09-0de5-4384-b2ca-3784fa0e4195" />
<out type="Vector" guid="b8e91270-42b2-4f7e-bb1a-6376f0a3dfaa" />
<metadata>
<emit>faceforward({0}, {1}, {2})</emit>
</metadata>
</node>
<node name="Compose Vector" tip="Constructs a vector out of individual floats" guid="be73c156-200c-490c-92d2-9b017425be94">
<in name="X" type="Float" guid="313f3692-a403-41a4-953c-6d61f7fe2c7e" />
<in name="Y" type="Float" guid="361285d0-4483-4082-94f2-00f0a4f2339a" />
<in name="Z" type="Float" guid="91ef5d81-3118-44ce-9ac8-7c96e9195924" />
<in name="W" type="Float" guid="d8597abe-1d00-4142-943a-a84af3886152" />
<out type="Vector" guid="fc3d2c22-42e4-4306-8bac-8a4cbc57ffff">
<metadata>
<emit_hlsl>float4({0}, {1}, {2}, {3})</emit_hlsl>
<emit_glsl>vec4({0}, {1}, {2}, {3})</emit_glsl>
<emit_cl>float4({0}, {1}, {2}, {3})</emit_cl>
</metadata>
</out>
</node>
<node name="Decompose Vector" tip="Breaks apart a vector into specific components" guid="b0eac66b-0975-4782-8572-9ba845739bfc">
<in type="Vector" guid="8111485a-4415-42ec-89e5-ba11eb5d5a92" />
<out name="X" type="Float" guid="d22e4eb2-5f25-4ff4-be62-b1ec9016f9b8">
<metadata>
<emit>{0}.x</emit>
</metadata>
</out>
<out name="Y" type="Float" guid="6d2d9034-eb19-4db5-8f43-16d113acf249">
<metadata>
<emit>{0}.y</emit>
</metadata>
</out>
<out name="Z" type="Float" guid="322f48e0-bf9f-446b-bc6e-363ea18f7278">
<metadata>
<emit>{0}.z</emit>
</metadata>
</out>
<out name="W" type="Float" guid="eb0aa41a-3f79-4cf7-b7fb-72e5254b0fbb">
<metadata>
<emit>{0}.w</emit>
</metadata>
</out>
</node>
<node name="Swizzle" tip="Use a custom expression to swizzle" guid="57fc510f-9c14-4f91-83e7-40cfe8579d05">
<in type="String" noconnect="true" guid="b3ee8ce8-67b4-410f-a40d-850cf4481e6a" />
<in type="Vector" editable="false" guid="61785bf9-0b2b-4e11-a136-f819a6fc24a8" />
<out type="Vector" guid="6ac3623e-b624-4958-874f-aba3e9a21c11" />
<metadata>
<emit_hlsl>float4({1}.{0})</emit_hlsl>
<emit_glsl>vec4({1}.{0})</emit_glsl>
</metadata>
</node>
</category>
<category name="Matrices" desc="Transforms" color="gold" type="pure">
<node name="Constant Matrix" tip="Constructs a matrix from explicit values" guid="416e749c-e5e3-47ab-b465-150c3fe880de">
<out type="Matrix" editable="true" guid="e02237dd-44bd-4b00-bb41-2978b44040e0" />
</node>
<node name="Compose Matrix" tip="Composes a matrix out of multiple vectors" guid="90422cdd-986d-48be-b613-5e3ce5d55fd8">
<in name="Row 1" type="Vector" editable="false" guid="7d67d615-be5a-4ac6-b269-f97c40f47f77" />
<in name="Row 2" type="Vector" editable="false" guid="fb56668f-cd15-46d2-843c-d2f674e98c4b" />
<in name="Row 3" type="Vector" editable="false" guid="774224ab-3e0a-4095-a540-4cb3bb982b72" />
<in name="Row 4" type="Vector" editable="false" guid="0f281f55-dd2c-4b9c-95f2-e2e5dcd8dbf3" />
<out type="Matrix" guid="6d05dde7-2b41-499c-8e96-d8130d1d3c4d" />
<metadata>
<emit_hlsl>float4x4({0}, {1}, {2}, {3})</emit_hlsl>
<emit_glsl>mat4({0}, {1}, {2}, {3})</emit_glsl>
<emit_cl>float4x4({0}, {1}, {2}, {3})</emit_cl>
</metadata>
</node>
<node name="Transform" tip="Performs matrix multiplication to transform a vector" guid="da7ec658-b16e-4c5f-a900-b8b9e6c7c499">
<in type="Matrix" guid="5b97500b-4ee7-46a6-82e9-70be7f03e90e" />
<in type="Vector" guid="c3fb5760-03f8-4279-977b-f35a1158b381" />
<out type="Vector" guid="47422d5f-8001-4b07-877c-28088ba2819b" />
<metadata>
<emit_hlsl>mul({1}, {0})</emit_hlsl>
<emit_glsl>({1} * {0})</emit_glsl>
</metadata>
</node>
<node name="Rotate" tip="Rotation transform for normals" guid="b86ccad2-ad6c-4a77-8f00-ba28a8efd580">
<in type="Matrix" guid="571913ee-7b69-4f64-8bc6-52b9098fca88" />
<in type="Vector" guid="a29de46a-48e8-43e0-9af8-c912802d499a" />
<out type="Vector" guid="e5ba1b79-70e1-45c8-9f3a-fc0540e52a5a" />
<metadata>
<emit_hlsl>float4(mul({1}.xyz, float3x3({0})))</emit_hlsl>
<emit_glsl>vec4(mat3({0}) * {1}.xyz)</emit_glsl>
<emit_cl>float4(mul({1}.xyz, float3x3({0})))</emit_cl>
</metadata>
</node>
<node name="Transpose" tip="Flips columns into rows" guid="a5f8d932-aa75-4616-84eb-ac7b0eec4752">
<in type="Matrix" guid="a8c45e76-f634-44cc-8ef2-c6b1e2191eca" />
<out type="Matrix" guid="eae1dee5-702b-486a-a925-f5e00588efe4" />
<metadata>
<emit>transpose({0})</emit>
</metadata>
</node>
<node name="Get Skin Matrix" tip="Gets the skeletal animation skinning matrix" guid="9f7d7c0d-e749-4f71-a2bc-209d9503ce93">
<in name="Weights" type="Vector" guid="64065971-6504-4109-b8fd-f59f747f91cb" />
<in name="Indices" type="Vector" guid="9c072303-2b10-4b20-a606-968b0c74abf9" />
<out type="Matrix" guid="e7af8081-8103-4f68-b138-98e79e677a38" />
<metadata>
<error_notdef>SKINNED</error_notdef>
<inline>GetSkinMatrix({0}, {1})</inline>
</metadata>
</node>
<node name="Get Translation" tip="Extracts the translation component from a matrix" guid="236b855b-636f-48f5-8759-71805fc739b2">
<in type="Matrix" guid="2c1fb3b6-a0be-428d-a1c5-c4e6a9c9885a" />
<out type="Vector" guid="1e2119fc-1b14-46bb-b12c-f5458a18c3d5" />
<metadata>
<emit_glsl>vec4({0}[0][3], {0}[1][3], {0}[2][3], 0.0)</emit_glsl>
<emit_hlsl>float4({0}[0][3], {0}[1][3], {0}[2][3], 0.0)</emit_hlsl>
<emit_cl>float4({0}.row0.w, {0}.row1.w, {0}.row2.w, 0.0)</emit_cl>
<emit_pc>{0}.GetTranslation()</emit_pc>
<emit_bc_call>GetMatrixTranslation</emit_bc_call>
</metadata>
</node>
</category>
<category name="Effects" desc="" color="coral" type="pure">
<node name="Normal w/o Tangents" tip="Uses a tangent space normal map without having tangents" guid="47360a88-bb24-4506-aead-5501a5c8d6b3">
<in name="Vertex Nor" type="Vector" guid="2cbe7703-2d70-4ecc-ac33-029270474d0b" />
<in name="Tan Nor" type="Vector" guid="47f8b7cc-bd7d-4849-9648-7fc31e0561b4" />
<in name="View Dir" type="Vector" guid="3d2ab385-51b3-454b-afc7-e457fd6d6798" />
<out type="Vector" guid="76d256af-06f9-4882-9d83-f4ba1443fa93" />
</node>
<node name="Perlin Noise" tip="Outputs 3d perlin noise" guid="cfeeb333-8e6b-4dbf-8a07-f0d7c6bdd2fd">
<in type="Vector3" guid="e4c82827-6635-4896-afde-c3f6f6e12b23" />
<out type="float" guid="947abff5-e30c-4d82-8d8d-04a70049eff4" />
</node>
<node name="FBM" tip="Generates Fractal brownian noise" guid="1f3266f3-c260-4828-9895-ba61d5bf63d4">
<in type="Vector3" guid="8ccdf0d0-04d3-4ede-b051-07e642f193c7" />
<in name="Octaves" type="Float" guid="1e533ba1-6e2b-4c15-a879-e8c91d399270" />
<out type="float" guid="34db0696-5b9e-45d4-be51-add03c946802" />
</node>
<node name="Roughness To MipLevel" tip="Determines a mip level to use based on roughness" guid="8058a930-16d6-4429-8d77-5534685ed95a">
<in name="Roughness" type="Float" guid="6443e3f6-2dd8-4fe1-9bb3-06df99ae1229" />
<in name="Levels" type="Float" guid="5de8edff-a7f9-4a3e-8394-a3d67ad81a15" />
<out name="" type="Float" guid="fd74b398-5981-4ae5-b774-655a4917b336" />
</node>
<node name="Noise" tip="Outputs pseudorandom noise" guid="2051c985-b483-4e7f-aec2-400f8101b185">
<in name="Coord" type="Float" guid="d498dd79-dd37-4a18-9c9d-172ee1b09d4f" />
<out type="Float" guid="ee353f44-b855-4d6b-a00e-737dbcedf0cc">
<metadata>
<emit>NoiseFloat({0})</emit>
</metadata>
</out>
<out type="Vector" guid="8378c6b5-7f95-4e3f-9160-f32075492808">
<metadata>
<emit>NoiseVector({0})</emit>
</metadata>
</out>
</node>
</category>
<category name="Lighting" desc="BRDFs and falloffs" color="limegreen" type="pure">
<node name="Half Vector" tip="Calculates the half vector of the light and view" guid="131bcfcd-57a0-4333-b537-773ceab5d5f2">
<in name="Light Dir" type="Vector" guid="4ff97001-7e14-4f47-b99e-62d7c19c0f52" />
<in name="View Dir" type="Vector" guid="91a45b93-f7bf-40d5-9418-c239a6b95130" />
<out type="Vector" guid="ddc761d1-00e0-4b41-9210-a3fd3d7e51df" />
<metadata>
<include>#include "GRAPH_LightingSupport.hlsl"</include>
<emit>normalize({0} + {1})</emit>
</metadata>
</node>
<node name="Schlick Fresnel" tip="Outputs the Fresnel function, useful for rim lighting" guid="c72de007-c138-417a-9058-7c06de8a2885">
<in name="Color" type="Vector" guid="c0a2e20e-974e-44be-b17b-d32acea11dda" />
<in name="vDotH" type="Float" guid="f3a6bc50-1950-49e9-8bd0-8b170d7f19bf" />
<out type="Vector" guid="9e30e48a-adaa-49cd-ba8d-ad0407142f68" />
<metadata>
<include>#include "GRAPH_LightingSupport.hlsl"</include>
<emit>SchlickFresnel({0}, {1})</emit>
</metadata>
</node>
<node name="Lambertian Diffuse" tip="Old fashioned Lambertian diffuse" guid="cd30146e-02e1-4504-a338-7c10aa87223f">
<in name="Vector" guid="02185691-4883-4781-ab3a-fff67f6a29c8" />
<in name="Vector" guid="6fbfd240-05bc-4f57-b87f-1a9176bde9e6" />
<out name="Vector" guid="b3b3e112-aa97-41b1-85a5-56748a21f79b" />
<metadata>
<include>#include "GRAPH_LightingSupport.hlsl"</include>
<emit>dot({0}, {1})</emit>
</metadata>
</node>
<node name="Burley Diffuse" tip="Lambertian diffuse" guid="3c0106de-701c-44d2-a71b-f79a3629eaa9">
<in name="Color" type="Vector" guid="2160915e-7353-4167-ae48-cb9226cdda5e" />
<in name="Roughness" type="float" guid="5fec0bb4-7963-4f85-8040-29077eb2fabf" />
<in name="nDotV" type="float" guid="80277ae8-22d4-45c2-90e1-c7098268baf0" />
<in name="nDotL" type="float" guid="553d7fb7-2614-4e5b-956a-0589204402fd" />
<in name="vDotH" type="float" guid="34c037ba-1e42-491e-8396-8a3c8dbf043d" />
<out name="Vector" guid="433b3111-7390-4d0d-94e9-f530deedb472" />
<metadata>
<include>#include "GRAPH_LightingSupport.hlsl"</include>
<emit>BurleyDiffuse({0}, {1}, {2}, {3}, {4})</emit>
</metadata>
</node>
<node name="Oren-Nayer" tip="Evaluates the Oren-Nayer shading model" guid="d8fe1eb0-32fd-4ba6-89f7-da2f32d86411">
<in name="Nor" type="Vector" guid="cddf2598-c5c5-4779-8b02-5f798865f246" />
<in name="Light" type="Vector" guid="51a38681-e837-4279-8e41-ac96f120e25d" />
<in name="View" type="Vector" guid="ad1d078b-2d8d-490c-9e86-e90b2ccf8fa4" />
<out type="Vector" guid="981e5158-c498-4f3c-8897-322a484f1d51" />
<metadata>
<include>#include "GRAPH_LightingSupport.hlsl"</include>
<emit>OrenNayer({0}, {1}, {2})</emit>
</metadata>
</node>
<node name="PBR - Schlick/GGX/Smith" tip="A complete PBR light evaluation" guid="46b41209-d7cf-4101-a1d0-e83d3ed2b166">
<in type="Vector" guid="172ef652-4a13-4f82-85a9-68c01bb3a5e7" />
<in type="Vector" guid="c6b32064-8445-438a-8867-22c3b1dd6955" />
<in type="Vector" guid="95aff527-0f99-4806-a5fd-f3ab65a5377f" />
<out type="Vector" guid="581d82fb-b666-4855-bb60-b07f8e1e23f8" />
<metadata>
<include>#include "GRAPH_LightingSupport.hlsl"</include>
<emit>PBR_Schlick_GGS_Smith({0}, {1}, {2})</emit>
</metadata>
</node>
<node name="Image Based Lighting" tip="Uses cubemap mip-levels for environmental light" guid="3fe713f4-0073-468d-925c-f42ff732928e">
<in name="Nor" type="Vector" guid="45a0dd96-bda5-4b1b-a13f-e61b360efd82" />
<in name="View" type="Vector" guid="e9d91714-dbc8-4398-ab7d-c4cfa56abbc0" />
<in name="Specular" type="Vector" guid="ab88767a-e150-497f-b284-efc5b347ca2b" />
<in name="Roughness" type="Float" guid="84e5106e-9a79-4874-80e6-78f73346d64d" />
<out type="Vector" guid="dfaeef5b-cf90-4db4-a0d7-3725500d0954" />
<metadata>
<include>#include "GRAPH_LightingSupport.hlsl"</include>
<emit>ImageBasedLighting({0}, {1}, {2}, {3})</emit>
</metadata>
</node>
<node name="Gradient" tip="Interpolates an axial gradient" guid="84c7e7d1-bb06-44bc-a956-0809254c8fcd">
<in name="A" type="Vector" guid="31686f67-da2b-4f6c-b1eb-fd96650407dd" />
<in name="B" type="Vector" guid="35c2bec3-e03d-4b7c-a084-6beed4b325fb" />
<in name="Orient" type="Vector" guid="da7b3b34-0ff5-482e-9912-2b78500fa5ff" />
<in name="Lower" type="Float" guid="06dd7bab-64d4-471c-820a-4c0f7c6db830" />
<in name="Upper" type="Float" guid="8fe7f8fd-af77-4587-89df-0603f9a727bf" />
<out type="Vector" guid="a2db76ee-70c7-41f5-8cd5-436b58c40f29" />
<metadata>
<include>#include "GRAPH_MiscSupport.hlsl"</include>
<emit>SpaceGradient({0}, {1}, {2}, {3}, {4})</emit>
</metadata>
</node>
</category>
<category name="Platform Targets" desc="Low/High spec" color="orange" type="blueprint">
<node name="Quality Switch" tip="Use cheaper BRDFs and approximations" guid="c0aae663-95dc-4569-8055-283f42c62fcf">
<in name="Low" type="AnyKey" guid="4d937f77-1486-4b58-b20e-0a2cb39563a9">
<metadata>
<ifdef>spec_low</ifdef>
</metadata>
</in>
<in name="Medium" type="AnySource" guid="e041d136-2e44-4674-81f6-36625b387d11">
<metadata>
<ifdef>spec_medium</ifdef>
</metadata>
</in>
<in name="High" type="AnySource" guid="12900942-b1de-4af4-9dc1-dd6d0c6daf3a">
<metadata>
<ifdef>spec_high</ifdef>
</metadata>
</in>
<out name="" type="AnySource" guid="319f63ce-9551-44e7-b94a-3390b7d5e585" />
<metadata>
<passthrough />
</metadata>
</node>
<node name="Mobile / PC" tip="Forks based on mobile vs PC configuration" guid="95acfb69-e6f2-48f2-953c-f687f52486bb">
<in name="Mobile" type="AnyKey" guid="23f37aca-b7ba-4fd4-b5af-24f3bcf97a7c">
<metadata>
<ifdef>gles</ifdef>
</metadata>
</in>
<in name="PC" type="AnySource" guid="c6120a71-96a7-4e98-b67e-cae7b68f2ecf">
<metadata>
<ifdef>desktop</ifdef>
</metadata>
</in>
<out name="" type="AnySource" guid="9ece323c-95ea-4e55-85c6-2b036f34a33b" />
<metadata>
<passthrough />
</metadata>
</node>
<node name="Is Shadow Pass?" tip="Forks if we're rendering a shadow map" guid="51b8d5be-2e14-410e-9f4d-e3b0a39b406e">
<in name="Yes" type="AnyKey" guid="4c5358fc-dd5c-4554-8819-efa45f9bcce3">
<metadata>
<ifdef>SHADOW</ifdef>
</metadata>
</in>
<in name="No" type="AnySource" guid="620b0711-8b6f-4a8b-bfe1-a9026b10b98e">
<metadata>
<ifnotdef>SHADOW</ifnotdef>
</metadata>
</in>
<out type="AnySource" guid="421bd976-cdb9-492e-aeff-5b5eedddd8a9" />
<metadata>
<passthrough />
</metadata>
</node>
<node name="Is Ambient Pass?" tip="Forks if the current pass is the ambient pass" guid="341c6b4d-00b7-4f47-a95d-bdabc1584e9d">
<in name="Yes" type="AnyKey" guid="361b4388-db39-4dbc-a0f7-1e750755c0e8">
<metadata>
<ifdef>AMBIENT</ifdef>
</metadata>
</in>
<in name="No" type="AnySource" guid="b4e59229-fe82-4aaa-afde-85f3b25f1bf6">
<metadata>
<ifnotdef>AMBIENT</ifnotdef>
</metadata>
</in>
<out type="AnySource" guid="2bd62b1b-12b8-4476-a859-b8447c098d53" />
<metadata>
<passthrough />
</metadata>
</node>
<node name="Has Lightmap?" tip="Forks if a lightmap is attached to the material" guid="fa74afbb-4dd9-4902-bd01-455c372dcd11">
<in name="Yes" type="AnyKey" guid="9351d1dc-1c8b-4e63-93e3-fdc3654f9f95">
<metadata>
<ifdef>LIGHTMAP</ifdef>
</metadata>
</in>
<in name="No" type="AnySource" guid="283d21ef-3726-4ba3-9a46-905aa9f542a9">
<metadata>
<ifnotdef>LIGHTMAP</ifnotdef>
</metadata>
</in>
<out type="AnySource" guid="7db90947-50e8-4f10-9cd2-4e87e547d5bb" />
<metadata>
<passthrough />
</metadata>
</node>
<node name="Has Environment Map?" tip="Forks if an environment map is attached to the material" guid="2cbe03f9-025f-4699-beef-31e86665887a">
<in name="Yes" type="AnyKey" guid="d894fec2-cf4b-4ebb-bf38-d88be1a63d01">
<metadata>
<ifdef>ENVCUBEMAP</ifdef>
</metadata>
</in>
<in name="No" type="AnySource" guid="0d9a5462-a1e0-4842-ac5b-9ebcbd41f767">
<metadata>
<ifnotdef>ENVCUBEMAP</ifnotdef>
</metadata>
</in>
<out type="AnySource" guid="1974e6ce-9821-4e2b-9260-c0979b3bc434" />
<metadata>
<passthrough />
</metadata>
</node>
<node name="Is GL3?" tip="Forks based on whether OpenGL is GL3.3 or not" guid="35c01819-2033-4e07-bfd5-b2d300d48d7b">
<in name="Yes" type="AnyKey" guid="edd3cf97-ae9c-47d0-b1c3-ca245ec38bb5">
<metadata>
<ifdef>GL3</ifdef>
</metadata>
</in>
<in name="No" type="AnySource" guid="68aad68f-a3bf-4eb3-812f-34306d96e7d2">
<metadata>
<ifnotdef>GL3</ifnotdef>
</metadata>
</in>
<out type="AnySource" guid="d11c40b7-fb98-4278-b7c3-c15beb1f89f5" />
<metadata>
<passthrough />
</metadata>
</node>
<node name="Is GLES?" tip="Forks based on whether OpenGL is GLES2.0 or not" guid="74ad727b-629e-4b09-b89c-0bf2ddef0da1">
<in name="Yes" type="AnyKey" guid="1082ddd3-7072-4556-98cc-b048778df589">
<metadata>
<ifdef>GL_ES</ifdef>
</metadata>
</in>
<in name="No" type="AnySource" guid="6112886d-1ba8-4279-a35b-0f61d70bb539">
<metadata>
<ifnotdef>GL_ES</ifnotdef>
</metadata>
</in>
<out type="AnySource" guid="ad4a4a31-1b39-4457-8c49-2c9ce71f9900" />
<metadata>
<passthrough />
</metadata>
</node>
</category>
<category name="Inputs" desc="" color="red" type="pure">
<node name="Trivial Inputs" type="blueprint" tip="Input data for trivial drawables, like lines and shapes" guid="8544eba1-0a5d-4088-9a88-98e7de6462e6">
<out name="World Pos" type="Vector" guid="caf93c6b-2514-4e6d-b4c8-e44de5fcb31b" />
<out name="World Nor" type="Vector" guid="d68cd6dc-3ae8-4ecc-8aa3-abff12b6afb0" />
<out name="UV Coord" type="Vector" guid="2990da06-1b0c-4401-bc49-7f435858f972" />
<out name="Vertex Color" type="Vector" guid="248f1b5f-1ede-40f6-8dbf-bd9b73dfe55c" />
<seperator />
<out name="Model Pos" type="Vector" guid="2ee2acd7-f78c-4dc2-a98b-922a0631492e" />
<out name="Model Nor" type="Vector" guid="165358c3-ec79-4d2e-ae22-83ff2faf125a" />
</node>
<node name="Static Inputs" type="blueprint" tip="Input data for non-animated meshes" guid="0910f54d-dcdf-40a2-a994-c333df5e1fa7">
<out name="World Pos" type="Vector" guid="a0559060-0468-4d2f-bad3-a43507564e9e" />
<out name="World Nor" type="Vector" guid="e002d5bf-1051-4c44-8af3-5d8362f9258f" />
<out name="World Tan" type="Vector" guid="d16c6a8c-6a8f-4613-a6a4-4a44692141a5" />
<out name="World Bitan" type="Vector" guid="bae063c0-a31c-4ae1-affe-98936381109d" />
<out name="UV Coord" type="Vector" guid="6557e975-b1dd-4f00-8250-f918e88e2c21" />
<seperator />
<out name="Model Pos" type="Vector" guid="7410a42c-0071-4769-99c6-326391b253ba" />
<out name="Model Nor" type="Vector" guid="c7f8d898-7217-4a59-ab44-f8eefc3e155a" />
<out name="Model Tan" type="Vector" guid="56bec457-cc36-4d15-adcf-3533097a5efc" />
<out name="Model Bitan" type="Vector" guid="23c2261c-fa81-47ec-98e7-42eba3fe39db" />
</node>
<node name="Animated Inputs" type="blueprint" tip="Input data for animated drawables" guid="17481d59-7b64-4b82-9bdf-fbf5bcfeed3e">
<out name="World Pos" type="Vector" guid="81e06782-bdab-4b24-b135-3276d8947f2a">
</out>
<out name="World Nor" type="Vector" guid="66e8b304-7338-45c1-a18e-4a99fa51dce4" />
<out name="World Tan" type="Vector" guid="55f46d9d-9989-4c1e-a70e-c1f6da946330" />
<out name="World Bitan" type="Vector" guid="4e112f38-d743-4efe-829e-0d56186dcdd2" />
<out name="UV Coord" type="Vector" guid="3e94df29-4ae9-4f81-b579-5b6b4d85863b" />
<out name="Vertex Color" type="Vector" guid="ab26d5be-b392-43c6-971f-3644acb285ce" />
<out name="Bone Weights" type="Vector" guid="97426d38-b8a1-4dae-a405-b5f323ef9782" />
<out name="Bone Indices" type="Vector" guid="71aa3faa-e492-49fa-b83d-cc81bf91eed4" />
<seperator />
<out name="Model Pos" type="Vector" guid="9352aa13-3809-4acb-a6be-b405a555ed36" />
<out name="Model Nor" type="Vector" guid="c2ee4ba9-69fc-4937-b94d-a185e885187b" />
<out name="Model Tan" type="Vector" guid="fd0f9253-a12a-4a48-83d6-2f3abaf87be6" />
<out name="Model Bitan" type="Vector" guid="6cdf9587-91cc-417f-b522-c93552c71c39" />
</node>
<node name="Model Matrix" tip="Matrix of the current drawable" guid="f5eeb49d-5740-46b5-af60-4516dad0a7fa">
<out type="Matrix" guid="ca1daf3c-07e7-4488-9c63-a93413767a90">
<metadata>
<inline>cModelMatrix</inline>
</metadata>
</out>
</node>
<node name="View Matrix" tip="Camera mode/view matrix" guid="f0bc53fe-003e-4f5d-9f95-9fe0ec798742">
<out type="Matrix" guid="bc9a3529-793b-4799-863a-65c7f3d59675">
<metadata>
<inline>cViewMatrix</inline>
</metadata>
</out>
</node>
<node name="Tangent Basis" tip="Composed tangent basis matrix" guid="170aa20b-11bc-4a69-8500-db5d48c55441">
<out type="Matrix" guid="03061231-f4cb-4732-8f9f-9f896fb9543f">
<metadata>
<inline>tangentBasis</inline>
</metadata>
</out>
<metadata>
<attachdef>TANGENT_BASIS</attachdef>
</metadata>
</node>
<node name="Camera Position" tip="3d position of the camera" guid="1d2cfa10-3d12-47c3-840c-d697d16d620e">
<out type="Vector" guid="7a2480d4-ea13-4f7e-b83f-46b0ef106811">
<metadata>
<inline>cViewPos</inline>
</metadata>
</out>
</node>
<node name="View Direction" tip="Direction the camera is looking towards" guid="8924def2-179c-4f4e-bbdd-207bdc40e679">
<out type="Vector" guid="41b85fdc-ff2a-426a-989e-5a98f418c61b">
<inline>cViewDir</inline>
</out>
</node>
</category>
<category name="Outputs" desc="" color="red" type="pure">
<node name="Physically Based" root="true" type="blueprint" guid="daace728-59a0-4f4a-b041-abc67f7b881e" tip="Standard physically based shading outputs, not all values need to be used">
<in name="Albedo" type="Vector" guid="700915fc-8eb2-45bb-8791-469cadd48ad8">
<metadata>
<ifdef>COMPILEPS</ifdef>
</metadata>
</in>
<in name="Normal" type="Vector" guid="9e7cc1c4-9f93-432c-b28d-a7661da58293">
<metadata>
<ifdef>COMPILEPS</ifdef>
</metadata>
</in>
<in name="Roughness" type="Float" guid="c69a22d7-502e-47ca-8ae5-63483e3a2202">
<metadata>
<ifdef>COMPILEPS</ifdef>
</metadata>
</in>
<in name="Metalness" type="Float" guid="8bbf3846-7dca-4a7f-a1ce-ad8de79aa34d">
<metadata>
<ifdef>COMPILEPS</ifdef>
</metadata>
</in>
<in name="Specular" type="Vector" default="0.5 0.5 0.5 0.5" guid="fc9b8402-9bcb-4988-a8f7-8db991d5a07b">
<metadata>
<ifdef>COMPILEPS</ifdef>
</metadata>
</in>
<in name="Fresnel" type="Float" default="0.04" guid="779d63c4-788b-457d-a7b6-c3d4f053243b">
<metadata>
<ifdef>COMPILEPS</ifdef>
</metadata>
</in>
<in name="Transparency" type="Float" default="1.0" guid="8101142c-ddb3-454b-ad27-d36126ebde9f">
<metadata>
<ifdef>COMPILEPS</ifdef>
<attachdef>ALPHA</attachdef>
</metadata>
</in>
<seperator />
<in name="Emissive" type="Vector" default="0.0 0.0 0.0 0.0" guid="1dceb36e-e470-462a-8298-c0429885c98f">
<metadata>
<ifdef>COMPILEPS</ifdef>
<attachdef>EMISSIVE</attachdef>
</metadata>
</in>
<in name="Ambient Occlusion" type="Float" default="0.0" guid="6ddab195-6a41-49db-95ec-112d54f7d4a1">
<metadata>
<ifdef>COMPILEPS</ifdef>
<attachdef>AMBIENT_OCCLUSION</attachdef>
</metadata>
</in>
<seperator />
<in name="Subsurface Depth" type="Float" default="0.0" guid="1365d6d4-7be5-4351-a27f-b5617e73c67c">
<metadata>
<ifdef>COMPILEPS</ifdef>
<attachdef>SUBSURFACE</attachdef>
</metadata>
</in>
<in name="Subsurface Color" type="Vector" default="1.0 1.0 1.0 1.0" guid="a903fe21-35fc-4ef2-ad78-ee2091e23d89">
<metadata>
<ifdef>COMPILEPS</ifdef>
<attachdef>SUBSURFACE</attachdef>
</metadata>
</in>
<seperator />
<in name="Vertex Position" type="Vector" guid="2582a87c-3d51-4343-8ff9-6f3ced417f87">
<metadata>
<ifdef>COMPILEVS</ifdef>
<semantic_dx11>SV_POSITION</semantic_dx11>
</metadata>
</in>&gt;
<in name="Vertex Normal" type="Vector" guid="19c16d79-c70b-468d-86e3-8687d988e47e"><metadata><ifdef>COMPILEVS</ifdef><semantic_dx11>TEXCOORD0</semantic_dx11></metadata></in><seperator /><in name="Displacement" type="Float" guid="fa2988fe-61bc-4d16-800c-c9f6f960cbc6" /></node>
<node name="Legacy" root="true" type="blueprint" guid="387949fe-f749-43f4-9d54-1b98650e5010" tip="Legacy shader for non-PBR rendering, use as a base for other non-PBR purposes">
<in name="Color" type="Vector" guid="17888ba4-6a1a-4bf2-b0c6-e28ce87362f8">
<metadata>
<ifdef>COMPILEPS</ifdef>
<semantic_dx11>COLOR</semantic_dx11>
</metadata>
</in>
<in name="Specular Color" type="Vector" guid="2902d426-da12-4ce6-800d-33dfbc656d1f">
<metadata>
<ifdef>COMPILEPS</ifdef>
<semantic_dx11>TEXCOORD1</semantic_dx11>
</metadata>
</in>
<in name="Normal" type="Vector" guid="04612862-231b-435e-a9e5-db5efaa6904c">
<metadata>
<ifdef>COMPILEPS</ifdef>
<semantic_dx11>NORMAL</semantic_dx11>
</metadata>
</in>
<seperator />
<in name="Vertex Position" type="Vector" guid="fd384b3f-f3a7-4fb8-ac4c-99ccb55b8af3">
<metadata>
<ifdef>COMPILEVS</ifdef>
<vsout_always />
<vsout_semantic_dx11>SV_POSITION</vsout_semantic_dx11>
<vsout_semantic_dx9>POSITION</vsout_semantic_dx9>
<semantic_dx11>SV_Position</semantic_dx11>
</metadata>
</in>
<in name="Vertex Normal" type="Vector" guid="8b885cc0-e009-4fed-85f2-a0570a3a93c9">
<metadata>
<ifdef>COMPILEVS</ifdef>
<vsout_always />
<vsout_semantic_dx11>NORMAL</vsout_semantic_dx11>
<semantic_dx11>NORMAL</semantic_dx11>
</metadata>
</in>
</node>
</category>
<category name="Utility" desc="" color="aquamarine" type="pure">
<node name="DDX" tip="Space derivative for manual mip-mapping" guid="a93b69fa-e354-458a-b7ba-590d15e7ca6f">
<in type="Float" guid="47bcc1bb-9871-4940-9b56-c4fa25dd9a36" />
<out type="Float" guid="e0dbf8f8-efcd-4a92-99f9-31cdd6735d3d" />
<metadata>
<emit_hlsl>ddx({0})</emit_hlsl>
<emit_glsl>dFdx({0})</emit_glsl>
</metadata>
</node>
<node name="DDY" tip="Space derivative for manual mip-mapping" guid="4838ae2e-b87b-47e3-add5-558b0192493c">
<in type="Float" guid="381a3fb8-ceb3-499e-8b57-04a08f9e0341" />
<out type="Float" guid="dad7f404-24a0-4835-8d9b-297b9915da72" />
<metadata>
<emit_hlsl>ddy({0})</emit_hlsl>
<emit_glsl>dFdy({0})</emit_glsl>
</metadata>
</node>
<node name="Is Infinite" tip="Outputs 1 if the input is infinite or -infinite" guid="84748598-0a13-4b2d-9575-38cf252afe9e">
<in type="AnyKey" guid="e2caf227-966a-4e4b-b51f-4f16e21a95ea" />
<out type="Float" guid="3e575f98-af84-41b3-ac74-8fbc668db9aa" />
<metadata>
<emit_hlsl>isinfinite({0})</emit_hlsl>
<emit_glsl>isinf({0})</emit_glsl>
</metadata>
</node>
<node name="Is NaN" tip="Outputs 1 if the input is not-a-number" guid="6fdb7c26-9a4c-4364-a1af-7f1a2770ba1c">
<in type="AnyKey" guid="333f0087-6e9b-4fda-8520-3d851d0a4b9d" />
<out type="Float" guid="555857d8-bc51-42a0-8f01-17578ffee961" />
<metadata>
<emit_hlsl>isnan({0})</emit_hlsl>
<emit_glsl>isnan({0})</emit_glsl>
</metadata>
</node>
<node name="Saturate" tip="Clips to the 0-1 bounds" guid="15b99e59-4879-467d-95c6-8f12bd553c91">
<in type="AnyKey" guid="6799f496-25f9-43a3-b76a-552ef7319947" />
<out type="AnyKey" guid="b6bb60e8-e35c-493d-9770-962bbccbe822" />
<metadata>
<emit_hlsl>saturate({0})</emit_hlsl>
<emit_glsl>clamp({0}, 0.0, 1.0)</emit_glsl>
</metadata>
</node>
<node name="From Gamma" tip="Convert from Gamma to Linear for calculations" guid="855dc4b7-18d8-452b-8b51-86ec432a8fc1">
<in type="AnyKey" guid="f32e9b0b-481a-43a3-b361-b0af73e4ca0f" />
<out type="AnySource" guid="3a4f6ff7-8c15-430a-8a8e-bd5cbbf4609a" />
<metadata>
<emit>pow({0}, 2.2)</emit>
</metadata>
</node>
<node name="To Gamma" tip="Convert to Gamma space for display" guid="bf108b93-6d30-4be9-ab2c-53f62ead240b">
<in type="AnyKey" guid="2c736d92-3f93-489e-ba54-52137e1780e3" />
<out type="AnySource" guid="d76be95d-488a-4d20-bb21-0282eef8b078" />
<metadata>
<emit>pow({0}, 1.0 / 2.2)</emit>
</metadata>
</node>
<node name="Custom Expression (Float)" tip="Insert arbitrary code" guid="73e639a5-ce63-4bd7-9be5-025b6120ee5f">
<in type="String" noconnect="true" guid="54dc3464-6b53-4e0e-a4a1-fe88eada0805" />
<out type="Float" guid="880511fd-92db-4791-9c03-c670a82df17d" />
<metadata>
<emit>{0}</emit>
</metadata>
</node>
<node name="Custom Expression (Vector)" tip="Insert arbitrary code" guid="1e382f27-dd5d-4605-99b8-fae6a4bf1f01">
<in type="String" noconnect="true" guid="a53a1e82-945e-41f5-937a-32ad550f5b9b" />
<out type="Vector" guid="6ac043f5-3a74-4569-bf66-6f48b6afddca" />
<metadata>
<emit>{0}</emit>
</metadata>
</node>
</category>
</graph>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment