Skip to content

Releases: taichi-dev/taichi_three

v0.1.0

31 Jan 12:31
Compare
Choose a tag to compare

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

20 Dec 14:46
Compare
Choose a tag to compare
v0.1.0-beta Pre-release
Pre-release

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

28 Oct 07:10
Compare
Choose a tag to compare

New in 0.0.9

Notable changes:

  • Support (experimental) SSAO by t3.SSAO node.
  • Support deferred shading by using t3.DeferredMaterial and t3.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, with MCISO and Voxelizer.
  • Support t3.Skybox as model and background sampler.
  • Support t3.ModelGroup for grouped transformations.
  • Add t3.WireframeModel and t3.PolyToEdge.

v0.0.8

16 Oct 07:49
Compare
Choose a tag to compare

New in 0.0.8

API breaking changes:

  • t3.Model.from_obj is now deprecated, use t3.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, and t3.QuadToTri mesh nodes.

Minor updates:

  • Add t3.objmerge, t3.objbreakdown and t3.objautoscale for OBJ editing helpers.
  • Fix broken t3.ScatterModel.

v0.0.7

11 Oct 03:07
Compare
Choose a tag to compare

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 use model.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 to t3.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, use ti.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

06 Oct 01:05
Compare
Choose a tag to compare

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

01 Oct 06:53
Compare
Choose a tag to compare

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

31 Aug 07:01
Compare
Choose a tag to compare

Hot fixes in v0.0.4

  • Fix artifects in ORTHO mode (credit by @DSaurus)
  • Update to new syntax ti.field (for @squarefk's issue)

v0.0.3

19 Aug 04:28
Compare
Choose a tag to compare

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

23 Jun 08:12
Compare
Choose a tag to compare

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: