| { |
| "nodes": [ |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000001}", |
| "type": "input", |
| "parameters": { |
| "name": "worldPosition", |
| "qualifier": { |
| "type": "QShaderLanguage::StorageQualifier", |
| "value": "QShaderLanguage::Input" |
| }, |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec3" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000002}", |
| "type": "eyePosition" |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000003}", |
| "type": "input", |
| "parameters": { |
| "name": "worldNormal", |
| "qualifier": { |
| "type": "QShaderLanguage::StorageQualifier", |
| "value": "QShaderLanguage::Input" |
| }, |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec3" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000004}", |
| "type": "input", |
| "layers": ["normalTexture"], |
| "parameters": { |
| "name": "worldTangent", |
| "qualifier": { |
| "type": "QShaderLanguage::StorageQualifier", |
| "value": "QShaderLanguage::Input" |
| }, |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec4" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000005}", |
| "type": "input", |
| "layers": ["diffuseTexture", "specularTexture", "normalTexture"], |
| "parameters": { |
| "name": "texCoord", |
| "qualifier": { |
| "type": "QShaderLanguage::StorageQualifier", |
| "value": "QShaderLanguage::Input" |
| }, |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec2" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000006}", |
| "type": "input", |
| "parameters": { |
| "name": "ka", |
| "qualifier": { |
| "type": "QShaderLanguage::StorageQualifier", |
| "value": "QShaderLanguage::Uniform" |
| }, |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec4" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000007}", |
| "type": "input", |
| "layers": ["diffuse"], |
| "parameters": { |
| "name": "kd", |
| "qualifier": { |
| "type": "QShaderLanguage::StorageQualifier", |
| "value": "QShaderLanguage::Uniform" |
| }, |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec4" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000008}", |
| "type": "sampleTexture", |
| "layers": ["diffuseTexture"], |
| "parameters": { |
| "name": "diffuseTexture" |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000009}", |
| "type": "input", |
| "layers": ["specular"], |
| "parameters": { |
| "name": "ks", |
| "qualifier": { |
| "type": "QShaderLanguage::StorageQualifier", |
| "value": "QShaderLanguage::Uniform" |
| }, |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec4" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000010}", |
| "layers": ["specularTexture"], |
| "type": "sampleTexture", |
| "parameters": { |
| "name": "specularTexture" |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000011}", |
| "type": "input", |
| "parameters": { |
| "name": "shininess", |
| "qualifier": { |
| "type": "QShaderLanguage::StorageQualifier", |
| "value": "QShaderLanguage::Uniform" |
| }, |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Float" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000012}", |
| "type": "subtract", |
| "parameters": { |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec3" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000013}", |
| "type": "normalize", |
| "parameters": { |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec3" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000014}", |
| "type": "normalize", |
| "parameters": { |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec3" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000015}", |
| "type": "worldSpaceToTangentSpaceMatrix", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000016}", |
| "type": "transpose", |
| "layers": ["normalTexture"], |
| "parameters": { |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Mat3" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000017}", |
| "type": "sampleTexture", |
| "layers": ["normalTexture"], |
| "parameters": { |
| "name": "normalTexture" |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000018}", |
| "type": "swizzle", |
| "layers": ["normalTexture"], |
| "parameters": { |
| "fields": "rgb", |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec3" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000019}", |
| "type": "constant", |
| "layers": ["normalTexture"], |
| "parameters": { |
| "constant": "2.0", |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Float" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000020}", |
| "type": "multiply", |
| "layers": ["normalTexture"], |
| "parameters": { |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec3" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000021}", |
| "type": "constant", |
| "layers": ["normalTexture"], |
| "parameters": { |
| "constant": "1.0", |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec3" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000022}", |
| "type": "subtract", |
| "parameters": { |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec3" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000023}", |
| "type": "multiply", |
| "parameters": { |
| "type": { |
| "type": "QShaderLanguage::VariableType", |
| "value": "QShaderLanguage::Vec3" |
| } |
| } |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000024}", |
| "type": "phongFunction" |
| }, |
| { |
| "uuid": "{00000000-0000-0000-0000-000000000025}", |
| "type": "fragColor" |
| } |
| ], |
| "edges": [ |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000001}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000024}", |
| "targetPort": "worldPosition" |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000001}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000012}", |
| "targetPort": "subtrahend" |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000002}", |
| "sourcePort": "eyePosition", |
| "targetUuid": "{00000000-0000-0000-0000-000000000012}", |
| "targetPort": "minuend" |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000012}", |
| "sourcePort": "difference", |
| "targetUuid": "{00000000-0000-0000-0000-000000000013}", |
| "targetPort": "input" |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000013}", |
| "sourcePort": "output", |
| "targetUuid": "{00000000-0000-0000-0000-000000000024}", |
| "targetPort": "worldView" |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000003}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000014}", |
| "targetPort": "input", |
| "layers": ["normal"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000003}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000015}", |
| "targetPort": "worldNormal", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000004}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000015}", |
| "targetPort": "worldTangent", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000015}", |
| "sourcePort": "matrix", |
| "targetUuid": "{00000000-0000-0000-0000-000000000016}", |
| "targetPort": "input", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000016}", |
| "sourcePort": "output", |
| "targetUuid": "{00000000-0000-0000-0000-000000000023}", |
| "targetPort": "first", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000005}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000017}", |
| "targetPort": "coord", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000017}", |
| "sourcePort": "color", |
| "targetUuid": "{00000000-0000-0000-0000-000000000018}", |
| "targetPort": "input", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000018}", |
| "sourcePort": "output", |
| "targetUuid": "{00000000-0000-0000-0000-000000000020}", |
| "targetPort": "first", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000019}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000020}", |
| "targetPort": "second", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000020}", |
| "sourcePort": "product", |
| "targetUuid": "{00000000-0000-0000-0000-000000000022}", |
| "targetPort": "minuend", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000021}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000022}", |
| "targetPort": "subtrahend", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000022}", |
| "sourcePort": "difference", |
| "targetUuid": "{00000000-0000-0000-0000-000000000023}", |
| "targetPort": "second", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000023}", |
| "sourcePort": "product", |
| "targetUuid": "{00000000-0000-0000-0000-000000000014}", |
| "targetPort": "input", |
| "layers": ["normalTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000014}", |
| "sourcePort": "output", |
| "targetUuid": "{00000000-0000-0000-0000-000000000024}", |
| "targetPort": "worldNormal" |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000006}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000024}", |
| "targetPort": "ambient" |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000007}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000024}", |
| "targetPort": "diffuse", |
| "layers": ["diffuse"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000005}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000008}", |
| "targetPort": "coord", |
| "layers": ["diffuseTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000008}", |
| "sourcePort": "color", |
| "targetUuid": "{00000000-0000-0000-0000-000000000024}", |
| "targetPort": "diffuse", |
| "layers": ["diffuseTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000009}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000024}", |
| "targetPort": "specular", |
| "layers": ["specular"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000005}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000010}", |
| "targetPort": "coord", |
| "layers": ["specularTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000010}", |
| "sourcePort": "color", |
| "targetUuid": "{00000000-0000-0000-0000-000000000024}", |
| "targetPort": "specular", |
| "layers": ["specularTexture"] |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000011}", |
| "sourcePort": "value", |
| "targetUuid": "{00000000-0000-0000-0000-000000000024}", |
| "targetPort": "shininess" |
| }, |
| { |
| "sourceUuid": "{00000000-0000-0000-0000-000000000024}", |
| "sourcePort": "outputColor", |
| "targetUuid": "{00000000-0000-0000-0000-000000000025}", |
| "targetPort": "fragColor" |
| } |
| ] |
| } |