# [name]

الفئة الأساسية المجردة للمواد.
تصف المواد مظهر [page:Object objects]. هم محددة بطريقة (غالبًا) مستقلة عن المصور ، لذلك لا تضطر إلى إعادة كتابة المواد إذا قررت استخدام مصور مختلف.
تمتلك الخصائص والطرق التالية من جميع أنواع المواد الأخرى (على الرغم من أنها قد تكون لها افتراضات مختلفة).

## المنشئ (Constructor)

### [name]()

هذا ينشئ مادة عامة.

## الخصائص (Properties)

### [property:Boolean alphaHash]

Enables alpha hashed transparency, an alternative to [page:.transparent] or [page:.alphaTest]. The material will not be rendered if opacity is lower than a random threshold. Randomization introduces some grain or noise, but approximates alpha blending without the associated problems of sorting. Using TAARenderPass can reduce the resulting noise.

### [property:Float alphaTest]

يحدد قيمة ألفا التي يجب استخدامها عند تشغيل اختبار ألفا. المادة لن يتم عرضه إذا كانت الشفافية أقل من هذه القيمة. الافتراضي هو `0`.

### [property:Boolean alphaToCoverage]

يمكّن ألفا للتغطية. يمكن استخدامه فقط مع سياقات MSAA-enabled (وهذا يعني عند إنشاء المصور بمعامل `antialias` مضبوطًا على `true`). الافتراضي هو `false`.

### [property:Integer blendDst]

وجهة المزج. الافتراضي هو [page:CustomBlendingEquation OneMinusSrcAlphaFactor]. انظر عوامل الوجهة [page:CustomBlendingEquation constants] لجميع القِيَم المحتملة.
يجب تعيين [page:Constant blending] للمادة على [page:Materials CustomBlending] لهذا لديه أي تأثير.

### [property:Integer blendDstAlpha]

شفافية [page:.blendDst]. يستخدم قيمة [page:.blendDst] إذا null. الافتراضي هو `null`.

### [property:Integer blendEquation]

معادلة المزج للاستخدام عند تطبيق المزج. الافتراضي هو [page:CustomBlendingEquation AddEquation]. انظر معادلة المزج [page:CustomBlendingEquation constants] لجميع القيم الممكنة.
يجب تعيين [page:Constant blending] للمادة على [page:Materials CustomBlending] لهذا لديه أي تأثير.

### [property:Integer blendEquationAlpha]

شفافية [page:.blendEquation]. يستخدم قيمة [page:.blendEquation] إذا كان null. الافتراضي هو `null`.

### [property:Blending blending]

أي مزج للاستخدام عند عرض الكائنات بهذه المادة.
يجب تعيين هذا على [page:Materials CustomBlending] لاستخدام مخصص [page:Constant blendSrc]، [page:Constant blendDst] أو [page:Constant blendEquation].
انظر وضع المزج [page:Materials constants] لجميع القيم الممكنة. الافتراضي هو [page:Materials NormalBlending].

### [property:Integer blendSrc]

مصدر المزج. الافتراضي هو [page:CustomBlendingEquation SrcAlphaFactor]. انظر عوامل المصدر [page:CustomBlendingEquation constants] للكل القِيَم المحتملة.
يجب تعيين [page:Constant blending] للمادة على [page:Materials CustomBlending] لهذا لديه أي تأثير.

### [property:Integer blendSrcAlpha]

شفافية [page:.blendSrc]. يستخدم قيمة [page:.blendSrc] إذا null. الافتراضي هو `null`.

### [property:Boolean clipIntersection]

تغير سلوك مستويات القطع بحيث يتم قطع تقاطعها فقط ، بدلاً من اتحادهم. الافتراضي هو `false`.

### [property:Array clippingPlanes]

مستويات القطع المحددة من قبل المستخدم محددة كـ THREE.Plane objects في العالم الفضاء. تنطبق هذه المستويات على الكائنات التي يتم إرفاق هذه المادة بها. يتم قطع النقاط في الفضاء التي يكون مسافتها الموقعة إلى المستوى سلبية (غير معروض). هذا يتطلب [page:WebGLRenderer.localClippingEnabled] إلى كن `true`. انظر [example:webgl_clipping_intersection WebGL / clipping /intersection] مثال. الافتراضي هو `null`.

### [property:Boolean clipShadows]

يحدد ما إذا كان يجب قطع الظلال وفقًا للمستويات القطع المحددة على هذه المادة. الافتراضي هو `false`.

### [property:Boolean colorWrite]

سواء كان يجب عرض لون المادة. يمكن استخدام هذا بالتزامن مع خاصية [page:Integer renderOrder] لشبكة لإنشاء غير مرئية الأشياء التي تحجب الأشياء الأخرى. الافتراضي هو `true`.

### [property:Object defines]

تعريفات مخصصة لإدخالها في المظلل. يتم تمرير هذه في شكل محدد كائن حرفي ، بأزواج من المفتاح / القيمة. `{ MY_CUSTOM_DEFINE: '' , PI2: Math.PI * 2 }`. يتم تعريف الأزواج في كل من قمة وشظية المظللات. الافتراضي هو `undefined`.

### [property:Integer depthFunc]

أي دالة عمق للاستخدام. الافتراضي هو [page:Materials LessEqualDepth]. انظر وضع العمق [page:Materials constants] لجميع القيم الممكنة.

### [property:Boolean depthTest]

سواء كان يجب تمكين اختبار العمق عند عرض هذه المادة. افتراضي هو `true`.

### [property:Boolean depthWrite]

سواء كان عرض هذه المادة له أي تأثير على مخزن العمق. الافتراضي هو `true`.
عند رسم تراكبات 2D ، يمكن أن يكون من المفيد تعطيل كتابة العمق في لطبقة عدة أشياء معًا دون إنشاء فنون فهرس z.

### [property:Boolean forceSinglePass]

سواء كان يجب عرض الأشياء الشفافة ذات الجانبين بمرور واحد أم لا. الافتراضي هو `false`.
يعرض المحرك الأشياء الشفافة ذات الجانبين بمكالمتين رسم (الوجوه الخلفية أولاً ، ثم الوجوه الأمامية) للتخفيف من التحولات الشفافة. هناك سيناريوهات ومع ذلك حيث لا ينتج هذا النهج عن مكاسب في الجودة ولكن لا يزال يضاعف المكالمات الرسمية على سبيل المثال عند عرض نباتات مسطحة مثل رشات العشب. في هذه الحالات ، قم بتعيين علامة `forceSinglePass` على `true` إلى تعطيل التقديم المزدوج لتجنب مشاكل الأداء.

### [property:Boolean isMaterial]

علامة للقراءة فقط للتحقق مما إذا كان كائنًا معينًا من نوع [name].

### [property:Boolean stencilWrite]

سواء كانت تتم عمليات الشبكة ضد مخزن الشبكة. في لإجراء كتابات أو مقارنات ضد مخزن الشبكة هذه القيمة يجب أن تكون `true`. الافتراضي هو `false`.

### [property:Integer stencilWriteMask]

قناع البت المستخدم عند الكتابة إلى مخزن الشبكة. الافتراضي هو `0xFF`.

### [property:Integer stencilFunc]

دالة المقارنة بالشبكة التي يجب استخدامها. الافتراضي هو [page:Materials AlwaysStencilFunc]. انظر دالة شبكية [page:Materials constants] لـ جميع القيم الممكنة.

### [property:Integer stencilRef]

القيمة المستخدمة عند إجراء مقارنات شبكية أو شبكية عمليات. الافتراضي هو `0`.

### [property:Integer stencilFuncMask]

قناع البت المستخدم عند المقارنة مع مخزن الشبكة. الافتراضي هو `0xFF`.

### [property:Integer stencilFail]

العملية الشبكية التي يجب تنفيذها عندما تعود دالة المقارنة خطأ. الافتراضي هو [page:Materials KeepStencilOp]. انظر شبكية عمليات [page:Materials constants] لجميع القيم الممكنة.

