# Creating a new material

**URL:** <https://community.cesium.com/t/creating-a-new-material/19068>\
**Category:** CesiumJS\
**Created:** [June 14, 2022, 1:10pm UTC](https://community.cesium.com/t/creating-a-new-material/19068 "2022-06-14T13:10:50Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![nikitakogan](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/nikitakogan/32/9237_2.png) [@nikitakogan](https://community.cesium.com/u/nikitakogan)\
**Post date:** [June 14, 2022, 1:10pm UTC](https://community.cesium.com/t/creating-a-new-material/19068/1 "2022-06-14T13:10:50Z")

</div>

hi there , is there and option to create my own material  
like " new MyNewMaterialProperty"

but out side of cesium and implement in one of the classes.

im using resium and created my own component and i want to create my own SomethingGraphics and materialProperty .

---

<div class="post-metadata">

**Author:** ![Gabby\_Getz](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/gabby_getz/32/7838_2.png) [@Gabby\_Getz](https://community.cesium.com/u/Gabby_Getz)\
**Post date:** [June 14, 2022, 6:52pm UTC](https://community.cesium.com/t/creating-a-new-material/19068/2 "2022-06-14T18:52:55Z")

</div>

Hi there,

I’m not sure how this would work going through resium, but you can extend CesiumJS classes with your own. For an example of how to do this, `ImageryProvider.js` is a base class which `GridImageryProvider.js`, `BingMapsImageryProvider.js`, and other imagery provider classes extend.

Thanks,  
Gabby

---

<div class="post-metadata">

**Author:** ![nikitakogan](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/nikitakogan/32/9237_2.png) [@nikitakogan](https://community.cesium.com/u/nikitakogan)\
**Post date:** [June 15, 2022, 3:35am UTC](https://community.cesium.com/t/creating-a-new-material/19068/3 "2022-06-15T03:35:27Z")

</div>

ok and how to I connect it to Material?

cause in Scene/material.js

its getting initialized there with

Material. **SomethingType** = “ **MySome** ”  
​Material​.​\_materialCache​.​addMaterial​(​Material​.​ **SomethingType​** ,​ ​{  
​ ​fabric​: ​{  
​ ​type​: ​Material​.​ **SomethingType** ​,  
​ ​uniforms​: ​{  
​ ​color​: ​new​ ​Color​(​1.0​,​ ​1.0​,​ ​1.0​,​ ​1.0​)​,  
​ ​}​,  
​ ​source​: **MyNewMaterial** ​,  
​ ​}​,  
​ ​translucent​: ​true​,  
​}​)​;

how I can initialize it from out side the module

---

<div class="post-metadata">

**Author:** ![Gabby\_Getz](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/gabby_getz/32/7838_2.png) [@Gabby\_Getz](https://community.cesium.com/u/Gabby_Getz)\
**Post date:** [June 21, 2022, 4:45pm UTC](https://community.cesium.com/t/creating-a-new-material/19068/4 "2022-06-21T16:45:14Z")

</div>

The [Fabric Schema](https://github.com/CesiumGS/cesium/wiki/Fabric) goes more into depth on custom materials. Does that answer your question?
