This repository has been archived by the owner on Dec 14, 2021. It is now read-only.
Releases: DerSchmale/helixjs
Releases · DerSchmale/helixjs
0.6.2 (quickfix)
Changes:
- Some simplifications of RenderItem data
- Improved performance of
Matrix4x4.compose
andMatrix4x4.fromQuaternion
- Skinned animation optimisations:
- Unify memory layout for skeleton bind matrices for uniforms and textures
- Reduce copying of bind pose data when uploading to shaders
- Inlined and removed
Matrix4x4.writeData
andMatrix4x4.writeData4x3
Bugfixes:
- Fix invalidation of skeleton matrices
- Fix broken world matrix assignment for point light shadows
0.6.1
Changes:
- Components can list other component types it needs to be added to the entity first tthrough a static
SomeComponent.dependencies
array - WebGL 2 tiled rendering: Optimize assignment of point/spot lights to tiles
- Removed
EntityProxy
- Added
MotionBlur
andTAA
post-process effects. InitOptions
: allow rendering motion vector buffer throughrenderMotionVectors
, accessible in shaders ashx_motionVectorBuffer
.Effect
:- Request motion vector buffer with
needsMotionVectors
ifrenderMotionVectors
is true - Request sub-pixel camera jitter with
needsCameraJitter
- Request motion vector buffer with
Entity
: Addedstatic
property to prevent writing previous transforms when not needed when rendering motion vectors- Change
hx_backbuffer
andhx_frontbuffer
tohx_backBuffer
andhx_frontbuffer
for consistency Blur
: removenumSamples
property and makeradius
changeable after constructionRenderer.DebugMode
: Rename.SSAO
toAMBIENT_OCCLUSION
SSAO
MakenumSamples
changeable after construction.HBAO
MakenumRays
andnumSamplesPerRay
changeable after construction.- Created new
ambient-occlusion
example - Created new
motion-blur
example. - Created new
taa
example - Don’t generate normal/depth buffer until required
- Pass on
Renderer#skipEffects
toRenderCollector
and initialize normal/depth buffer lazily in order not to allocate unnecessary resources. - Reintroduce
InitOptions#ignoreExtensions
for debugging Skybox
: addintensity
property (available in shaders byhx_intensity
)
Bug fixes:
Mesh.clone
: clone morph targets as well- Allow meshes without morph targets to be part of a morph setup
SceneNode.attach
: Fix assigning arrays- Fix variance and exponential shadow mapping for platforms that don't support RGB32F render targets
EntityEngine
: Fix bug where removing entities from scene would remove other registered entities
0.6.0
- Changed the way components are defined and accessed (through
Entity.components
instead ofEntity.getComponentsByType
etc). - Optimize entity/component traversal
- Add
GL.setVertexLayout
as the de facto way to assign vertex attributes - Introduced
VertexLayoutCache
internally to share vertex layout objects between instances, possibly reducing amount of render state changes - Added
MeshBatch
to allow rendering multiple instances with a single draw call GL
: Do not require explicitenableVertexArray
calls- Create predefined
hx_lodRange
vec2 shader uniform, containingMeshInstance
’slodRangeStart
andlodRangeEnd
Terrain
now extends Entity instead of ComponentTerrain
: change constructor signature and the way the terrain LOD geometry is constructed- Create predefined
hx_heightMap
,hx_heightMapSize
,hx_worldSize
passed to material in Terrain. - Create abstract Texture base class for
Texture2D
andTextureCube
- Added
QuadPartitioning
BasicMaterial
:- Added
translucency
andtranslucencyMap
- Added
billboardMode
- Added
- Added
Impostor
util to generate basic impostors from meshes - Added
LightingModel.Lambert
for diffuse-only lighting. - Updated terrain example with trees and grass
- Created
ImpostorPrimitive
- Added
META.TIME
property andhx_time
shader uniform TextureUtils.getData
: Do not allow reading back from float textures except to encode greyscale data to rgba (due to Safari not supporting float readbacks)VarianceShadowFilter
: Change default parameters to use full float and reduce bleeding- Change
sponza
example model to gltf Renderer.DebugMode
: ReplaceNORMALS_DEPTH
debug mode with separateNORMALS
andDEPTH
BugFixes:
HCM
: Fix progress notifications when loading mipchainsTouch
: Clear pinch value on touch upRaycaster
: Prevent some false intersections.RenderCollector
: Fix render order hint calculations to work as distance.Raycaster
: Correctly test hierarchy visibility- Prevent infinite bounds from affecting shadow bounds
Shader
: Do not insert derivatives extension in shaders when using WebGL 2 contextsDDS
: Fix allhalf_float
uploads if not supported (Safari)- Fix ambient occlusion shaders when using WebGL 2 contexts
0.5.1 (Safari/iOS hotfix)
- Fix Mouse input for Safari
- Fix SH summation in shader due to iOS glsl bugs
HDR/DDS
: Provide fallback for broken half float texture uploads in SafariEquirectangularTexture
: Provide fallback case when float FBOs aren’t supported
0.5.0
Additions and changes:
- Added
SphericalHarmonicsRGB
class to contain L2 spherical harmonic coefficients for spherical RGB functions LightProbe
: ReplacediffuseTexture
withdiffuseSH
, accepting aSphericalHarmonicsRGB
object.- Support blending of multiple light probes.
- Added
DDS
file format support for compressed DXT1, DXT3, DXT5 (when supported by the system) and uncompressed (half) floating point R/RG/RGBA support for bothTexture2D
andTextureCube
- Added
HDR
file format support. - Added
ASH
file format support for spherical harmonics coefficients generated by Knald’s Lys (https://www.knaldtech.com/lys/) - Added
CubeRenderer
to render scenes to cube map - Added
CubeCamera
for cube map rendering (also now used inOmniShadowMapRenderer
) - Added
EquirectangularTexture.fromCube
method - Added
TextureUtils.getData
method for readback - Added
ASH
exporter tohelix-io
- Removed
JPG_EQUIRECTANGULAR
andJPG_HEIGHTMAP
in favor ofequiToCube
andheightmap
options forJPG
AssetLoader
: Do not immediately return empty unloaded asset placeholder in order to be able to change returned type on loading. Pass in a target object if a placeholder is required.MeshInstance
: add lodRangeStart and lodRangeEnd to define a range in which the mesh instance is rendered or not.Texture2D
:- Add mip level parameter to upload functions
- Flip vertical orientation for uploaded images
TextureCube
: Add mip level parameter to upload functions, removeuploadImagesToMipLevel
methodSceneVisitor
: tellacceptVisitor
whether it’s the mainRenderCollector
visitor or not.- Removed
DynamicLightProbe
CenteredGaussianCurve
: renamed methodat
toevaluate
- Renamed all occurrences of “clustered” to “tiled” for the webgl2 rendering path
- Renamed ill-named
capabilities.HDR_FORMAT
toHDR_DATA_TYPE
- Moved blender exporter to
helixjs-tools
repository (https://github.com/DerSchmale/helixjs-tools) - Moved
helix-io
importers to theimport
sub-folder
Bug fixes:
StatsDisplay
: only show triangle count for those on screenHMAT
: Fix bug in light model parsingEquirectangularTexture
: Fix equirectangular to cube projection in FirefoxMaterial.fixedLights
: Fix update of shaders when reassigning an arrayBasicMaterial
: Fix assignment of textures when defining through constructor options objectImporter
and subclasses: UseonFail
signal instead of throwing errors
Examples:
- Replaced all irradiance maps with SH representations.
- Added
io-hdr
showing how to parse HDR cube maps. - Added
multiple-sh-probes
to illustrate multiple blended irradiance probes.
0.4.4
HX
0.1.0 file format loader (See the wiki page for file format details)- Added tools folder with blender exporter
- Added
OrthographicCamera
- Added
ShowSkeleton
debug component - Added
EntityProxy
that allows instancing entireSceneNode
hierarchies - Allow setting
Skeleton
/SkeletonPose
andMorphPose
toSceneNode
and in order to easily share poses. - Removed obsolete
HMESH
andHCLIP
importers/exporters BasicMaterial
: Added texture scale and offset propertiesComponent
: Changed_invalidateBounds
toinvalidateBounds
Entity
: Changed_invalidateBounds
toinvalidateBounds
HMAT
: Allow setting built-in lighting modes.LightProbe
: added intensity propertyFixedLitPass
: prevent invisible lights from being renderedMatrix4x4
: fixed pitch and yaw orientations to be consistent with normal axis rotationsNormalTangentGenerator
:- Add
hx_normal
/hx_tangent
vertex attributes if missing - Fixes for missing
hx_texCoord
attribute when only generating normals
- Add
SceneNode
: Fixed propagation of ancestor visibilitySkeletonXFadeNode
: fixed blending of one-shot animationsTouch
: Added TAP input button
0.4.3
Core:
- Cache shader programs for re-use
- Loaders now initialise materials to prevent massive material init cost on first render
- Move
elementType
property fromMaterial
toMesh
- Created
FixedLightsSystem
that automatically updates materials to use all lights in the scene as fixed lights. - Internal refactoring:
- Trimming of boilerplate code (unnecessary getters/setters)
- Removed
function.call
in favor of stored bound functions in performance-critical code - Simplify texture and uniform buffer assignments in MaterialPass
- Shaders are now made active by calling
GL.setShader()
EffectPass
now uses.draw()
method, can be used outside ofEffect
for simple 2D texture drawing
IO:
- Fix
GLTF
clamped animation keyframes
0.4.2
Core:
- Added
HX.Input
class to easily map multiple input types to the same actions. - Added
HX.Mouse
,HX.MouseLock
,HX.Keyboard
,HX.Touch
, andHX.Gamepad
input types. - Refactored
HX.FloatController
andHX.OrbitController
,HX.FPSController
to use new Input class, and moved them to the examples. - Provided a
HX.getGamepads
,HX.onGamepadConnected
,HX.onGamepadDisconnected
methods to manage HX.Gamepad input types. - Provided a
HX.getVRDisplays
wrapper fornavigator.getVRDisplays
for uniformity. - Add signals to
HX.VRDisplay
to make handling associated handed VR controllers easier. - Fix PCF shadow offsets.
- Fix partition unassignment when detaching objects.
- Assorted bugfixes
Physics:
- Added
HX_PHYS.CylinderCollider
,HX_PHYS.InvertedBoxCollider
- Handle non-root objects correctly in physics, optimize updates for objects that haven’t moved
Examples:
- Added
TrackedController
andTrackHMDController
as illustrations of how to handle VR controller/headset tracking - Added
webvr-interaction
, using room-scale and controller interaction to WebVR
0.4.1
Core:
- Added
EntitySystem::scene
property - Added
Entity::messenger
andComponent::broadcast
for entity and inter-component communication - Allow triggering
AudioEmitter
playback through messages
Physics:
RigidComponent
now broadcasts “collision” message with Collision info object
Examples:
physics-basic
example now adds audio to collisions
0.4.0
- Added WebVR support
- Converted LayeredAnimation to a cloneable Component
- Change copyTo to copyFrom: methods should only change their owner’s state
- Added Audio support through AudioListener and AudioEmitter