Class ShaderPartObject

  • All Implemented Interfaces:
    X3DNode, X3DUrlObject, ShaderPart

    public class ShaderPartObject
    extends X3DConcreteNode
    implements ShaderPart
    ShaderPart can contain a CDATA section of plain-text source code.

    X3D node tooltip: (X3D version 3.1 or later) [X3DNode,X3DUrlObject] ShaderPart defines the source for a portion of source code used by a ComposedShader node. The source is not required to be a complete shader for all of the vertex/fragment processing.
    • Hint: ShaderPart can contain a CDATA block of plain-text source code.
    • Warning: ShaderPart contains no field declarations.
    • Hint: insert a CDATA block to contain source code embedded within an X3D scene.
    • Hint: a contained CDATA block for source code protects whitespace, line breaks, and literal characters (such as & for ampersand character, < for less-than-sign character, and > for greater-than-sign character) from unintended escape-character modifications by XML parsers.
    • Warning: strict order is required for contained constructs: first field declarations (if any), then IS/connect statements (if any), and finally CDATA source-code block.
    • Hint: ShaderPart subprograms are written in the same language, which is specified in the parent ComposedShader node.
    • Hint: apply containerField='watchList' when parent node is LoadSensor.

    Package hint: This org.web3d.x3d.jsail concrete class is used for implementing a standalone X3D object as a Plain Old Java Object (POJO). If you are writing Java code for use inside an X3D Script node, compile separate code using only the org.web3d.x3d.sai package instead.
    See Also:
    X3D Abstract Specification: ShaderPart, X3D Tooltips: ShaderPart, X3D Scene Authoring Hints
    • Field Detail

      • TYPE_VERTEX

        public static final java.lang.String TYPE_VERTEX
        SFString field named type with X3DUOM baseType shaderPartTypeValues can equal this value "VERTEX" (Java syntax) or VERTEX (XML syntax).
        See Also:
        shaderPartTypeValues, Constant Field Values
      • TYPE_FRAGMENT

        public static final java.lang.String TYPE_FRAGMENT
        SFString field named type with X3DUOM baseType shaderPartTypeValues can equal this value "FRAGMENT" (Java syntax) or FRAGMENT (XML syntax).
        See Also:
        shaderPartTypeValues, Constant Field Values
      • NAME

        public static final java.lang.String NAME
        String constant NAME provides name of this element: ShaderPart.
        See Also:
        Constant Field Values
      • COMPONENT

        public static final java.lang.String COMPONENT
        String constant COMPONENT defines X3D component for the ShaderPart element: Shaders
        See Also:
        Constant Field Values
      • LEVEL

        public static final int LEVEL
        Integer constant LEVEL provides default X3D Shaders component level for this element: 1
        See Also:
        Constant Field Values
      • IS_DEFAULT_VALUE

        public static final ISObject IS_DEFAULT_VALUE
        SFNode field named IS has default value null (Java syntax) or NULL (XML syntax).
      • METADATA_DEFAULT_VALUE

        public static final X3DMetadataObject METADATA_DEFAULT_VALUE
        SFNode field named metadata has default value null (Java syntax) or NULL (XML syntax).
      • TYPE_DEFAULT_VALUE

        public static final java.lang.String TYPE_DEFAULT_VALUE
        SFString field named type has default value "VERTEX" (Java syntax) or VERTEX (XML syntax).
        See Also:
        Constant Field Values
      • URL_DEFAULT_VALUE

        public static final java.util.ArrayList<java.lang.String> URL_DEFAULT_VALUE
        MFString field named url has default value equal to an empty list.
      • fromField_IS

        public static final java.lang.String fromField_IS
        fromField ROUTE name for SFNode field named IS.
        See Also:
        Constant Field Values
      • fromField_METADATA

        public static final java.lang.String fromField_METADATA
        fromField ROUTE name for SFNode field named metadata.
        See Also:
        Constant Field Values
      • toField_METADATA

        public static final java.lang.String toField_METADATA
        toField ROUTE name for SFNode field named metadata.
        See Also:
        Constant Field Values
      • fromField_TYPE

        public static final java.lang.String fromField_TYPE
        fromField ROUTE name for SFString field named type.
        See Also:
        Constant Field Values
      • toField_TYPE

        public static final java.lang.String toField_TYPE
        toField ROUTE name for SFString field named type.
        See Also:
        Constant Field Values
      • fromField_URL

        public static final java.lang.String fromField_URL
        fromField ROUTE name for MFString field named url.
        See Also:
        Constant Field Values
      • toField_URL

        public static final java.lang.String toField_URL
        toField ROUTE name for MFString field named url.
        See Also:
        Constant Field Values
    • Constructor Detail

      • ShaderPartObject

        public ShaderPartObject()
        Constructor for ShaderPartObject to initialize member variables with default values.
      • ShaderPartObject

        public ShaderPartObject​(java.lang.String DEFlabel)
        Utility constructor that assigns DEF label after initializing member variables with default values.
        Parameters:
        DEFlabel - unique DEF name for this X3D node
    • Method Detail

      • getElementName

        public final java.lang.String getElementName()
        Provides name of this element: ShaderPart
        Specified by:
        getElementName in class X3DConcreteElement
        Returns:
        name of this element
      • getComponent

        public final java.lang.String getComponent()
        Defines X3D component for the ShaderPart element: Shaders
        Specified by:
        getComponent in class X3DConcreteElement
        Returns:
        X3D component for this element
      • getComponentLevel

        public final int getComponentLevel()
        Provides default X3D component level for this element: 1
        Specified by:
        getComponentLevel in class X3DConcreteElement
        Returns:
        default X3D component level for this element
      • getFieldType

        public java.lang.String getFieldType​(java.lang.String fieldName)
        Indicate type corresponding to given fieldName.
        Specified by:
        getFieldType in class X3DConcreteElement
        Parameters:
        fieldName - name of field in this X3D node
        Returns:
        X3D type (SFvec3f etc.), otherwise ConfigurationProperties.ERROR_UNKNOWN_FIELD_TYPE if not recognized
        See Also:
        ConfigurationProperties.ERROR_UNKNOWN_FIELD_TYPE
      • getAccessType

        public java.lang.String getAccessType​(java.lang.String fieldName)
        Indicate accessType corresponding to given fieldName.
        Specified by:
        getAccessType in class X3DConcreteElement
        Parameters:
        fieldName - name of field in this X3D node
        Returns:
        X3D accessType (inputOnly etc.), otherwise ConfigurationProperties.ERROR_UNKNOWN_FIELD_ACCESSTYPE if not recognized
        See Also:
        ConfigurationProperties.ERROR_UNKNOWN_FIELD_ACCESSTYPE
      • initialize

        public final void initialize()
        Initialize all member variables to default values.
        Overrides:
        initialize in class X3DConcreteNode
      • clearIS

        public ShaderPartObject clearIS()
        Utility method to clear SFNode value of IS field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • hasIS

        public boolean hasIS()
        Indicate whether an object is available for inputOutput SFNode field IS.
        Returns:
        whether a concrete statement or CommentsBlock is available.
        See Also:
        getIS()
      • clearMetadata

        public ShaderPartObject clearMetadata()
        Utility method to clear SFNode value of metadata field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • hasMetadata

        public boolean hasMetadata()
        Indicate whether an object is available for inputOutput SFNode field metadata.
        Returns:
        whether a properly typed node or ProtoInstance or CommentsBlock is available.
        See Also:
        getMetadata(), getMetadataProtoInstance(), X3D Scene Authoring Hints: Metadata Nodes
      • getType

        public java.lang.String getType()
        Provide String enumeration value ( baseType shaderPartTypeValues) ["VERTEX" | "FRAGMENT" | 'etc.'] from inputOutput SFString field named type.

        Tooltip: type indicates whether this ShaderProgram is a vertex or fragment (pixel) shader.
        • Warning: do not wrap extra quotation marks around these SFString enumeration values, since "quotation" "marks" are only used for MFString values.


        Available enumeration values for string comparison: VERTEX, FRAGMENT.
        Specified by:
        getType in interface ShaderPart
        Returns:
        value of type field
      • setType

        public ShaderPartObject setType​(java.lang.String newValue)
        Accessor method to assign String enumeration value ("VERTEX" | "FRAGMENT") to inputOutput SFString field named type.

        Hint: authors have option to choose from an extendible list of predefined enumeration values (VERTEX, FRAGMENT).

        Tooltip: type indicates whether this ShaderProgram is a vertex or fragment (pixel) shader.
        • Warning: do not wrap extra quotation marks around these SFString enumeration values, since "quotation" "marks" are only used for MFString values.
        Specified by:
        setType in interface ShaderPart
        Parameters:
        newValue - is new value for the type field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setType

        public ShaderPartObject setType​(SFStringObject newValue)
        Assign typed object value to SFString type field, similar to setType(String).
        Parameters:
        newValue - is new value for the type field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • getUrl

        public java.lang.String[] getUrl()
        Provide array of String results from inputOutput MFString field named url.

        Tooltip: Location and filename of shader. Multiple locations are more reliable, and including a Web address lets e-mail attachments work.
        • Hint: MFString arrays can have multiple values, so separate each individual string by quote marks "http://www.web3d.org" "http://www.web3d.org/about" "etc."
        • Hint: alternative XML encoding for quotation mark " is &quot; (which is an example of a character entity).
        • Warning: strictly match directory and filename capitalization for http links! This is important for portability. Some operating systems are forgiving of capitalization mismatches, but http/https url addresses and paths in Unix-based operating systems are all case sensitive and intolerant of uppercase/lowercase mismatches.
        • Hint: can replace embedded blank(s) in url queries with %20 for each blank character.
        • Hint: X3D Scene Authoring Hints, urls http://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#urls
        Specified by:
        getUrl in interface ShaderPart
        Specified by:
        getUrl in interface X3DUrlObject
        Returns:
        value of url field
      • getUrlList

        public java.util.ArrayList<java.lang.String> getUrlList()
        Utility method to get ArrayList value of MFString url field, similar to getUrl().
        Returns:
        value of url field
      • setUrl

        public ShaderPartObject setUrl​(java.lang.String[] newValue)
        Accessor method to assign String array to inputOutput MFString field named url.

        Tooltip: Location and filename of shader. Multiple locations are more reliable, and including a Web address lets e-mail attachments work.
        • Hint: MFString arrays can have multiple values, so separate each individual string by quote marks "http://www.web3d.org" "http://www.web3d.org/about" "etc."
        • Hint: alternative XML encoding for quotation mark " is &quot; (which is an example of a character entity).
        • Warning: strictly match directory and filename capitalization for http links! This is important for portability. Some operating systems are forgiving of capitalization mismatches, but http/https url addresses and paths in Unix-based operating systems are all case sensitive and intolerant of uppercase/lowercase mismatches.
        • Hint: can replace embedded blank(s) in url queries with %20 for each blank character.
        • Hint: X3D Scene Authoring Hints, urls http://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#urls
        Specified by:
        setUrl in interface ShaderPart
        Specified by:
        setUrl in interface X3DUrlObject
        Parameters:
        newValue - is new value for the url field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setUrl

        public ShaderPartObject setUrl​(MFStringObject newValue)
        Assign typed object value to MFString url field, similar to setUrl(String[]).
        Parameters:
        newValue - is new value for the url field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setUrl

        public ShaderPartObject setUrl​(SFStringObject newValue)
        Assign single SFString object value to MFString url field, similar to setUrl(String[]).
        Parameters:
        newValue - is new value for the url field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setUrl

        public ShaderPartObject setUrl​(java.lang.String newValue)
        Assign singleton String value to MFString url field, similar to setUrl(String[]).
        Parameters:
        newValue - is new value for the url field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setUrl

        public ShaderPartObject setUrl​(java.util.ArrayList<java.lang.String> newValue)
        Assign ArrayList value of MFString url field, similar to setUrl(String[]).
        Parameters:
        newValue - is new value for the url field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • clearUrl

        public ShaderPartObject clearUrl()
        Utility method to clear MFString value of url field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • setDEF

        public final ShaderPartObject setDEF​(java.lang.String newValue)
        Accessor method to assign String value to inputOutput SFString field named DEF.

        Tooltip: DEF defines a unique ID name for this node, referenceable by other nodes.

        Note that setting the DEF value clears the USE value.
        Specified by:
        setDEF in class X3DConcreteNode
        Parameters:
        newValue - is new value for the DEF field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setDEF

        public ShaderPartObject setDEF​(SFStringObject newValue)
        Assign typed object value to SFString DEF field, similar to setDEF(String).
        Parameters:
        newValue - is new value for the DEF field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • getUSE

        public java.lang.String getUSE()
        Provide String value from inputOutput SFString field named USE.

        Tooltip: USE means reuse an already DEF-ed node ID, excluding all child nodes and all other attributes (except for containerField, which can have a different value).
        • Hint: USE references to previously defined DEF geometry (instead of duplicating nodes) can improve performance.
        • Warning: do NOT include any child nodes, a DEF attribute, or any other attribute values (except for containerField) when defining a USE attribute.
        • Warning: each USE value must match a corresponding DEF value that is defined earlier in the scene.
        Overrides:
        getUSE in class X3DConcreteNode
        Returns:
        value of USE field
        See Also:
        X3D Scene Authoring Hints: Naming Conventions
      • setUSE

        public final ShaderPartObject setUSE​(java.lang.String newValue)
        Accessor method to assign String value to inputOutput SFString field named USE.

        Tooltip: USE means reuse an already DEF-ed node ID, excluding all child nodes and all other attributes (except for containerField, which can have a different value).
        • Hint: USE references to previously defined DEF geometry (instead of duplicating nodes) can improve performance.
        • Warning: do NOT include any child nodes, a DEF attribute, or any other attribute values (except for containerField) when defining a USE attribute.
        • Warning: each USE value must match a corresponding DEF value that is defined earlier in the scene.


        Note: each USE node is still an independent object, with the USE value matching the DEF value in the preceding object.

        Warning: invoking the setUSE() method on this node resets all other fields to their default values (except for containerField) and also releases all child nodes.

        Warning: no other operations can be performed to modify a USE node other than setting an alternate containerField value.
        Specified by:
        setUSE in class X3DConcreteNode
        Parameters:
        newValue - is new value for the USE field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setUSE

        public ShaderPartObject setUSE​(SFStringObject newValue)
        Assign typed object value to SFString USE field, similar to setUSE(String).
        Parameters:
        newValue - is new value for the USE field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • getCssClass

        public java.lang.String getCssClass()
        Provide String value from inputOutput SFString field named class.

        Tooltip: The class attribute is a space-separated list of classes, reserved for use by CSS cascading stylesheets.
        • Warning: currently the class attribute is only supported in XML encoding of X3D scenes.
        • Hint: W3C Cascading Style Sheets https://www.w3.org/Style/CSS
        Overrides:
        getCssClass in class X3DConcreteNode
        Returns:
        value of class field
        See Also:
        W3C Cascading Style Sheets
      • setCssClass

        public final ShaderPartObject setCssClass​(java.lang.String newValue)
        Accessor method to assign String value to inputOutput SFString field named class.

        Tooltip: The class attribute is a space-separated list of classes, reserved for use by CSS cascading stylesheets.
        • Warning: currently the class attribute is only supported in XML encoding of X3D scenes.
        • Hint: W3C Cascading Style Sheets https://www.w3.org/Style/CSS
        Specified by:
        setCssClass in class X3DConcreteNode
        Parameters:
        newValue - is new value for the class field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
        See Also:
        W3C Cascading Style Sheets
      • setCssClass

        public ShaderPartObject setCssClass​(SFStringObject newValue)
        Assign typed object value to SFString cssClass field, similar to setCssClass(String).
        Parameters:
        newValue - is new value for the class field.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setUSE

        public ShaderPartObject setUSE​(ShaderPartObject DEFnode)
        Assign a USE reference to another DEF node of same node type, similar to setUSE(String).

        Warning: note that the setUSE() method on this node resets all other fields to their default values (except for containerField) and also releases all child nodes.

        Warning: no other operations can be performed to modify a USE node other than setting an alternate containerField value.
        Parameters:
        DEFnode - must have a DEF value defined
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • addComments

        public ShaderPartObject addComments​(java.lang.String newComment)
        Add comment as String to contained commentsList.
        Specified by:
        addComments in class X3DConcreteElement
        Parameters:
        newComment - initial value
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • addComments

        public ShaderPartObject addComments​(java.lang.String[] newComments)
        Add comments as String[] array to contained commentsList.
        Specified by:
        addComments in class X3DConcreteElement
        Parameters:
        newComments - array of comments
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • addComments

        public ShaderPartObject addComments​(CommentsBlock newCommentsBlock)
        Add CommentsBlock to contained commentsList.
        Specified by:
        addComments in class X3DConcreteElement
        Parameters:
        newCommentsBlock - block of comments to add
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • findElementByNameValue

        public X3DConcreteElement findElementByNameValue​(java.lang.String nameValue)
        Recursive method to provide object reference to node or statement by name attribute, if found as part of this element or in a contained element. Elements with name fields include meta, Metadata* nodes, field/fieldValue, ProtoDeclare/ExternProtoDeclare/ProtoInstance, CAD and HAnim nodes.

        Warning: first start with findAncestorSceneObject() to check entire scene graph, or findAncestorX3DObject() to check entire model document.

        Warning: more than one element may be found that has the same name, this method does not handle that case.
        Specified by:
        findElementByNameValue in class X3DConcreteElement
        Parameters:
        nameValue - is value of the name field being searched for in this element and child elements(if any)
        Returns:
        object reference to found element, null otherwise
        See Also:
        findNodeByDEF(String), X3DConcreteElement.hasAncestorSceneObject(), X3DConcreteElement.findAncestorX3DObject()
      • findElementByNameValue

        public X3DConcreteElement findElementByNameValue​(java.lang.String nameValue,
                                                         java.lang.String elementName)
        Recursive method to provide object reference to node or statement by name attribute, if found as part of this element or in a contained element. Elements with name fields include meta, Metadata* nodes, field/fieldValue, ProtoDeclare/ExternProtoDeclare/ProtoInstance, CAD and HAnim nodes.

        Warning: first start with findAncestorSceneObject() to check entire scene graph, or findAncestorX3DObject() to check entire model document.

        Warning: more than one element may be found that has the same name, this method does not handle that case.
        Specified by:
        findElementByNameValue in class X3DConcreteElement
        Parameters:
        nameValue - is value of the name field being searched for in this element and child elements(if any)
        elementName - identifies the element of interest (meta MetadataString ProtoDeclare CADassembly ProtoInstance HAnimHumanoid etc.)
        Returns:
        object reference to found element, null otherwise
        See Also:
        findNodeByDEF(String), X3DConcreteElement.hasAncestorSceneObject(), X3DConcreteElement.findAncestorX3DObject()
      • hasElementByNameValue

        public boolean hasElementByNameValue​(java.lang.String nameValue,
                                             java.lang.String elementName)
        Recursive method to determine whether node or statement with given name attribute is found, meaning both objects are attached to same scene graph.
        Parameters:
        nameValue - is value of the name field being searched for in this element and child elements(if any)
        elementName - identifies the element of interest (meta MetadataString ProtoDeclare CADassembly ProtoInstance HAnimHumanoid etc.)
        Returns:
        whether node is found
        See Also:
        findElementByNameValue(String, String)
      • hasNodeByDEF

        public boolean hasNodeByDEF​(java.lang.String DEFvalue)
        Recursive method to determine whether node with DEFvalue is found, meaning both objects are attached to same scene graph.
        Parameters:
        DEFvalue - is value of the name field being searched for in this element and child elements(if any)
        Returns:
        whether node is found
        See Also:
        findNodeByDEF(String)
      • validate

        public java.lang.String validate()
        Recursive method to validate this element plus all contained nodes and statements, using both datatype-specification value checks and regular expression (regex) checking of corresponding string values.
        Specified by:
        validate in class X3DConcreteElement
        Returns:
        validation results (if any)
      • setSourceCode

        public ShaderPartObject setSourceCode​(java.lang.String[] newSourceText)
        Set new source code (for example, JavaScript). WARNING: be sure to prepend ecmascript: prior to any actual source code.
        Parameters:
        newSourceText - is source code to set
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • setSourceCode

        public ShaderPartObject setSourceCode​(java.lang.String newSourceText)
        Set new source code (for example, JavaScript). WARNING: be sure to prepend ecmascript: prior to any actual source code.
        Parameters:
        newSourceText - is source code to set
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
        See Also:
        X3D Scene Authoring Hints: CDATA Character Data
      • setSourceCode

        public ShaderPartObject setSourceCode​(java.lang.StringBuilder newSourceText)
        Set new source code (for example, JavaScript). WARNING: be sure to prepend ecmascript: prior to any actual source code.
        Parameters:
        newSourceText - is source to set
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • appendSourceCode

        public ShaderPartObject appendSourceCode​(java.lang.String newSourceText)
        Append source code (for example, JavaScript)
        Parameters:
        newSourceText - is source to append
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • appendSourceCode

        public ShaderPartObject appendSourceCode​(java.lang.StringBuilder newSourceText)
        Append source code (for example, JavaScript)
        Parameters:
        newSourceText - is source to append
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • clearSource

        public ShaderPartObject clearSource()
        Clear all contained CDATA source code.
        Returns:
        ShaderPartObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).