### [property:Integer stencilZFail]

العملية الشبكية التي يجب تنفيذها عندما تعود دالة المقارنة صحيح ولكن اختبار العمق يفشل. الافتراضي هو [page:Materials KeepStencilOp]. انظر عمليات شبكية [page:Materials constants] لجميع المحتمل القِيَم.

### [property:Integer stencilZPass]

العملية الشبكية التي يجب تنفيذها عندما تعود دالة المقارنة صحيح واختبار العمق يمر. الافتراضي هو [page:Materials KeepStencilOp]. انظر عمليات الشبكة [page:Materials constants] لجميع القيم الممكنة

### [property:Integer id]

رقم فريد لهذه المادة.

### [property:String name]

اسم اختياري للكائن (لا يحتاج إلى أن يكون فريدًا). الافتراضي هو سلسلة فارغة.

### [property:Boolean needsUpdate]

يحدد أن المادة تحتاج إلى إعادة التجميع.

### [property:Float opacity]

عائم في نطاق `0.0` - `1.0` يشير إلى مدى شفافية المادة. قيمة `0.0` تشير إلى الشفافية الكاملة ، `1.0` هو كامل غير شفاف.
إذا لم يتم تعيين خاصية [page:Boolean transparent] للمادة على `true`، ستظل المادة غير شفافة تمامًا وسيؤثر هذا القيمة فقط تأثير لونه.
الافتراضي هو `1.0`.

### [property:Boolean polygonOffset]

سواء كان يجب استخدام إزاحة المضلع. الافتراضي هو `false`. هذا يتوافق مع `GL_POLYGON_OFFSET_FILL` ميزة WebGL.

### [property:Integer polygonOffsetFactor]

تعيين عامل إزاحة المضلع. الافتراضي هو `0`.

### [property:Integer polygonOffsetUnits]

تعيين وحدات إزاحة المضلع. الافتراضي هو `0`.

### [property:String precision]

تجاوز دقة المصور الافتراضية لهذه المادة. يمكن أن يكون `"highp"`، `"mediump"` أو `"lowp"`. الافتراضي هو `null`.

### [property:Boolean premultipliedAlpha]

سواء كان يجب ضرب قيمة ألفا (الشفافية). انظر [Example:webgl_materials_physical_transmission WebGL / Materials / Physical / Transmission] لمثال على الفرق. الافتراضي هو `false`.

### [property:Boolean dithering]

سواء كان يجب تطبيق التدرج على اللون لإزالة مظهر الفرقة. الافتراضي هو `false`.

### [property:Integer shadowSide]

يحدد أي جانب من الوجوه يلقي الظلال. عند التعيين، يمكن أن يكون [page:Materials THREE.FrontSide]، [page:Materials THREE.BackSide]، أو [page:Materials THREE.DoubleSide]. الافتراضي هو `null`.
إذا كان `null`، يتم تحديد الجانب الذي يلقي الظلال على النحو التالي:

[page:Material.side] | Side casting shadows
--- | ---
THREE.FrontSide | back side
THREE.BackSide | front side
THREE.DoubleSide | both sides

### [property:Integer side]

يحدد أي جانب من الوجوه سيتم عرضه - الأمامية، الخلفية أو كلاهما. الافتراضي هو [page:Materials THREE.FrontSide]. خيارات أخرى هي [page:Materials THREE.BackSide] أو [page:Materials THREE.DoubleSide].

### [property:Boolean toneMapped]

يحدد ما إذا كانت هذه المادة معدلة نغمة وفقًا لإعدادات [page:WebGLRenderer.toneMapping toneMapping] للمُصير. الافتراضي هو `true`.

### [property:Boolean transparent]

يحدد ما إذا كانت هذه المادة شفافة. له تأثير على التصيير كما تحتاج الأشياء الشفافة إلى معاملة خاصة وتُصاغ بعد الأشياء غير الشفافة.
عند تعيينه على true، يتم التحكم في مدى شفافية المادة عن طريق تعيين خاصية [page:Float opacity] الخاصة به.
الافتراضي هو `false`.

