In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
Examples of behavior that contributes to creating a positive environment include:
Using welcoming and inclusive language
Being respectful of differing viewpoints and experiences
Gracefully accepting constructive criticism
Focusing on what is best for the community
Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
The use of sexualized language or imagery and unwelcome sexual attention or advances
Trolling, insulting/derogatory comments, and personal or political attacks
Public or private harassment
Publishing others' private information, such as a physical or electronic address, without explicit permission
Other conduct which could reasonably be considered inappropriate in a professional setting
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at . All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at http://contributor-covenant.org/version/1/4
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Ensure your pull request adheres to the following guidelines:
Make sure that your submission is really awesome. Awesome lists are curations of the best, not everything.
Try to add a short description of the link you are adding by following the convention. Try to credit the author(s) by linking a Twitter/GitHub profile (or website/portfolio):
For example
Choose the best link of all, that makes the navigation and the understanding of the resource the easiest possible. (i.e. prefer linking a GitHub repository over its demo link, moreover if the demo does no link back to the repository. The demo link is certainly linked anyway in the repo)
Ensure that your submission is in the right category. If it does not fit anywhere, propose a new category or sub-category that we will review in the PR.
Thank you for your suggestions!
A lot of times, making a PR adhere to the standards above can be difficult. If the maintainers notice anything that we'd like changed, we'll ask you to edit your PR before we merge it. There's no need to open a new PR, just edit the existing one. If you're not sure how to do that, here is a guide on the different ways you can update your PR so that we can merge it.
:必讀書籍 熟悉 3D 數學。通過 &
:PBR 概念方面的參考。一座金礦。通過 、 和
:一位非常有趣的作者寫的一本很棒的書,講述了一堆基於 [@shiffman](https:// github.com/shiffman)
:一門很棒的課程,適合最初學者的程序員 想學習如何從頭開始製作 ThreeJS 3D 體驗。通過
通過
:掌握著色器之路的參考。而且是免費的。 通過
:關於 GLSL 的文檔
: 很全面的齊次坐標和射影幾何的文章(終於明白什麼是4th 頂點著色器中的坐標 (w))
:綜合 關於 MeshSurfaceSampler 的文章
: 一篇學習如何在 ThreeJS 中向 2D 圖像添加假深度的好文章。
:清晰的教程 了解著色器投影、視圖和模型矩陣(具有視覺衝擊力)
焦散渲染的巧妙方法
很棒的文章,適合想要創建真正逼真的人水
:非常棒的進化教程 通過 獲得一些關於生成藝術的知識 &
:通過關鍵詞或圖片的視覺搜索引擎(有點像Pinterest)
:很好的靈感來源
:準備好被這個著色器共享平台震撼吧。
:一些關於 ShaderShop 的精彩視頻等等。 通過
:3D 藝術家的資產(紋理、模型、HDRI)
:公共 CC0 3D 資源庫(紋理、模型、HDRI)
:具有漫反射、法線、位移、遮擋、鏡面反射的免費 PBR 紋理 和粗糙度圖。
:用於 3D 渲染和實時使用的數字紋理。
: - 用於基於物理的渲染的 CC0 紋理
:一組有用的信號整形模式(以 轉換為 GLSL)
: 一組很棒的著色器整形函數 通過
:關於如何製作一些信號的快速提醒 的模式
: 別人編碼的噪音,所以你 可以直接在你的著色器中使用它們來獲得很酷的效果(包括:Perlin 噪聲)
還有一些鏈接解釋了方法 ### 其他
:這是學習GLSL著色器的塔羅牌。每個 PixelSpirit 卡都有一個視覺元素及其 GLSL 著色器代碼。這些卡片按從最簡單到最複雜的順序排列,構建了一個代碼函數庫,這些函數庫像一本咒語書一樣組合在一起,形成了一種無限的視覺語言。通過
與 的 PixelSpirit Elemens Deck 相關的庫
: 基於節點的WebGL設計工具,用於程序幾何、粒子、材質 和動畫。
:免費且功能強大,可創建您自己的 3D 資產。很多導出文件擴展名 可用。
:創建程序 3D 資產。免費許可“Houdini 學徒” 可以用來學習(禁止商用)
:一種很有前途的協作式 3D 建模工具。
:一種將 HDRI 文件轉換為立方體貼圖的工具 可以在 ThreeJS 中作為 CubeTexture 加載。通過
:強大的工具,可以讓你的大腦環繞並測試 GLSL 中的整形信號 通過
:具有視覺衝擊力的編輯器,用於塑造 信號,通過拖放模式。(非常棒)來自
:用於 2D/3D 著色器的基於控制台的 GLSL 沙箱,由 提供。它經過其創建者的實戰測試,能夠構建與目標平台無關的創意管道,並且可以非常快速地迭代,並且在製作著色器創意草稿時摩擦更少。您工具包中的必備品。
:用於實驗和與人分享的沙盒。ThreeJS模板可以很方便 成立。
:發現很難為 ThreeJS x Typescript 配置,但是一個很好的沙箱來嘗試新的 事物。
:一個很好的工具,例如,可以嘗試你的 Blender 導出以及它們是如何導出的 將在 ThreeJS 中做出反應。
:託管項目的簡單工具,個人/愛好者類型的項目免費。
:一個顆粒狀的多語言著色器庫,由 設計,旨在提高性能和靈活性。一個跨平台庫,可幫助您非常輕鬆地迭代著色器。深入研究特定功能的代碼也可以幫助您學習 GLSL/HLSL。
:一種處理 ThreeJS 內容的聲明方式 由 做出反應
: 的 react-three-fiber 的有用助手
:受 r3f 啟發的用於 Angular 生態系統的聲明式 ThreeJS 通過
:相當於 的 VueJS r3f
:Svelte 的 three.js 組件庫。
:Svelte 的聲明式 ThreeJS 通過
by :檢查碰撞的高效方法並通過使用邊界體積層次結構來加速光線投射。(真的是您工具包中的必備品)
by :一種靈活、內存緊湊、快速以及在 three-mesh-bvh 之上的動態 CSG 實現。(用於在網格之間執行一些布爾運算的神奇工具,如交集、差分......)
具有大量設置的有用庫
Three.js 導航插件
易於使用的轉向庫
一個完整的網絡角色蒙皮和動畫庫
程序字符生成庫。包括電樞
Three.js 的快速傅里葉變換海洋渲染
具有逼真的水互動的奇妙項目
展示水波紋效果的Demo項目
基於 AABB 的碰撞檢測
:您可以提出問題的論壇( 之前一定要搜索好)
# 貢獻
歡迎投稿!首先閱讀 。
- 精選的 GLSL 資源列表。
- 精選的 WebGL 庫、資源和 多得多。
- 很棒的 WebGPU 資源的精選列表。
- 精選的 OpenGL 庫、調試器和 資源。
- 精心策劃的精彩列表 主要針對初學者/中級的創意編碼資源。
- 很棒的計算機精選列表 視覺資源。
- 精選的 Vulkan 項目和生態系統列表。
- 關於遊戲開發的精彩列表。
- 圖形編程資源列表。
3️⃣ A curated list of awesome ThreeJS resources
3D Math Primer for Graphics and Game Development: A must-read book to be comfortable with 3D maths. by @ZPostFacto & @Ian-Parberry
Physically Based Rendering - From Theory to Implementation: A reference in term of PBR concepts. A gold mine. by @mmp, @wjakob & @humper
The Nature of Code: Amazing book by a very funny author about a bunch of stuff to make experiences more natural based on the Processing language by @shiffman
ThreeJS Journey: A great course accessible for the most beginner programmer who wants to learn how to make ThreeJS 3D experiences from scratch. by @bruno_simon
The Book of Shaders: A reference on the road to master shaders. And it's free. by @patriciogv
Shaderific for OpenGL: Documentation on GLSL
Explaining Homogeneous Coordinates & Projective Geometry: A very comprehensive article on homogeneous coordinates and projective geometry (To finally understand what is the 4th coordinate (w) in your vertex shaders)
Surface Sampling in Three.js: A comprehensive article about MeshSurfaceSampler
How to Create a Fake 3D Image Effect with WebGL: A good article to learn how to add a fake depth to a 2D image in ThreeJS.
Tutorial on Matrices: A limpid tutorial to understand shader projection, view and model matrices (visually impactful)
Real-time rendering of water caustics Clever approach to caustics rendering
Realtime fluid simulation Awesome article for the ones that want to create truly realistic water
generative artistry tutorials: Really awesome evolutive tutorial to acquire some knowledge on Generative Art by @rumyra & @tholman
same.energy: Visual search engine by keyword or picture (a bit like Pinterest)
Pinterest: Good source of inspiration
ShaderToy: Prepare to be blown away by this shader sharing platform.
ShaderShop videos: Some awesome videos about ShaderShop and more. by @mandy3284
Poliigon: Assets for 3D artists (Textures, Models, HDRI)
Poly Haven: Public CC0 3D Asset Library (Textures, Models, HDRI)
3D textures: Free PBR textures with Diffuse, Normal, Displacement, Occlusion, Specularity and Roughness Maps.
Arroway Textures: Digital textures for 3D rendering and real-time use.
ambientCG: - CC0 textures for Physically Based Rendering
Signal shaping functions: A useful set of signal shaping patterns (to convert into GLSL) by @iquilezles
Shaping functions: Awesome set of shaping functions for shaders by @golan
Cheat sheet on curves: A quick reminder on how to make some signal patterns by @kyndinfo
GLSL Noises: Noises coded by others so you can use them directly in your shaders for cool effects (included: Perlin noises)
Realistic water shader There are also some links with explanation of the approach
PixelSpirit Elements Deck: This is a tarot deck for learning GLSL shaders. Each PixelSpirit card has a visual element and its GLSL shader code. The cards are ordered from simplest to most complex, building a library of code functions that combine like a book of spells to form an infinite visual language. by @patriciogv
PixelSpirit GitHub Library associated with the PixelSpirit Elemens Deck by @patriciogv
Polygonjs: Node-based WebGL design tool, used for procedural geometry, particles, materials and animation.
Blender: Free and powerful to create your own 3D assets. A lot of export file extensions are available.
Houdini: To create procedural 3D assets. The free licence "Houdini Apprentice" can be used to learn (no commercial usage)
Spline: A promising tool for 3D modeling, collaboratively.
HDRI-to-CubeMap: A tool to convert your HDRI file into a Cube map that can be load as a CubeTexture in ThreeJS. by @matheowis
GraphToy: Powerful tool to wrap your head around and test shaping signals in GLSL by @iquilezles
ShaderShop editor: Visually impactful editor to work on shaping signals, by drag and dropping patterns. (Mindblowingly awesome) by @mandy3284
glslViewer: Console-based GLSL Sandbox for 2D/3D shaders by @patriciogv. Battle-tested by its creator, it enables to build a creative pipeline agnostic to the target platform and to iterate very fast and with less frictions for making a draft of your shaders ideas. A must-have in your toolkit.
codesandbox: Sandbox to experiment and share with people. ThreeJS template can be easily found.
codepen: Found it hard to configure for ThreeJS x Typescript, but a good sandbox to try out new things.
threejs-editor: A nice tool to, for example, try out your Blender exports and how they will react in ThreeJS.
vercel: Easy tool to host your projects, and free for a personal/hobbyist type of projects.
lygia: a granular and multi-language shader library designed for performance and flexibility by @patriciogv. A cross platform library that will help you iterate on your shaders very easily. Going deep in the code of a specific functionality can also help you learn GLSL/HLSL.
react-three-fiber: A declarative way of handling your ThreeJS stuff for React by @pmndrs
angular-three: Declarative ThreeJS inspired by r3f for the Angular ecosystem by @nartc
threlte: A three.js component library for Svelte.
svelte-cubed: Declarative ThreeJS for Svelte by @Rich-Harris
three-mesh-bvh by @gkjohnson: Highly effective way to check for collisions and to accelerate raycasting by the usage of bounding volume hierarchy. (Really a must have in your toolkit)
three-bvh-csg by @gkjohnson: A flexible, memory compact, fast and dynamic CSG implementation on top of three-mesh-bvh. (Amazing tool to perform some Boolean operations between meshes like intersection, difference, ...)
Pathfinging.js Useful library with tons of settings
Three-pathfinging Three.js plugin for navigation
Kompute Easy to use steering library
ossos A complete character skinning & animation library for the web
mannequin.js Library for procedural character generation. Armature included
fft-ocean Fast Fourier Transform ocean rendering for Three.js
skunami.js Marvellous project with realistic water interaction
Shallow water Demo project that shows water ripple effect
Axis-Aligned Bounding Boxes AABB based collision detection
Stackoverflow ThreeJS: Forum where you can ask your questions ( be sure to search well before)
Contributions welcome! Read the contribution guidelines first.
Or you can reach me on Twitter:
awesome-glsl - A curated list of awesome GLSL resources.
awesome-webgl - A curated list of awesome WebGL libraries, resources and much more.
awesome-webgpu - A curated list of awesome WebGPU resources.
awesome-opengl - A curated list of awesome OpenGL libraries, debuggers and resources.
awesome-creative-coding - A carefully curated list of awesome creative coding resources primarily for beginners/intermediates.
awesome-computer-vision - A curated list of awesome computer vision resources.
awesome-vulkan - A curated list of awesome Vulkan projects and ecosystem.
gamedev - A awesome list about game development.
graphics-resources - A list of graphic programming resources.