Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. Blender's features include 3D modeling, UV unwrapping, texturing, raster graphics editing, rigging and skinning, fluid and smoke simulation, particle simulation, soft body simulation, sculpting, animating, match moving, rendering, motion graphics, video editing, and compositing.
The Dutch animation studio NeoGeo (not associated with the Neo Geo video game hardware entity) started to develop Blender as an in-house application, and based on the timestamps for the first source files, January 2, 1994 is considered to be Blender's birthday.The version 1.00 was released in January 1995, with the primary author being company co-owner and software developer Ton Roosendaal. The name Blender was inspired by a song by the Swiss electronic band Yello, from the album Baby which NeoGeo used in its showreel. Some of the design choices and experiences for Blender were carried over from an earlier software application, called Traces, that Roosendaal developed for NeoGeo on the Commodore Amiga platform during the 1987–1991 period.
On January 1, 1998, Blender was released publicly online as SGI freeware.NeoGeo was later dissolved and its client contracts were taken over by another company. After NeoGeo's dissolution, Ton Roosendaal founded Not a Number Technologies (NaN) in June 1998 to further develop Blender, initially distributing it as shareware until NaN went bankrupt in 2002. This also meant, at the time, discontinuing the development of Blender.
In May 2002, Roosendaal started the non-profit Blender Foundation, with the first goal to find a way to continue developing and promoting Blender as a community-based open-source project. On July 18, 2002, Roosendaal started the "Free Blender" campaign, a crowdfunding precursor. The campaign aimed at open-sourcing Blender for a one-time payment of €100,000 (US$100,670 at the time), with the money being collected from the community. On September 7, 2002, it was announced that they had collected enough funds and would release the Blender source code. Today, Blender is free and open-source software, largely developed by its community as well as 24 employees employed by the Blender Institute.
The Blender Foundation initially reserved the right to use dual licensing, so that, in addition to GPL-2.0-or-later, Blender would have been available also under the Blender License that did not require disclosing source code but required payments to the Blender Foundation. However, they never exercised this option and suspended it indefinitely in 2005. Blender is solely available under "GNU GPLv2 or any later" and was not updated to the GPLv3, as "no evident benefits" were seen.
In 2019, with the release of version 2.80, the integrated game engine for making and prototyping video games was removed; Blender's developers recommended users migrate to more powerful open source game engines such as Godot instead.
Approximately February 2002 it was clear that the company behind Blender, NaN, could not survive and would close its doors in March. Nevertheless, they put out one more release, Blender 2.25. As a sort-of easter egg and last personal tag the artists and developers decided to add a 3D model of a chimpanzee head (called a "monkey" in the software). It was created by Willem-Paul van Overbruggen (SLiD3), who named it Suzanne after the orangutan in the Kevin Smith film Jay and Silent Bob Strike Back.
Suzanne is Blender's alternative to more common test models such as the Utah Teapot and the Stanford Bunny. A low-polygon model with only 500 faces, Suzanne is included in Blender and often used as a quick and easy way to test materials, animations, rigs, textures, and lighting setups. It is as easily added to a scene as a cube or plane.
The largest Blender contest gives out an award called the Suzanne Award.
The following table lists notable developments during Blender's release history: green indicates the current version (3.0.0), yellow indicates currently supported versions, and red indicates versions that are no longer supported (though many later versions can still be used on modern systems).
Blender in development.
SGI version released, IrisGL.
Linux and FreeBSD version, port to OpenGL and X11.
Sun and Linux Alpha version released.
First Manual published.
As of 2021, official releases of Blender for Microsoft Windows, MacOS and Linux, as well as a port for FreeBSD, are available in 64-bit versions. Blender is available for Windows 8.1 and above, and Mac OS X 10.13 and above.
Blender 2.76b was the last supported release for Windows XP and version 2.63 was the last supported release for PowerPC. Blender 2.83 LTS and 2.92 were the last supported versions for Windows 7. In 2013, Blender was released on Android as a demo but hasn't been updated since.
Blender has support for a variety of geometric primitives, including polygon meshes, fast subdivision surface modeling, Bezier curves, NURBS surfaces, metaballs, icospheres, text, and an n-gon modeling system called B-mesh.
Modifiers apply non-destructive effects which can be applied upon rendering or exporting.
Blender has multi-res digital sculpting, which includes dynamic topology, maps baking, remeshing, re-symmetrize, and decimation. The latter is used to simplify models for exporting purposes. E.g. to use in a game.
Blender's Geometry nodes is a node based system for procedurally and non-destructively creating and manipulating geometry. It was first added to Blender 2.92, which focuses on object scattering and instancing. It takes the form of a modifier, so it can be stacked over different modifers. The system uses object attributes which can be modified and overridden with string inputs. Attributes can include Position, Normal and UV maps. All attributes can be viewed in an attribute spreadsheet editor. Geometry Nodes also has the capability of creating primitive mesh such as Cubes, Spheres, Icospheres and Cylinders. In Blender 3.0, support for creating and modifying curves objects will be added to Geometry Nodes. In Blender 3.0, the geometry nodes workflow was completely redesigned with fields in order to make the system more intuitive and work like shader nodes.
Hard surface modeling is usually used to design hard surfaces such as cars and machines. It is usually done in a non-destructive (using as many modifiers as possible) manner but can be destructive.
Blender can be used to simulate smoke, rain, dust, cloth, fluids, hair and rigid bodies.
The fluid simulator can be used for simulating liquids, like water hitting a cup. It uses the Lattice Boltzmann methods (LBM) to simulate the fluids and allows for lots of adjusting of the amount of particles and the resolution.
The particle physics fluid simulation creates particles that follow the Smoothed-particle hydrodynamics method. Simulation tools for soft body dynamics including mesh collision detection, LBM fluid dynamics, smoke simulation, Bullet rigid body dynamics, and an ocean generator with waves. A particle system that includes support for particle-based hair. Real-time control during physics simulation and rendering.
In Blender 2.82 a new fluid sim system called mantaflow was added, replacing the old system.
In Blender 2.92 a new fluid sim system called APIC was added. Vortices and more stable calculations are improved in Relation to FLIP system. Improved Mantaflow is here the source of the APIC part.
Keyframed animation tools including inverse kinematics, armature (skeletal), hook, curve and lattice-based deformations, shape animations, non-linear animation, constraints, and vertex weighting.
Blender's Grease Pencil tools allow for 2D animation within a full 3D pipeline.
Internal render engine with scanline rendering, indirect lighting, and ambient occlusion that can export in a wide variety of formats; A path tracer render engine called Cycles, which can take advantage of the GPU for rendering. Cycles supports the Open Shading Language since Blender 2.65. Cycles Hybrid Rendering is possible in Version 2.92 with Optix. Tiles are calculated with GPU in combination with cpu.
EEVEE is a new physically based real-time renderer. It works both as a renderer for final frames, and as the engine driving Blender's realtime viewport for creating assets.
Blender allows procedural and node-based textures, as well as texture painting, projective painting, vertex painting, weight painting and dynamic painting.
Blender has a node-based compositor within the rendering pipeline accelerated with OpenCL.
Blender also includes a non-linear video editor called the Video Sequence Editor (VSE), with support for effects like Gaussian blur, color grading, fade and wipe transitions, and other video transformations. However, there is no built-in multi-core support for rendering video with the VSE.
Blender supports Python scripting for the creation of custom tools, prototyping, game logic, importing/exporting from other formats and task automation. This allows for integration with a number of external render engines through plugins/addons.
The Blender Game Engine was a built-in real-time graphics and logic engine with features such including collision detection, a dynamics engine, and programmable logic. It also allowed the creation of stand-alone, real-time applications ranging from architectural visualization to video games. In April 2018 it was removed from the upcoming Blender 2.8 release series, having long lagged behind other game engines such as the open-source Godot, and Unity. In the 2.8 announcement, the Blender team specifically mentioned the Godot engine as a suitable replacement for migrating Blender Game Engine users.
Blender Internal, a biased rasterization engine / scanline renderer used in the previous versions of Blender, was also removed for the 2.80 release in favor of the new "EEVEE" renderer, a realtime PBR renderer.
Blender features an internal file system that can pack multiple scenes into a single file (called a ".blend" file).
Most of Blender's ".blend" files are forward, backward, and cross-platform compatible with other versions of Blender, with the following exceptions:
Loading animations stored in post-2.5 files in Blender pre-2.5. This is due to the reworked animation subsystem introduced in Blender 2.5 being inherently incompatible with older versions.
Loading meshes stored in post 2.63. This is due to the introduction of BMesh, a more versatile mesh format.
Blender 2.8 ".blend" files are no longer fully backward compatible, causing errors when opened in previous versions.
All scenes, objects, materials, textures, sounds, images, post-production effects for an entire animation can be stored in a single ".blend" file. Data loaded from external sources, such as images and sounds, can also be stored externally and referenced through either an absolute or relative pathname. Likewise, ".blend" files themselves can also be used as libraries of Blender assets.
Interface configurations are retained in the ".blend" files.
A wide variety of import/export scripts that extend Blender capabilities (accessing the object data via an internal API) make it possible to interoperate with other 3D tools.
Blender organizes data as various kinds of "data blocks" (akin to gltf), such as Objects, Meshes, Lamps, Scenes, Materials, Images and so on. An object in Blender consists of multiple data blocks – for example, what the user would describe as a polygon mesh consists of at least an Object and a Mesh data block, and usually also a Material and many more, linked together. This allows various data blocks to refer to each other. There may be, for example, multiple Objects that refer to the same Mesh and making subsequent editing of the shared mesh result in shape changes in all Objects using this Mesh. Objects, meshes, materials, textures etc. can also be linked to from other .blend files, which is what allows the use of .blend files as reusable resource libraries.
The software supports a variety of 3D file formats for import and export, among them Alembic, 3D Studio (3DS), Filmbox (FBX), Autodesk (DXF), SVG, STL (for 3D printing), UDIM, USD, VRML, WebM, X3D and Obj.
Most of the commands are accessible via hotkeys. There are also comprehensive graphical menus. Numeric buttons can be "dragged" to change their value directly without the need to aim at a particular widget, as well as being set using the keyboard. Both sliders and number buttons can be constrained to various step sizes with modifiers like the Ctrl and Shift keys. Python expressions can also be typed directly into number entry fields, allowing mathematical expressions to specify values.
Blender includes many modes for interacting with objects, the two primary ones being Object Mode and Edit Mode, which are toggled with the Tab key. Object mode is used to manipulate individual objects as a unit, while Edit mode is used to manipulate the actual object data. For example, Object Mode can be used to move, scale, and rotate entire polygon meshes, and Edit Mode can be used to manipulate the individual vertices of a single mesh. There are also several other modes, such as Vertex Paint, Weight Paint, and Sculpt Mode.
The Blender GUI builds its own tiled windowing system on top of one or multiple windows provided by the underlying platform. One platform window (often sized to fill the screen) is divided into sections and subsections that can be of any type of Blender's views or window-types. The user can define multiple layouts of such Blender windows, called screens, and switch quickly between them by selecting from a menu or with keyboard shortcuts. Each window types own GUI elements can be controlled with the same tools that manipulate the 3D view. For example, one can zoom in and out of GUI-buttons using similar controls, one zooms in and out in the 3D viewport. The GUI viewport and screen layout are fully user-customizable. It is possible to set up the interface for specific tasks such as video editing or UV mapping or texturing by hiding features not used for the task.
Cycles is a path-tracing render engine that is designed to be interactive and easy to use, while still supporting many features. It has been included with Blender since 2011, with the release of Blender 2.61. Cycles supports with AVX, AVX2 and AVX-512 extensions a cpu acceleration in modern hardware of Intel and AMD.
Cycles supports GPU rendering, which is used to speed up rendering times. There are three GPU rendering modes: CUDA, which is the preferred method for older Nvidia graphics cards; OptiX, which utilizes the hardware ray-tracing capabilities of Nvidia's Turing architecture & Ampere architecture; and OpenCL, which supports rendering on AMD graphics cards and added Intel Iris and Xe in 2.92.
Multiple GPUs are also supported, which can be used to create a render farm – although having multiple GPUs doesn't increase the available memory, because each GPU can only access its own memory. Since Version 2.90 this limitation of SLI cards is broken with Nvidia Systems with NVlink.
The integrator is the core rendering algorithm used for lighting computations. Cycles currently supports a path tracing integrator with direct light sampling. It works well for a variety of lighting setups, but it is not as suitable for caustics and certain other complex lighting situations. Rays are traced from the camera into the scene, bouncing around until they find a light source (a lamp, an object material emitting light, or the world background), or until they are simply terminated based on the number of maximum bounces determined in the light path settings for the renderer. To find lamps and surfaces emitting light, both indirect light sampling (letting the ray follow the surface bidirectional scattering distribution function, or BSDF) and direct light sampling (picking a light source and tracing a ray towards it) are used.
The default path tracing integrator is a "pure" path tracer. This integrator works by sending a number of light rays that act as photons from the camera out into the scene. These rays will eventually hit either: a light source, an object, or the world background. If these rays hit an object, they will bounce based on the angle of impact, and continue bouncing until a light source has been reached or until a maximum number of bounces, as determined by the user, which will cause it to terminate and result in a black, unlit pixel. Multiple rays are calculated and averaged out for each individual pixel, a process known as "sampling". This sampling number is set by the user and greatly affects the final image. Lower sampling often results in more noise and has the potential to create "fireflies" (which are uncharacteristically bright pixels), while higher sampling greatly reduces noise, but also increases render times.
The alternative is a branched path tracing integrator, which works mostly the same way. Branched path tracing splits the light rays at each intersection with an object according to different surface components, and takes all lights into account for shading instead of just one. This added complexity makes computing each ray slower, but reduces noise in the render, especially in scenes dominated by direct (one-bounce) lighting.
Blender users can create their own nodes using the Open Shading Language (OSL), although it is important to note that this feature is not supported by GPUs.
Materials define the look of meshes, NURBS curves, and other geometric objects. They consist of three shaders to define the mesh's surface appearance, volume inside, and surface displacement.
The surface shader defines the light interaction at the surface of the mesh. One or more bidirectional scattering distribution functions, or BSDFs, can specify if incoming light is reflected, refracted into the mesh, or absorbed. The alpha value is one measure of translucency.
When the surface shader does not reflect or absorb light, it enters the volume (light transmission). If no volume shader is specified, it will pass straight through (or be refracted, see refractive index or IOR) to another side of the mesh.
If one is defined, a volume shader describes the light interaction as it passes through the volume of the mesh. Light may be scattered, absorbed, or even emitted at any point in the volume.
The shape of the surface may be altered by displacement shaders. In this way, textures can be used to make the mesh surface more detailed.
Depending on the settings, the displacement may be virtual – only modifying the surface normals to give the impression of displacement (also known as bump mapping) – real, or a combination of real displacement with bump mapping.
EEVEE (or Eevee) is a real-time PBR renderer included in Blender from version 2.8. This render engine was given the nickname Eevee, after the Pokémon. The name was later made into the backronym "Extra Easy Virtual Environment Engine" or EEVEE.
Using the default 3D viewport drawing system for modeling, texturing, etc.
Free and open-source:
YafaRay (previously Yafray)
LuxCoreRender (previously LuxRender)
Armory3D – a free and open source game engine for Blender written in Haxe
Radeon ProRender – Radeon ProRender for Blender
Malt Render – a non-photorealistic renderer with GLSL shading capabilities
Pixar RenderMan – Blender render addon for RenderMan
Octane Render – OctaneRender plugin for Blender
Indigo Renderer – Indigo for Blender
V-Ray – V-Ray for Blender, V-Ray Standalone is needed for rendering
Maxwell Render – B-Maxwell addon for Blender
Thea Render – Thea for Blender
Corona Renderer – Blender To Corona exporter, Corona Standalone is needed for rendering
Blender's non-photorealistic renderer. It was removed from Blender in version 2.8. Render clay is an add-on by Fabio Russo; it overwrites materials in Blender Internal or Cycles with a clay material in a chosen diffuse color. Included in Blender version 2.79.
Further information: Blender Game Engine
A real-time renderer removed in 2019 with the release of 2.8