### [property:String type]

القيمة هي السلسلة 'Material'. يجب عدم تغيير هذا، ويمكن استخدامه للعثور على جميع الكائنات من هذا النوع في المشهد.

### [property:String uuid]

[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] من هذه الحالة المادية. يتم تعيين هذا تلقائيًا، لذلك يجب عدم تحريره.

### [property:Integer version]

يبدأ هذا في `0` ويحسب كم مرة يتم تعيين [page:Material.needsUpdate .needsUpdate] إلى `true`.

### [property:Boolean vertexColors]

يحدد ما إذا كان يتم استخدام تلوين الرأس. الافتراضي هو `false`. يدعم المحرك ألوان RGB و RGBA للرأس اعتمادًا على ما إذا كان يتم استخدام سمة مخزنة لونية ذات ثلاثة (RGB) أو أربعة (RGBA) مكونات.

### [property:Boolean visible]

يحدد ما إذا كانت هذه المادة مرئية. الافتراضي هو `true`.

### [property:Object userData]

كائن يمكن استخدامه لتخزين بيانات مخصصة حول المادة. يجب ألا يحتوي على مراجع إلى الوظائف لأنها لن تتم نسخها.

## الطرق (Methods)

طرق [page:EventDispatcher EventDispatcher] متاحة على هذه الفئة.

### [method:Material clone]( )

يرجع مادة جديدة بنفس المعلمات كهذه المادة.

### [method:this copy]( [param:material material] )

انسخ المعلمات من المادة المارة إلى هذه المادة.

### [method:undefined dispose]()

يحرر الموارد المتعلقة بوحدة معالجة الرسومات التي تم تخصيصها بواسطة هذه الحالة. اتصل بهذه الطريقة كلما لم يعد هذه الحالة مستخدمة في التطبيق الخاص بك.

يجب التخلص من نسج المادة من خلال طريقة dispose() من [page:Texture Texture].

### [method:undefined onBeforeCompile]( [param:Shader shader], [param:WebGLRenderer renderer] )

رد الاتصال الاختياري الذي يتم تنفيذه مباشرة قبل تجميع برنامج الشادر. يتم استدعاء هذه الدالة مع شفرة مصدر الشادر كمعلمة. مفيد لتعديل المواد المدمجة.

على عكس الخصائص، لا يتم دعم رد الاتصال بواسطة [page:Material.clone .clone]()، [page:Material.copy .copy]() و [page:Material.toJSON .toJSON]().

### [method:String customProgramCacheKey]()

في حالة استخدام onBeforeCompile، يمكن استخدام هذا الرد الاتصال لتحديد قيم إعدادات المستخدمة في onBeforeCompile، بحيث يمكن لـ three.js إعادة استخدام شادر مخزن في ذاكرة التخزين المؤقت أو إعادة تجميع شادر لهذه المادة حسب الحاجة.

على سبيل المثال، إذا كان onBeforeCompile يحتوي على جملة شرطية مثل:
`if ( black ) { shader.fragmentShader = shader.fragmentShader.replace('gl_FragColor = vec4(1)', 'gl_FragColor = vec4(0)') }` فيجب تعيين customProgramCacheKey مثل هذا:
`material.customProgramCacheKey = function() { return black ? '1' : '0'; }`

على عكس الخصائص، لا يتم دعم رد الاتصال بواسطة [page:Material.clone .clone]()، [page:Material.copy .copy]() و [page:Material.toJSON .toJSON]().

### [method:undefined setValues]( [param:Object values] )

values - حاوية بالمعلمات.
يضبط الخصائص بناءً على `values`.

### [method:Object toJSON]( [param:Object meta] )

meta - كائن يحتوي على بيانات تعريفية مثل الملمس أو الصور للمادة.
تحويل المادة إلى three.js [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].

## المصدر (Source)

[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]