« ShaderMaterial » : différence entre les versions
Aller à la navigation
Aller à la recherche
(Page créée avec « ===Exemple=== ===Sharders Vertex et Shaders fragment=== ===Attributs intégrés et uniformes=== ===Attributs personnalisés et uniformes=== ===Constructeur=== ===Propriét... ») |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
[[Matériau]] rendu avec des shaders personnalisés. Un shader est un petit programme écrit en [[Définitions#GLSL|GLSL]] qui s'exécute sur le [[Définitions#GPU|GPU]]. Vous pouvez utiliser un shader personnalisé si nécessaire pour : | |||
* mettre en œuvre un effet qui n'est inclus dans aucun des [[Materials|matériaux]] intégrés, | |||
* combiner de nombreux objets en une seule [[Geometry]] ou en une seule [[BufferGeometry]] afin d'améliorer les performances. | |||
Il faut tenir compte des remarques suivantes lorsque vous utilisez un [[ShaderMaterial]]: | |||
*un [[ShaderMaterial]] ne sera rendu correctement que par [[WebGLRenderer]], puisque le code GLSL, dans les propriétés [[Définitions#Vertex shaders|vertexShader]] et [[Définitions#Fragment Shader|fragmentShader]], doit être compilé et exécuté sur le GPU en utilisant [[Définitions#WebGL|WebGL]]. | |||
*À partir de THREE r72, l'attribution directe d'attributs dans un [[ShaderMaterial]] n'est plus prise en charge. Une instance [[BufferGeometry]] (au lieu d'une instance [[Geometry]]) doit être utilisée à la place, en utilisant les instances [[BufferAttribute]] pour définir des attributs personnalisés. | |||
*Depuis TROIS r77, les instances [[WebGLRenderTarget]] ou [[WebGLRenderTargetCube]] ne sont plus censées être utilisées comme uniformes. Leur [[Texture|texture]] doit être utilisée à la place. | |||
*Les attributs et les uniformes intégrés sont transmis aux shaders avec votre code. Si vous ne voulez pas que le programme [[WebGLProgram]] ajoute quoi que ce soit à votre code shader, vous pouvez utiliser [[RawShaderMaterial]] à la place de cette classe. | |||
===Exemple=== | ===Exemple=== | ||
===Sharders Vertex et Shaders fragment=== | ===Sharders Vertex et Shaders fragment=== |
Dernière version du 19 février 2018 à 13:31
Matériau rendu avec des shaders personnalisés. Un shader est un petit programme écrit en GLSL qui s'exécute sur le GPU. Vous pouvez utiliser un shader personnalisé si nécessaire pour :
- mettre en œuvre un effet qui n'est inclus dans aucun des matériaux intégrés,
- combiner de nombreux objets en une seule Geometry ou en une seule BufferGeometry afin d'améliorer les performances.
Il faut tenir compte des remarques suivantes lorsque vous utilisez un ShaderMaterial:
- un ShaderMaterial ne sera rendu correctement que par WebGLRenderer, puisque le code GLSL, dans les propriétés vertexShader et fragmentShader, doit être compilé et exécuté sur le GPU en utilisant WebGL.
- À partir de THREE r72, l'attribution directe d'attributs dans un ShaderMaterial n'est plus prise en charge. Une instance BufferGeometry (au lieu d'une instance Geometry) doit être utilisée à la place, en utilisant les instances BufferAttribute pour définir des attributs personnalisés.
- Depuis TROIS r77, les instances WebGLRenderTarget ou WebGLRenderTargetCube ne sont plus censées être utilisées comme uniformes. Leur texture doit être utilisée à la place.
- Les attributs et les uniformes intégrés sont transmis aux shaders avec votre code. Si vous ne voulez pas que le programme WebGLProgram ajoute quoi que ce soit à votre code shader, vous pouvez utiliser RawShaderMaterial à la place de cette classe.