#include <OSGMaterial.h>
Inheritance diagram for osg::Material:

Rendering | |
| virtual void | draw (DrawFunctor &func, DrawActionBase *action)=0 |
| virtual void | draw (Geometry *geo, DrawActionBase *action)=0 |
| virtual StatePtr | makeState (void)=0 |
| virtual void | rebuildState (void)=0 |
| StatePtr | getState (void) |
| virtual bool | isTransparent (void) const =0 |
| *typedef TypedFunctor1Base< Action::ResultE, PtrCallArg< DrawActionBase > > | DrawFunctor |
Public Types | |
| typedef MaterialPtr | Ptr |
| enum | { SortKeyFieldId = Inherited::NextFieldId, NextFieldId = SortKeyFieldId + 1 } |
Public Member Functions | |
Sync | |
| *virtual void | changed (BitVector whichField, UInt32 origin) |
Output | |
| *virtual void | dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const |
Comparison | |
| *virtual bool | operator< (const Material &other) const |
| virtual bool | operator== (const Material &other) const |
| virtual bool | operator!= (const Material &other) const |
FieldContainer Get | |
| *virtual FieldContainerType & | getType (void) |
| virtual const FieldContainerType & | getType (void) const |
| virtual UInt32 | getContainerSize (void) const |
Field Get | |
| *SFInt32 * | getSFSortKey (void) |
| Get the Material::_sfSortKey field. | |
| Int32 & | getSortKey (void) |
| Get the value of the Material::_sfSortKey field. | |
| const Int32 & | getSortKey (void) const |
| Get the value of the Material::_sfSortKey field. | |
Field Set | |
| *void | setSortKey (const Int32 &value) |
| Set the value of the Material::_sfSortKey field. | |
Binary Access | |
| *virtual UInt32 | getBinSize (const BitVector &whichField) |
| virtual void | copyToBin (BinaryDataHandler &pMem, const BitVector &whichField) |
| virtual void | copyFromBin (BinaryDataHandler &pMem, const BitVector &whichField) |
Handle Attachments | |
| *void | addAttachment (const AttachmentPtr &fieldContainerP, UInt16 binding=0) |
| void | subAttachment (const AttachmentPtr &fieldContainerP, UInt16 binding=0) |
| AttachmentPtr | findAttachment (UInt32 groupId, UInt16 binding=0) |
| AttachmentPtr | findAttachment (const FieldContainerType &type, UInt16 binding=0) |
| Field Access *SFAttachmentMap * | getSFAttachments (void) |
Clone | |
| *virtual FieldContainerPtr | shallowCopy (void) const =0 |
Static Public Member Functions | |
Class Get | |
| *static const char * | getClassname (void) |
Class Get | |
| *static FieldContainerType & | getClassType (void) |
| access the type of the class | |
| static UInt32 | getClassTypeId (void) |
| access the numerical type of the class | |
Static Public Attributes | |
| static const osg::BitVector | SortKeyFieldMask |
| static const osg::BitVector | MTInfluenceMask |
| static const BitVector | AttachmentsFieldMask |
| static const BitVector | NextFieldMask |
Constants | |
| *static const Int32 | NoStateSorting = 0x7fffffff |
Protected Member Functions | |
Constructors | |
| * | Material (void) |
| Material (const Material &source) | |
Destructors | |
| *virtual | ~Material (void) |
Sync | |
| *void | executeSyncImpl (MaterialBase *pOther, const BitVector &whichField) |
| virtual void | executeSync (FieldContainer &other, const BitVector &whichField) |
Sync | |
| void | executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField) |
Pointer | |
| *AttachmentContainerPtr | getPtr (void) |
MT Destruction | |
| *virtual void | onDestroy (void) |
Protected Attributes | |
| StatePtr | _pState |
Fields | |
| *SFInt32 | _sfSortKey |
Fields | |
| *SFAttachmentMap | _attachmentMap |
Private Types | |
| typedef MaterialBase | Inherited |
Private Member Functions | |
| void | operator= (const Material &source) |
Static Private Member Functions | |
| static void | initMethod (void) |
Friends | |
| class | FieldContainer |
| class | MaterialBase |
Ext: The Material has two interfaces to return a State that represents it. osg::Material::makeState() creates a new osg::State and returns it. This is ok for rare use, but for every frame this is going to be too expensive. For these cases osg::Material::rebuildState() and osg::Material::getState() are used, which modify and return an internal copy of the State.
The other method to implement is osg::Material::isTransparent(), to identify transparent materials to be rendered after the opaque ones.
Definition at line 62 of file OSGMaterial.h.
|
|
Reimplemented from osg::MaterialBase. Reimplemented in osg::ChunkMaterial, osg::ChunkMaterialBase, osg::FresnelMaterial, osg::FresnelMaterialBase, osg::MultiPassMaterial, osg::MultiPassMaterialBase, osg::PhongMaterial, osg::PhongMaterialBase, osg::SimpleMaterial, osg::SimpleMaterialBase, osg::SimpleTexturedMaterial, osg::SimpleTexturedMaterialBase, osg::DVRAppearance, and osg::DVRAppearanceBase. Definition at line 161 of file OSGMaterial.h. |
|
|
Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase. Definition at line 90 of file OSGMaterialBase.h. |
|
|
Reimplemented from osg::AttachmentContainer. Definition at line 92 of file OSGMaterialBase.h. 00093 { 00094 SortKeyFieldId = Inherited::NextFieldId, 00095 NextFieldId = SortKeyFieldId + 1 00096 };
|
|
|
Definition at line 129 of file OSGMaterial.cpp.
|
|
|
Definition at line 135 of file OSGMaterial.cpp. 00135 : 00136 Inherited(source), 00137 _pState () 00138 { 00139 // Doing this kills using prototypes with preset states. 00140 // What's the point of this anyway? Sharing _pState between Materials never 00141 // makes sense 00142 // setRefdCP(_pState, source._pState); 00143 }
|
|
|
Definition at line 145 of file OSGMaterial.cpp. References _pState, and osg::subRefCP().
|
|
|
Reimplemented in osg::ChunkMaterial, and osg::SimpleMaterial. Definition at line 71 of file OSGMaterial.h.
|
|
||||||||||||
|
Reimplemented from osg::AttachmentContainer. Reimplemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, osg::SimpleTexturedMaterial, and osg::DVRAppearance. Definition at line 157 of file OSGMaterial.cpp. References osg::AttachmentContainer::changed(), and rebuildState(). Referenced by osg::MultiPassMaterial::changed(), and osg::ChunkMaterial::changed(). 00158 { 00159 Inherited::changed(whichField, origin); 00160 00161 rebuildState(); 00162 }
|
|
||||||||||||
|
Reimplemented from osg::AttachmentContainer. Reimplemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, osg::SimpleTexturedMaterial, and osg::DVRAppearance. Definition at line 166 of file OSGMaterial.cpp. References SLOG. 00168 { 00169 SLOG << "Material::dump called: NIY!" << std::endl; 00170 // Inherited::dump(uiIndent, bvFlags); 00171 }
|
|
||||||||||||
|
Implemented in osg::ChunkMaterial, and osg::MultiPassMaterial. Referenced by osg::DVRVolume::doDraw(), and osg::MaterialDrawable::drawActionHandler(). |
|
||||||||||||
|
Implemented in osg::ChunkMaterial, and osg::MultiPassMaterial. |
|
|
Creates an instance of a osg::State that is used to represent the material. This is used by the osg::DrawAction. Implemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, and osg::SimpleTexturedMaterial. |
|
|
Update the internal osg::State. Implemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, and osg::SimpleTexturedMaterial. Referenced by changed(), osg::RenderAction::dropFunctor(), and osg::RenderAction::dropGeometry(). |
|
|
Access the internal osg::State, used by the osg::RenderAction. Definition at line 152 of file OSGMaterial.cpp. References _pState. Referenced by osg::RenderAction::dropFunctor(), and osg::RenderAction::dropGeometry(). 00153 { 00154 return _pState; 00155 }
|
|
|
Check if the Material is transparent and thus has to be rendered afte the opaque ones. Implemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, and osg::SimpleTexturedMaterial. Referenced by osg::RenderAction::dropFunctor(), and osg::RenderAction::dropGeometry(). |
|
|
Definition at line 175 of file OSGMaterial.cpp.
|
|
|
Definition at line 180 of file OSGMaterial.cpp. References _pState.
|
|
|
Definition at line 185 of file OSGMaterial.cpp.
|
|
|
Reimplemented in osg::ChunkMaterial, osg::FresnelMaterial, osg::MultiPassMaterial, osg::PhongMaterial, osg::SimpleMaterial, osg::SimpleTexturedMaterial, and osg::DVRAppearance. Definition at line 114 of file OSGMaterial.cpp.
|
|
|
|
|
|
Reimplemented from osg::AttachmentContainer. Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase. Definition at line 58 of file OSGMaterialBase.inl. References osg::MaterialBase::_type. 00059 { 00060 return _type; 00061 }
|
|
|
Reimplemented from osg::AttachmentContainer. Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase. Definition at line 65 of file OSGMaterialBase.inl. References osg::MaterialBase::_type, and osg::TypeBase::getId(). 00066 { 00067 return _type.getId(); 00068 }
|
|
|
Reimplemented from osg::AttachmentContainer. Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase. Definition at line 106 of file OSGMaterialBase.cpp. References osg::MaterialBase::_type. 00107 { 00108 return _type; 00109 }
|
|
|
Reimplemented from osg::AttachmentContainer. Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase. Definition at line 111 of file OSGMaterialBase.cpp. References osg::MaterialBase::_type. 00112 { 00113 return _type; 00114 }
|
|
|
Reimplemented from osg::AttachmentContainer. Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase. Definition at line 117 of file OSGMaterialBase.cpp. 00118 { 00119 return sizeof(Material); 00120 }
|
|
|
Definition at line 75 of file OSGMaterialBase.inl. References osg::MaterialBase::_sfSortKey. 00076 { 00077 return &_sfSortKey; 00078 }
|
|
|
Definition at line 83 of file OSGMaterialBase.inl. References osg::MaterialBase::_sfSortKey, and osg::SField< FieldTypeT, fieldNameSpace >::getValue(). Referenced by osg::RenderAction::dropFunctor(), and osg::RenderAction::dropGeometry(). 00084 { 00085 return _sfSortKey.getValue(); 00086 }
|
|
|
Definition at line 90 of file OSGMaterialBase.inl. References osg::MaterialBase::_sfSortKey, and osg::SField< FieldTypeT, fieldNameSpace >::getValue(). 00091 { 00092 return _sfSortKey.getValue(); 00093 }
|
|
|
Definition at line 97 of file OSGMaterialBase.inl. References osg::MaterialBase::_sfSortKey, and osg::SField< FieldTypeT, fieldNameSpace >::setValue(). 00098 { 00099 _sfSortKey.setValue(value); 00100 }
|
|
|
Reimplemented from osg::AttachmentContainer. Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase. Definition at line 179 of file OSGMaterialBase.cpp. References osg::MaterialBase::_sfSortKey, osg::SField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::AttachmentContainer::getBinSize(), osg::FieldBits::NoField, and osg::MaterialBase::SortKeyFieldMask. Referenced by osg::MultiPassMaterialBase::getBinSize(), and osg::ChunkMaterialBase::getBinSize(). 00180 { 00181 UInt32 returnValue = Inherited::getBinSize(whichField); 00182 00183 if(FieldBits::NoField != (SortKeyFieldMask & whichField)) 00184 { 00185 returnValue += _sfSortKey.getBinSize(); 00186 } 00187 00188 00189 return returnValue; 00190 }
|
|
||||||||||||
|
Reimplemented from osg::AttachmentContainer. Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase. Definition at line 192 of file OSGMaterialBase.cpp. References osg::MaterialBase::_sfSortKey, osg::SField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::AttachmentContainer::copyToBin(), osg::FieldBits::NoField, and osg::MaterialBase::SortKeyFieldMask. Referenced by osg::MultiPassMaterialBase::copyToBin(), and osg::ChunkMaterialBase::copyToBin(). 00194 { 00195 Inherited::copyToBin(pMem, whichField); 00196 00197 if(FieldBits::NoField != (SortKeyFieldMask & whichField)) 00198 { 00199 _sfSortKey.copyToBin(pMem); 00200 } 00201 00202 00203 }
|
|
||||||||||||
|
Reimplemented from osg::AttachmentContainer. Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase. Definition at line 205 of file OSGMaterialBase.cpp. References osg::MaterialBase::_sfSortKey, osg::SField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::AttachmentContainer::copyFromBin(), osg::FieldBits::NoField, and osg::MaterialBase::SortKeyFieldMask. Referenced by osg::MultiPassMaterialBase::copyFromBin(), and osg::ChunkMaterialBase::copyFromBin(). 00207 { 00208 Inherited::copyFromBin(pMem, whichField); 00209 00210 if(FieldBits::NoField != (SortKeyFieldMask & whichField)) 00211 { 00212 _sfSortKey.copyFromBin(pMem); 00213 } 00214 00215 00216 }
|
|
||||||||||||
|
Definition at line 219 of file OSGMaterialBase.cpp. References osg::MaterialBase::_sfSortKey, osg::AttachmentContainer::executeSyncImpl(), osg::FieldBits::NoField, osg::MaterialBase::SortKeyFieldMask, and osg::SField< FieldTypeT, fieldNameSpace >::syncWith(). Referenced by osg::MaterialBase::executeSync(), osg::MultiPassMaterialBase::executeSyncImpl(), and osg::ChunkMaterialBase::executeSyncImpl(). 00221 { 00222 00223 Inherited::executeSyncImpl(pOther, whichField); 00224 00225 if(FieldBits::NoField != (SortKeyFieldMask & whichField)) 00226 _sfSortKey.syncWith(pOther->_sfSortKey); 00227 00228 00229 }
|
|
||||||||||||
|
||||||||||||
|
Definition at line 333 of file OSGFieldContainerImpl.inl. Referenced by osg::StateBase::executeSyncImpl(), osg::DVRShaderBase::executeSyncImpl(), osg::DVRClipGeometryBase::executeSyncImpl(), osg::AttachmentContainer::executeSyncImpl(), and osg::Attachment::executeSyncImpl().
|
|
||||||||||||
|
Reimplemented from osg::AttachmentContainer. Reimplemented in osg::ChunkMaterialBase, osg::FresnelMaterialBase, osg::MultiPassMaterialBase, osg::PhongMaterialBase, osg::SimpleMaterialBase, osg::SimpleTexturedMaterialBase, and osg::DVRAppearanceBase. Definition at line 124 of file OSGMaterialBase.cpp. References osg::MaterialBase::executeSyncImpl(). 00126 { 00127 this->executeSyncImpl((MaterialBase *) &other, whichField); 00128 }
|
|
||||||||||||
|
Definition at line 84 of file OSGAttachmentContainer.cpp. References osg::addRefCP(), osg::beginEditCP(), osg::endEditCP(), osg::NullFC, and osg::subRefCP(). Referenced by osg::AttachmentContainer::AttachmentContainer(), osg::Node::onCreate(), and osg::Image::setAttachmentField(). 00086 { 00087 UInt32 key; 00088 00089 if(fieldContainerP == NullFC) 00090 return; 00091 00092 key = (UInt32 (fieldContainerP->getGroupId()) << 16) | binding; 00093 00094 addRefCP(fieldContainerP); 00095 00096 beginEditCP(fieldContainerP, Attachment::ParentsFieldMask); 00097 { 00098 fieldContainerP->addParent(getPtr()); 00099 } 00100 endEditCP (fieldContainerP, Attachment::ParentsFieldMask); 00101 00102 AttachmentMap::iterator fcI = _attachmentMap.getValue().find(key); 00103 00104 if(fcI != _attachmentMap.getValue().end()) 00105 { 00106 beginEditCP((*fcI).second, Attachment::ParentsFieldMask); 00107 { 00108 (*fcI).second->subParent(getPtr()); 00109 } 00110 endEditCP ((*fcI).second, Attachment::ParentsFieldMask); 00111 00112 subRefCP((*fcI).second); 00113 00114 (*fcI).second = fieldContainerP; 00115 } 00116 else 00117 { 00118 _attachmentMap.getValue()[key] = fieldContainerP; 00119 } 00120 }
|
|
||||||||||||
|
Definition at line 122 of file OSGAttachmentContainer.cpp. References osg::AttachmentContainer::_attachmentMap, osg::beginEditCP(), osg::endEditCP(), osg::AttachmentContainer::getPtr(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::NullFC, osg::Attachment::ParentsFieldMask, and osg::subRefCP(). 00124 { 00125 UInt32 key; 00126 00127 AttachmentMap::iterator fcI; 00128 00129 if(fieldContainerP == NullFC) 00130 return; 00131 00132 key = (UInt32(fieldContainerP->getGroupId()) << 16) | binding; 00133 00134 fcI = _attachmentMap.getValue().find(key); 00135 00136 if(fcI != _attachmentMap.getValue().end()) 00137 { 00138 beginEditCP(fieldContainerP, Attachment::ParentsFieldMask); 00139 { 00140 (*fcI).second->subParent(getPtr()); 00141 } 00142 endEditCP (fieldContainerP, Attachment::ParentsFieldMask); 00143 00144 subRefCP((*fcI).second); 00145 00146 _attachmentMap.getValue().erase(fcI); 00147 } 00148 }
|
|
||||||||||||
|
Definition at line 150 of file OSGAttachmentContainer.cpp. References osg::AttachmentContainer::_attachmentMap, osg::SField< FieldTypeT, fieldNameSpace >::getValue(), and osg::NullFC. Referenced by osg::Image::findAttachmentField(), and osg::Image::setAttachmentField(). 00152 { 00153 UInt32 key = (UInt32(groupId) << 16) | binding; 00154 00155 AttachmentMap::iterator fcI = _attachmentMap.getValue().find(key); 00156 00157 if(fcI == _attachmentMap.getValue().end()) 00158 { 00159 return NullFC; 00160 } 00161 else 00162 { 00163 return (*fcI).second; 00164 } 00165 }
|
|
||||||||||||
|
Definition at line 57 of file OSGAttachmentContainerImpl.inl. 00060 { 00061 return findAttachment(type.getGroupId(), binding); 00062 }
|
|
|
Definition at line 170 of file OSGAttachmentContainer.cpp. References osg::AttachmentContainer::_attachmentMap. 00171 { 00172 return &_attachmentMap; 00173 }
|
|
|
Definition at line 352 of file OSGAttachmentContainer.cpp. Referenced by osg::AttachmentContainer::subAttachment(), and |