Commit dc8cb937 authored by Andrey's avatar Andrey
Browse files

Merge remote-tracking branch 'upstream/master'

parents d457a4d5 ef80ac74
Showing with 1832 additions and 54628 deletions
+1832 -54628
......@@ -40,7 +40,8 @@
"XRMediaBinding": "readonly",
"CodeMirror": "readonly",
"esprima": "readonly",
"jsonlint": "readonly"
"jsonlint": "readonly",
"VideoFrame": "readonly"
},
"rules": {
"no-throw-literal": [
......
......@@ -18,7 +18,7 @@ jobs:
- name: Git checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Install Node
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4
with:
node-version: 18
cache: 'npm'
......@@ -35,7 +35,7 @@ jobs:
- name: Git checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Install Node
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4
with:
node-version: 18
cache: 'npm'
......@@ -52,7 +52,7 @@ jobs:
- name: Git checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Install Node
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4
with:
node-version: 18
cache: 'npm'
......@@ -77,7 +77,7 @@ jobs:
- name: Git checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Install Node
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4
with:
node-version: 18
cache: 'npm'
......@@ -89,7 +89,7 @@ jobs:
- name: === E2E testing ===
run: npm run test-e2e
- name: Upload output screenshots
uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4
if: always()
with:
name: Output screenshots
......@@ -103,7 +103,7 @@ jobs:
- name: Git checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Install Node
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4
with:
node-version: 18
cache: 'npm'
......
......@@ -30,16 +30,16 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@b374143c1149a9115d881581d29b8390bbcbb59c # v3
uses: github/codeql-action/init@47b3d888fe66b639e431abf22ebca059152f1eea # v3
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql-config.yml
queries: security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@b374143c1149a9115d881581d29b8390bbcbb59c # v3
uses: github/codeql-action/autobuild@47b3d888fe66b639e431abf22ebca059152f1eea # v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@b374143c1149a9115d881581d29b8390bbcbb59c # v3
uses: github/codeql-action/analyze@47b3d888fe66b639e431abf22ebca059152f1eea # v3
with:
category: "/language:${{matrix.language}}"
......@@ -22,7 +22,7 @@ jobs:
- name: Git checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Install Node
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4
with:
node-version: 18
cache: 'npm'
......@@ -46,7 +46,7 @@ jobs:
# write the output in a json file to upload it as artifact
node -pe "JSON.stringify({ filesize: $FILESIZE, gzip: $FILESIZE_GZIP, treeshaken: $TREESHAKEN, treeshakenGzip: $TREESHAKEN_GZIP, pr: $PR })" > sizes.json
- name: Upload artifact
uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4
with:
name: sizes
path: sizes.json
......@@ -58,7 +58,7 @@ jobs:
- name: Git checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Install Node
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4
with:
node-version: 18
cache: 'npm'
......@@ -126,14 +126,14 @@ jobs:
echo "TREESHAKEN_DIFF=$TREESHAKEN_DIFF" >> $GITHUB_OUTPUT
- name: Find existing comment
uses: peter-evans/find-comment@a54c31d7fa095754bfef525c0c8e5e5674c4b4b1 # v2
uses: peter-evans/find-comment@d5fe37641ad8451bdd80312415672ba26c86575e # v3
id: find-comment
with:
issue-number: ${{ fromJSON(steps.download-artifact.outputs.result).pr }}
comment-author: 'github-actions[bot]'
body-includes: Bundle size
- name: Comment on PR
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
with:
issue-number: ${{ fromJSON(steps.download-artifact.outputs.result).pr }}
comment-id: ${{ steps.find-comment.outputs.comment-id }}
......
The MIT License
Copyright © 2010-2023 three.js authors
Copyright © 2010-2024 three.js authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -51,13 +51,17 @@
THREE.CineonToneMapping
THREE.ACESFilmicToneMapping
THREE.AgXToneMapping
THREE.NeutralToneMapping
THREE.CustomToneMapping
</code>
<p>
هذه الخيارات تحدد خاصية [page:WebGLRenderer.toneMapping toneMapping] في WebGLRenderer. يتم استخدام هذا لتقريب مظهر نطاق الإضاءة العالي (HDR) على الوسط الذي يحتوي على نطاق إضاءة منخفض على شاشة الكمبيوتر القياسية أو شاشة الجوال.
</p>
<p>
THREE.LinearToneMapping، THREE.ReinhardToneMapping، THREE.CineonToneMapping، THREE.ACESFilmicToneMapping و THREE.AgXToneMapping هي تنفيذات مدمجة لتقريب مظهر نطاق الإضاءة العالي (HDR). يتوقع THREE.CustomToneMapping تنفيذًا مخصصًا عن طريق تعديل شفرة GLSL لبرنامج تظليل مقطع المواد. راجع [example:webgl_tonemapping WebGL / tonemapping] مثالًا.
THREE.LinearToneMapping، THREE.ReinhardToneMapping، THREE.CineonToneMapping، THREE.ACESFilmicToneMapping، THREE.AgXToneMapping و THREE.NeutralToneMapping هي تنفيذات مدمجة لتقريب مظهر نطاق الإضاءة العالي (HDR). يتوقع THREE.CustomToneMapping تنفيذًا مخصصًا عن طريق تعديل شفرة GLSL لبرنامج تظليل مقطع المواد. راجع [example:webgl_tonemapping WebGL / tonemapping] مثالًا.
</p>
<p>
THREE.NeutralToneMapping is an implementation based on the Khronos 3D Commerce Group standard tone mapping.
</p>
<h2>المصدر (Source)</h2>
......
......@@ -8,55 +8,55 @@
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
تم تصميم هذه الفئة للمساعدة في
[link:https://en.wikipedia.org/wiki/Ray_casting raycasting]. يتم استخدام Raycasting
لاختيار الماوس (العمل على معرفة الكائنات في المساحة ثلاثية الأبعاد التي يكون عليها الماوس
فوق) من بين أشياء أخرى.
</p>
<h2>مثال الكود</h2>
<code>
const raycaster = new THREE.Raycaster();
const pointer = new THREE.Vector2();
function onPointerMove( event ) {
// حساب موضع المؤشر في إحداثيات الجهاز المعتدلة
// (-1 إلى +1) لكلا المكونين
pointer.x = ( event.clientX / window.innerWidth ) * 2 - 1;
pointer.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
}
function render() {
// تحديث شعاع التقاط مع الكاميرا وموضع المؤشر
raycaster.setFromCamera( pointer, camera );
// حساب الكائنات المتقاطعة مع شعاع التقاط
const intersects = raycaster.intersectObjects( scene.children );
for ( let i = 0; i < intersects.length; i ++ ) {
intersects[ i ].object.material.color.set( 0xff0000 );
}
renderer.render( scene, camera );
}
window.addEventListener( 'pointermove', onPointerMove );
window.requestAnimationFrame(render);
</code>
<h2>أمثلة (Examples)</h2>
<p>
[example:webgl_interactive_cubes Raycasting to a Mesh]<br />
[example:webgl_interactive_cubes_ortho Raycasting to a Mesh in using an OrthographicCamera]<br />
......@@ -68,9 +68,9 @@
[example:webgl_interactive_voxelpainter Raycasting to paint voxels]<br />
[example:webgl_raycaster_texture Raycast to a Texture]
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:Vector3 origin], [param:Vector3 direction], [param:Float near], [param:Float far] )</h3>
<p>
[page:Vector3 origin] — متجه المنشأ الذي يلقي منه الشعاع.<br />
......@@ -82,64 +82,64 @@
أقل من قريب. القيمة الافتراضية هي Infinity.
</p>
<p>هذا يخلق كائن raycaster جديد.<br /></p>
<h2>الخصائص (Properties)</h2>
<h3>[property:Float far]</h3>
<p>
عامل بعيد للraycaster. هذه القيمة تشير إلى الكائنات التي يمكن
تجاهلها بناءً على المسافة. هذه القيمة لا يجب أن تكون سلبية و
يجب أن تكون أكبر من خاصية قريب.
</p>
<h3>[property:Float near]</h3>
<p>
عامل قريب للraycaster. هذه القيمة تشير إلى الكائنات التي يمكن
تجاهلها بناءً على المسافة. هذه القيمة لا يجب أن تكون سلبية و
يجب أن تكون أصغر من خاصية بعيد.
</p>
<h3>[property:Camera camera]</h3>
<p>
الكاميرا المستخدمة عند التصوير بالأشعة ضد كائنات تعتمد على المشهد مثل
كائنات billboarded مثل [page:Sprites]. يمكن تعيين هذا الحقل يدويًا أو
يتم تعيينه عند استدعاء "setFromCamera". افتراضات إلى null.
</p>
<h3>[property:Layers layers]</h3>
<p>
يستخدم من قبل [name] لتجاهل كائنات 3D بشكل اختياري عند إجراء
اختبارات التقاطع. يضمن المثال التالي للكود أن كائنات 3D فقط على طبقة `1` ستحظى باحترام من قِبَل المثيل من [name].
<code>
raycaster.layers.set( 1 );
object.layers.enable( 1 );
raycaster.layers.set( 1 );
object.layers.enable( 1 );
</code>
</p>
<h3>[property:Object params]</h3>
<p>
كائن به الخصائص التالية:
<code>
{
{
Mesh: {},
Line: { threshold: 1 },
LOD: {},
Points: { threshold: 1 },
Sprite: {}
Sprite: {}
}
</code>
حيث threshold هو دقة raycaster عند التقاط
كائنات، في وحدات العالم.
</p>
<h3>[property:Ray ray]</h3>
<p>ال[Page:Ray] المستخدم للتصوير بالأشعة.</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:undefined set]( [param:Vector3 origin], [param:Vector3 direction])</h3>
<p>
[page:Vector3 origin] — متجه المنشأ الذي يلقي منه الشعاع.<br />
......@@ -150,7 +150,7 @@
يحدث الشعاع بمنشأ واتجاه جديد. يرجى ملاحظة أن هذا
الطريقة تنسخ فقط القيم من الوسائط.
</p>
<h3>[method:undefined setFromCamera]( [param:Vector2 coords], [param:Camera camera] )</h3>
<p>
[page:Vector2 coords] — إحداثيات 2D للماوس، في تعديل جهاز
......@@ -158,7 +158,13 @@
[page:Camera camera] — الكاميرا التي يجب أن ينبثق منها الشعاع
</p>
<p>يحدث الشعاع بمنشأ واتجاه جديد.</p>
<h3>[method:this setFromXRController]( [param:WebXRController controller] )</h3>
<p>
[page:WebXRController controller] — The controller to copy the position and direction from.
</p>
<p>Updates the ray with a new origin and direction.</p>
<h3>[method:Array intersectObject]( [param:Object3D object], [param:Boolean recursive], [param:Array optionalTarget] )</h3>
<p>
[page:Object3D object] — الكائن للتحقق من التقاطع مع
......@@ -203,7 +209,7 @@
وجوه كائن، سترغب في تعيين خصائص [page:Mesh.material material]
[page:Material.side side] إلى `THREE.DoubleSide`.
</p>
<h3>[method:Array intersectObjects]( [param:Array objects], [param:Boolean recursive], [param:Array optionalTarget] )</h3>
<p>
[page:Array objects] — الكائنات للتحقق من التقاطع مع
......
......@@ -17,7 +17,6 @@
</p>
<code>
THREE.Float64BufferAttribute
THREE.Float32BufferAttribute
THREE.Float16BufferAttribute
THREE.Uint32BufferAttribute
......
......@@ -7,7 +7,7 @@
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:Object3D] &rarr; [page:Line] &rarr;
[page:Object3D] &rarr; [page:Line] &rarr; [page:LineSegments] &rarr;
<h1>[name]</h1>
......
......@@ -7,7 +7,7 @@
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:Object3D] &rarr; [page:Line] &rarr;
[page:Object3D] &rarr; [page:Line] &rarr; [page:LineSegments] &rarr;
<h1>[name]</h1>
......
......@@ -328,7 +328,8 @@ this.extensions = {
fragDepth: false, // set to use fragment depth values
drawBuffers: false, // set to use draw buffers
shaderTextureLOD: false, // set to use shader texture LOD
clipCullDistance: false // set to use vertex shader clipping
clipCullDistance: false, // set to use vertex shader clipping
multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
};
</code>
</p>
......
......@@ -27,7 +27,7 @@
// إنشاء كرات مع 3 مستويات من التفاصيل وإنشاء مستويات LOD جديدة لهم
for( let i = 0; i < 3; i++ ) {
const geometry = new THREE.IcosahedronGeometry( 10, 3 - i )
const geometry = new THREE.IcosahedronGeometry( 10, 3 - i );
const mesh = new THREE.Mesh( geometry, material );
lod.addLevel( mesh, i * 75 );
}
......
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:WebGLRenderTarget] &rarr;
<h1>[name]</h1>
<p class="desc">
هدف عرض خاص يتيح لشادر الجزء الكتابة إلى عدة
قوام. هذا النهج مفيد لتقنيات العرض المتقدمة مثل
معالجة ما بعد الإنتاج أو العرض المؤجل. انتبه: [name] يمكن استخدامه فقط
مع سياق عرض WebGL 2.
</p>
<h2>أمثلة (Examples)</h2>
<p>
[example:webgl2_multiple_rendertargets webgl2 / multiple / rendertargets ]
</p>
<h2>المنشئ (Constructor)</h2>
<h3>
[name]([param:Number width], [param:Number height], [param:Number count],
[param:Object options])
</h3>
<p>
[page:Number width] - عرض هدف العرض. الافتراضي هو `1`.<br />
[page:Number height] - ارتفاع هدف العرض. الافتراضي هو `1`.<br />
[page:Number count] - عدد أهداف العرض. الافتراضي هو `1`.<br />
options - (كائن اختياري يحمل معلمات القوام لـ
قوام الهدف المُنشأ تلقائيًا وعمق المخزن/مخططات المخزن booleans. لـ
شرح معلمات القوام انظر [page:Texture Texture]. لـ
قائمة بالخيارات الصالحة ، انظر [page:WebGLRenderTarget WebGLRenderTarget]).<br /><br />
</p>
<h2>الخصائص (Properties)</h2>
<h3>[property:Boolean isWebGLMultipleRenderTargets]</h3>
<p>علامة للقراءة فقط للتحقق مما إذا كان كائنًا معينًا من نوع [name].</p>
<h3>[property:Array texture]</h3>
<p>
يتم استبدال خاصية القوام في [name] واستبدالها بمصفوفة.
تحتوي هذه المصفوفة على مراجع [page:WebGLRenderTarget.texture texture]
من أهداف العرض المعنية.
</p>
<p>
خصائص [page:WebGLRenderTarget WebGLRenderTarget] متوفرة على
هذه الفئة.
</p>
<h2>الطرق (Methods)</h2>
<p>
طرق [page:WebGLRenderTarget WebGLRenderTarget] متوفرة على هذه
فئة.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
......@@ -145,6 +145,19 @@
By default, the focal length is specified for a 35mm (full frame) camera.
</p>
<h3>[method:undefined getViewBounds]( [param:Float distance], [param:Vector2 minTarget], [param:Vector2 maxTarget] )
</h3>
<p>
Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.
Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.
</p>
<h3>[method:Vector2 getViewSize]( [param:Float distance], [param:Vector2 target] )</h3>
<p>
Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.
Copies the result into the target Vector2, where x is width and y is height.
</p>
<h3>[method:undefined setViewOffset]( [param:Float fullWidth], [param:Float fullHeight], [param:Float x], [param:Float y], [param:Float width], [param:Float height] )</h3>
<p>
fullWidth — full width of multiview setup<br />
......@@ -214,6 +227,5 @@ camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment