public void storeVaryings(ShaderNode node, ShaderNodeVariable variable) {
        variable.setShaderOutput(true);

        final ShaderNodeDefinition nodeDefinition = node.getDefinition();
        final ShaderNodeDefinition currentDefinition = shaderNode.getDefinition();

        if (nodeDefinition.getType() != ShaderType.Vertex ||
                currentDefinition.getType() != ShaderType.Fragment) {
            return;
        }

        final String fullName = node.getName() + "." + variable.getName();

        DeclaredVariable declaredVar = varyings.get(fullName);

        if (declaredVar == null) {
            techniqueDef.getShaderGenerationInfo().getVaryings().add(variable);
            declaredVar = new DeclaredVariable(variable);
            varyings.put(fullName, declaredVar);
        }

        declaredVar.addNode(shaderNode);

        // If a variable is declared with the same name as an input and an output and is a varying,
        // set it as a shader output, so it's declared as a varying only once.
        for (final VariableMapping variableMapping : node.getInputMapping()) {
            final ShaderNodeVariable leftVariable = variableMapping.getLeftVariable();
            if (leftVariable.getName().equals(variable.getName())) {
                leftVariable.setShaderOutput(true);
            }
        }
    }
store a varying

@param node the shaderNode
@param variable the variable to store
jme3-core/src/plugins/java/com/jme3/material/plugins/ShaderNodeLoaderDelegate.java