@hology/core 0.0.186 → 0.0.187
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/effects/vfx/vfx-materializer.d.ts +1 -1
- package/dist/gameplay/actors/camera/third-person-camera-component.js +1 -1
- package/dist/gameplay/services/render.d.ts +1 -1
- package/dist/rendering/fog/fog-volume-actor.d.ts +4 -0
- package/dist/rendering/fog/fog-volume-actor.js +1 -1
- package/dist/rendering/fog/fog-volume-object.d.ts +13 -0
- package/dist/rendering/fog/volumetric-fog-pass.js +1 -1
- package/dist/rendering/outline-effect.js +1 -1
- package/dist/rendering.d.ts +8 -0
- package/dist/rendering.js +1 -1
- package/dist/scene/asset-resource-loader.js +1 -1
- package/dist/scene/materializer.d.ts +11 -2
- package/dist/scene/materializer.js +1 -1
- package/dist/scene/model.d.ts +1 -1
- package/dist/scene/storage/storage.js +1 -1
- package/dist/shader/builtin/lambert-shader.d.ts +1 -3
- package/dist/shader/builtin/lambert-shader.js +1 -1
- package/dist/shader/builtin/standard-shader.d.ts +1 -0
- package/dist/shader/builtin/standard-shader.js +1 -1
- package/dist/shader/builtin/toon-shader.d.ts +1 -0
- package/dist/shader/builtin/toon-shader.js +1 -1
- package/dist/shader/builtin/unlit-shader.d.ts +1 -4
- package/dist/shader/builtin/unlit-shader.js +1 -1
- package/dist/shader/sprite-shader.d.ts +8 -0
- package/dist/shader/sprite-shader.js +1 -1
- package/dist/shader-nodes/pom.d.ts +15 -1
- package/dist/shader-nodes/pom.js +1 -1
- package/dist/utils/three/transform-controls.d.ts +2 -2
- package/dist/utils/three/traverse.d.ts +1 -1
- package/package.json +2 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -7,6 +7,14 @@ export declare abstract class SpriteNodeShader {
|
|
|
7
7
|
build(): Material;
|
|
8
8
|
abstract output(): NodeShaderOutput;
|
|
9
9
|
}
|
|
10
|
+
export declare class SpriteShader extends SpriteNodeShader {
|
|
11
|
+
color: THREE.Color;
|
|
12
|
+
opacity: number;
|
|
13
|
+
intensity: number;
|
|
14
|
+
map?: THREE.Texture;
|
|
15
|
+
alphaMap?: THREE.Texture;
|
|
16
|
+
output(): NodeShaderOutput;
|
|
17
|
+
}
|
|
10
18
|
export declare function getSpritePosition(rotation: FloatNode): Vec4Node;
|
|
11
19
|
export declare class SpriteNodeShaderMaterial extends NodeShaderMaterial {
|
|
12
20
|
get color(): THREE.ColorRepresentation;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{NodeShaderMaterial as o}from"../shader-nodes/index.js";import{Vec4Node as
|
|
1
|
+
import{__decorate as t,__metadata as e}from"tslib";import{NodeShaderMaterial as o}from"../shader-nodes/index.js";import{Parameter as i}from"./shader.js";import{Vec4Node as r,glslFunction as n,transformed as a,uniforms as s,UniformFloatNode as l,rgba as p,textureSampler2d as c,varyingAttributes as d,float as m}from"three-shader-graph";import*as h from"three";export class SpriteNodeShader{build(){const t=this.output(),e=getSpritePosition(new l("rotation",0));return new SpriteNodeShaderMaterial({color:t.color,discard:t.discard,transparent:t.transparent??!0,position:e,uniforms:{color:{value:new h.Color(0)}}})}}export class SpriteShader extends SpriteNodeShader{constructor(){super(...arguments),this.color=new h.Color("#FFFFFF"),this.opacity=1,this.intensity=1}output(){let t=m(this.opacity);this.alphaMap&&(t=t.multiply(c(this.alphaMap).sample(d.uv).r));let e=p(this.color,t);return this.map&&(e=e.multiply(c(this.map).sample(d.uv))),null!=this.intensity&&1!==this.intensity&&(e=p(e.rgb.multiplyScalar(this.intensity),e.a)),{color:e}}}t([i(),e("design:type",h.Color)],SpriteShader.prototype,"color",void 0),t([i({range:[0,1]}),e("design:type",Number)],SpriteShader.prototype,"opacity",void 0),t([i({range:[0,10]}),e("design:type",Number)],SpriteShader.prototype,"intensity",void 0),t([i(),e("design:type",h.Texture)],SpriteShader.prototype,"map",void 0),t([i(),e("design:type",h.Texture)],SpriteShader.prototype,"alphaMap",void 0);export function getSpritePosition(t){return n(r,{position:a.position,cameraPosition:s.cameraPosition,viewMatrix:s.viewMatrix,modelViewMatrix:s.modelViewMatrix,rotation:t},"\n // Scale from your model matrix\n vec2 scale;\n scale.x = length(vec3(modelMatrix[0].x, modelMatrix[0].y, modelMatrix[0].z));\n scale.y = length(vec3(modelMatrix[1].x, modelMatrix[1].y, modelMatrix[1].z));\n\n vec3 right, up;\n vec3 objectPos = (modelMatrix * vec4(0.0, 0.0, 0.0, 1.0)).xyz;\n\n #ifdef LOCK_Y_AXIS\n vec3 cameraPos = cameraPosition;\n vec3 lookDir = normalize(vec3(cameraPos.x - objectPos.x, 0.0, cameraPos.z - objectPos.z));\n right = normalize(vec3(lookDir.z, 0.0, -lookDir.x));\n up = vec3(0.0, 1.0, 0.0);\n #else\n right = vec3(viewMatrix[0][0], viewMatrix[1][0], viewMatrix[2][0]);\n up = vec3(viewMatrix[0][1], viewMatrix[1][1], viewMatrix[2][1]);\n #endif\n\n // then your shared code:\n vec2 center = vec2(0.5, 0.5);\n vec2 alignedPosition = (position.xy - (center - vec2(0.5))) * scale;\n\n vec2 rotatedPosition;\n rotatedPosition.x = cos(rotation) * alignedPosition.x - sin(rotation) * alignedPosition.y;\n rotatedPosition.y = sin(rotation) * alignedPosition.x + cos(rotation) * alignedPosition.y;\n\n vec3 billboardPos = objectPos + right * rotatedPosition.x + up * rotatedPosition.y;\n\n return projectionMatrix * viewMatrix * vec4(billboardPos, 1.0);\n ")}export class SpriteNodeShaderMaterial extends o{get color(){return this.uniforms.color.value}set color(t){this.uniforms.color.value=new h.Color(t)}get rotation(){return this.uniforms.rotation.value}set rotation(t){this.uniforms.rotation.value=t}}/*
|
|
2
2
|
* Copyright (©) 2026 Hology Interactive AB. All rights reserved.
|
|
3
3
|
* See the LICENSE.md file for details.
|
|
4
4
|
*/
|
|
@@ -1,4 +1,18 @@
|
|
|
1
|
-
import { FloatNode, Sampler2DNode, Vec2Node } from "three-shader-graph";
|
|
1
|
+
import { FloatNode, Sampler2DNode, Vec2Node, Vec3Node, Vec4Node } from "three-shader-graph";
|
|
2
|
+
/**
|
|
3
|
+
* Computes tangent vector using normal, position and uv.
|
|
4
|
+
* Equivalent to:
|
|
5
|
+
* vec3 dp1 = dFdx(position);
|
|
6
|
+
* vec3 dp2 = dFdy(position);
|
|
7
|
+
* vec2 duv1 = dFdx(uv);
|
|
8
|
+
* vec2 duv2 = dFdy(uv);
|
|
9
|
+
* vec3 dp2perp = cross(dp2, normal);
|
|
10
|
+
* vec3 dp1perp = cross(normal, dp1);
|
|
11
|
+
* vec3 tangent = dp2perp * duv1.x + dp1perp * duv2.x;
|
|
12
|
+
* return normalize(tangent);
|
|
13
|
+
*/
|
|
14
|
+
export declare function computeTangent(normal: Vec3Node, position: Vec3Node, uv: Vec2Node): Vec4Node;
|
|
15
|
+
export declare function fallbackTangent(n: Vec3Node): Vec3Node;
|
|
2
16
|
/**
|
|
3
17
|
* Offsets UV to use parallax occlusion mapping
|
|
4
18
|
* @param uv
|
package/dist/shader-nodes/pom.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{attributes as e,
|
|
1
|
+
import{attributes as e,dFdx as t,dFdy as n,cross as r,float as a,normalize as i,transformed as f,uniforms as l,varying as v,Vec2Node as p,vec4 as o,vec3 as s,abs as u,select as m}from"three-shader-graph";import{glslFunction as d}from"./glsl-node";export function computeTangent(e,a,f){const l=t(a),v=n(a),p=t(f),s=n(f),u=r(v,e),m=r(e,l),d=u.multiplyScalar(p.x).add(m.multiplyScalar(s.x));return o(i(d),1)}export function fallbackTangent(e){const t=u(e.y),n=m(t.lt(a(.999)),s(0,1,0),s(1,0,0));return i(r(n,e))}const c=e.normal,S=v(i(l.normalMatrix.multiplyVec(c))),x=v(f.mvPosition.xyz.multiplyScalar(-1));export function parallaxOcclusionMapping(e,t,n,r=8,i=24){return d(p,{uv:e,heightScale:n,heightMap:t,minLayers:a(r),maxLayers:a(i),vN:S,vViewPosition:x},"\n vec3 N = normalize(vN);\n vec3 viewDir = normalize(vViewPosition);\n\n // Compute TBN in fragment shader using screen-space derivatives\n vec3 dp1 = dFdx(-vViewPosition);\n vec3 dp2 = dFdy(-vViewPosition);\n vec2 duv1 = dFdx(uv);\n vec2 duv2 = dFdy(uv);\n \n vec3 dp2perp = cross(dp2, N);\n vec3 dp1perp = cross(N, dp1);\n vec3 T = dp2perp * duv1.x + dp1perp * duv2.x;\n vec3 B = dp2perp * duv1.y + dp1perp * duv2.y;\n \n // Construct TBN and transform view direction to tangent space\n float invmax = inversesqrt(max(dot(T,T), dot(B,B)));\n mat3 tbn = mat3(T * invmax, B * invmax, N);\n vec3 vv = -viewDir * tbn; \n\n float parallaxLimit = -length(vv.xy) / vv.z;\n parallaxLimit *= heightScale;\n\n vec2 vOffsetDir = normalize(vv.xy);\n vec2 vMaxOffset = vOffsetDir * parallaxLimit;\n\n float nNumSamples = mix(float(maxLayers), float(minLayers), dot(-viewDir, N));\n float fStepSize = 1.0 / nNumSamples;\n\n float fCurrRayHeight = 1.0;\n vec2 vCurrOffset = vec2(0.0);\n vec2 vLastOffset = vec2(0.0);\n float fLastSampledHeight = 1.0;\n float fCurrSampledHeight = 1.0;\n\n for (int nCurrSample = 0; nCurrSample < 24; nCurrSample++) {\n if (float(nCurrSample) > nNumSamples) break;\n\n fCurrSampledHeight = texture2D(heightMap, uv + vCurrOffset).r;\n if (fCurrSampledHeight > fCurrRayHeight) {\n float delta1 = fCurrSampledHeight - fCurrRayHeight;\n float delta2 = (fCurrRayHeight + fStepSize) - fLastSampledHeight;\n float ratio = delta1 / (delta1 + delta2);\n vCurrOffset = ratio * vLastOffset + (1.0 - ratio) * vCurrOffset;\n break;\n } else {\n fCurrRayHeight -= fStepSize;\n vLastOffset = vCurrOffset;\n vCurrOffset += fStepSize * vMaxOffset;\n fLastSampledHeight = fCurrSampledHeight;\n }\n }\n\n return uv + vCurrOffset;\n ")}/*
|
|
2
2
|
* Copyright (©) 2026 Hology Interactive AB. All rights reserved.
|
|
3
3
|
* See the LICENSE.md file for details.
|
|
4
4
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export class TransformControls extends Object3D<import("three").Object3DEventMap> {
|
|
1
|
+
export class TransformControls extends Object3D<import("three").Object3DEventMap, Event> {
|
|
2
2
|
constructor(camera: any, domElement: any);
|
|
3
3
|
raycaster: Raycaster;
|
|
4
4
|
domElement: any;
|
|
@@ -56,7 +56,7 @@ export class TransformControls extends Object3D<import("three").Object3DEventMap
|
|
|
56
56
|
}
|
|
57
57
|
import { Object3D } from 'three';
|
|
58
58
|
import { Raycaster } from 'three';
|
|
59
|
-
export class TransformControlsGizmo extends Object3D<import("three").Object3DEventMap> {
|
|
59
|
+
export class TransformControlsGizmo extends Object3D<import("three").Object3DEventMap, Event> {
|
|
60
60
|
constructor();
|
|
61
61
|
type: string;
|
|
62
62
|
gizmo: {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Mesh, Object3D, Vector3 } from 'three';
|
|
2
2
|
type ObjectPredicate<T> = (obj: T) => boolean;
|
|
3
|
-
export declare function filterScene(scene: Object3D, predicate: ObjectPredicate<Object3D>): Object3D<import("three").Object3DEventMap>[];
|
|
3
|
+
export declare function filterScene(scene: Object3D, predicate: ObjectPredicate<Object3D>): Object3D<import("three").Object3DEventMap, Event>[];
|
|
4
4
|
export declare function findFirstVisibleObject(scene: Object3D, predicate: ObjectPredicate<Object3D>): Object3D;
|
|
5
5
|
export declare function findFirstVisibleMesh(scene: Object3D): Mesh;
|
|
6
6
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hology/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.187",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
"recast-navigation": "0.39.0",
|
|
175
175
|
"rxjs": "7.8.1",
|
|
176
176
|
"three-mesh-bvh": "^0.7.5",
|
|
177
|
-
"three-shader-graph": "^0.2.
|
|
177
|
+
"three-shader-graph": "^0.2.40",
|
|
178
178
|
"three-stdlib": "2.34.0",
|
|
179
179
|
"ts-key-enum": "^2.0.12",
|
|
180
180
|
"typedi": "^0.10.0"
|