Releases: taichi-dev/taichi_three
v0.1.0
New features (and their corresponding examples):
- screen blooming effect -
tests/blooming.py
- fast approximate anti-aliasing, FXAA -
tests/fxaa.py
- image-based lighting, IBL -
examples/ibl_matball.py
- screen space ambient occlusion, SSAO -
tests/ssao.py
- screen space reflection, SSR -
tests/ssr.py
- path tracing mode -
docs/pathtrace.py
End users may install Tina from PyPI:
python3 -m pip install taichi-tina==0.1.0
I'll try to distribute the path tracing renderer as Blender addon in next week. Let me know if you have suggestions or questions.
v0.1.0-beta
Hello, dear Taichi THREE users:
The core is completely re-written after Taichi THREE v0.0.9 is released making the API more intuitive and much easier to maintain in hope for make it available to everyone. It now supports rendering not only triangle meshes but also particles and volumes (more to be added).
Don't worry, many of the good things from legacy Taichi THREE are left, like cook-torrance, mesh editing nodes, OBJ importer, marching cube... but some of the very core parts, including the triangle rasterizer, is completely thrown away and replaced by a more efficient algorithm that is friendly to GPUs when faces are a bit large. The new rasterizer also make compilation a bit faster and no more growing compilation time when there are a lot of models (reliefs #26). Also note that the camera system is completely re-written (sorry @Zony-Zhao and @victoriacity!) and now we no longer have dead-lock (万向节死锁) at +Y and -Y.
The re-written renderer is renamed to Tina
to celebrate the huge changes in its API and important refactors and steps as an answer to issue #21, source of the name might be Seventina
, one of my favorite song of harumakigohan 😆 Another reason is that we don't need a very long import seventina as t3
when import, we could directly use the original package name by import tina
and tina.Scene()
, what do you think?
Also thanks to the cleaned code structure, the renderer now also have a Blender integration work in progress, see Taichi-Blend
, and video demo here.
I won't rename the repo taichi-dev/taichi_three
very soon to prevent dead links to this project.
Also note that the dependency of taichi_glsl
is removed after the transition to tina
, we invent own utility functions like bilerp
and hacks like ti.static
to prevent sync with the taichi_glsl
repo (prevent issues like #32 (comment)).
Thank for watching and making use of my project! Your attention is my biggest motivation. Please let me know if you have issues or fun with it. I'll keep pushing Tina and Taichi forward, I promise ❤️
The legacy version of Taichi THREE could still be found at the legacy
branch.
And here is an video introducing the usage of Tina: https://www.bilibili.com/video/BV1ft4y1r7oW
Finally, the new renderer Tina could be installed using command: pip install taichi-tina
.
What do you think about the new name and these huge refactors? Inputs are welcome!
v0.0.9
New in 0.0.9
Notable changes:
- Support (experimental) SSAO by
t3.SSAO
node. - Support deferred shading by using
t3.DeferredMaterial
andt3.DeferredShading
nodes. - Set up multi-material ID system, use
t3.objunpackmtls
to separate OBJ by their material. - Add a variety of nodes, including
t3.GaussianBlur
,t3.ImgBinaryOp
,t3.SuperSampling2x2
... - Support
t3.DynamicMesh
for mesh with dynamic number of face. - Add
taichi_three.mciso
module, withMCISO
andVoxelizer
. - Support
t3.Skybox
as model and background sampler. - Support
t3.ModelGroup
for grouped transformations. - Add
t3.WireframeModel
andt3.PolyToEdge
.
v0.0.8
New in 0.0.8
API breaking changes:
t3.Model.from_obj
is now deprecated, uset3.Model(t3.Mesh.from_obj(obj))
instead.- Fix the coordinate system to be right-handed: +X right, +Y up, +Z forward; +Z points FROM scene TO camera.
Notable changes:
- Set up a node-alike system for materials, see
examples/physics_based_rendering.py
for example. - Add
t3.Geometry.cube()
,t3.Geometry.cylinder()
for creating mesh without reading disk. - Support Temporal Anti-Aliasing (TAA), use
t3.Camera(taa=True)
to enable it. - Support
t3.readobj('cube.obj', orient='xyZ')
for orientation fixes. - Add
t3.MeshMakeNormal
,t3.MeshGrid
, andt3.QuadToTri
mesh nodes.
Minor updates:
- Add
t3.objmerge
,t3.objbreakdown
andt3.objautoscale
for OBJ editing helpers. - Fix broken
t3.ScatterModel
.
v0.0.7
New in 0.0.7
Notable changes:
- Preview our WIP documentation at https://t3.142857.red.
- Add
t3.SimpleModel
that simply do color interpolation between vertices. - Refactor
t3.CookTorrance
, now usemodel.shading_type = t3.BlinnPhong
if you want non-PBR shading. - Add OBJ edit helpers,
t3.objflipaxis
,t3.objmknorm
,t3.objflipface
,t3.objshow
. - Framebuffered texcoor - get model surface coordinate by mouse, see
examples/screen_to_texcoor.py
. - Separate camera control logic from
t3.Camera
tot3.CameraCtl
. - Support
t3.AmbientLight
and ambient occulsion. - Set up the basis of path tracing scheme.
- Shadow mapping is broken.
Minor fixes:
- Fix an artifect in perspective mode due to texture coordinate interpolation.
- Deprecate
t3.AutoInit
, useti.materialize_callback
for better initializaion. - Use fixed point number in depth buffer for better atomic performance.
- Use ModelView matrix for pre-calculated camera + model transform.
- Support non-equal width and height in camera.
- Make shadow smoother using bilerp.
v0.0.6
New in 0.0.6
Notable changes:
- Support physics-based rendering (PBR), roughness and metallic can be textures.
- Support
t3.ScatterModel
for particle model renderer. - Support
t3.writeobj
for exporting OBJ files. - Add CLI tools, use
python -m taichi_three
to invoke. - Support shadow mapping.
Internal updates:
- Setup the fundemental infrastructure for docsify.
- Standardize multi-buffer infrastructure for camera.
- Standardize texture infrastructure, e.g.:
model.add_texture('color', ti.imread('assets/cloth.jpg'))
model.add_texture('roughness', ti.imread('assets/rough.jpg'))
model.add_texture('metallic', np.array([[0.5]])) # uniform metallic everywhere
v0.0.5
New in v0.0.5
Support smooth shading by interpolating colors at vertices.
Support t3.ModelPP
for per-pixel light samping instead of color interpolation.
Support specifying normal map as textures, by using t3.ModelPP.from_obj(obj, texture, normtex)
.
Support overriding model.pixel_shader
and model.vertex_shader
for customized shader.
API breaking changes
t3.Model
now must take faces
, pos
, tex
, and nrm
as input, use an array with size 1 to dummy them.
Use t3.Model.from_obj
instead to initialize Model from .obj
files.
v0.0.4
v0.0.3
New in 0.0.3
Full camera control: use scene.camera.from_mouse(gui)
after a gui.get_event()
call (without arguments) to control the camera with the mouse
- Drag with the left mouse button pressed to orbit the camera.
- Drag with the right mouse button or use the wheel to zoom in and out.
- Drag with the middle mouse buttom to pan the camera.
Other updates:
- Support binding textures to models.
- Backface culling for perspective cameras.
- Used the area method to compute barycentric coordinates.
- Clip the triangle bounding box to prevent drawing outside the camera.
Credits: @victoriacity, @DSaurus, and @Zony-Zhao, thank for their contributions!
v0.0.2
News:
We now supports mesh rendering!
Check out the usage in README.md.
Added classes:
- Scene
- Model
- Affine
Added functions:
- readobj (thanks to @Zony-Zhao!)
- rotationX
- rotationY
- rotationZ
Deprecated stuffs:
- Scene -> SceneRT (old ray tracing rendering, only support balls)
Dependencies:
- taichi >= 0.6.12
- taichi_glsl >= 0.0.5