Skip to content
This repository was archived by the owner on May 18, 2025. It is now read-only.

Commit 47db45d

Browse files
added clip, fov & fog fragments
1 parent ec5f443 commit 47db45d

File tree

16 files changed

+365
-218
lines changed

16 files changed

+365
-218
lines changed

dist/xrfragment.aframe.js

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@ xrfragment_Parser.parse = function(key,value,store) {
233233
Frag_h["physics"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.METADATA;
234234
Frag_h["fov"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_INT | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
235235
Frag_h["clip"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
236-
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
236+
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
237+
Frag_h["bg"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
237238
Frag_h["namespace"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
238239
Frag_h["SPDX"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
239240
Frag_h["unit"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
@@ -254,12 +255,12 @@ xrfragment_Parser.parse = function(key,value,store) {
254255
var v = new xrfragment_XRF(key,Frag_h[key]);
255256
if(Object.prototype.hasOwnProperty.call(Frag_h,key)) {
256257
if(!v.validate(value)) {
257-
console.log("src/xrfragment/Parser.hx:82:","⚠ fragment '" + key + "' has incompatible value (" + value + ")");
258+
console.log("src/xrfragment/Parser.hx:83:","⚠ fragment '" + key + "' has incompatible value (" + value + ")");
258259
return false;
259260
}
260261
store[key] = v;
261262
if(xrfragment_Parser.debug) {
262-
console.log("src/xrfragment/Parser.hx:86:","✔ " + key + ": " + v.string);
263+
console.log("src/xrfragment/Parser.hx:87:","✔ " + key + ": " + v.string);
263264
}
264265
} else {
265266
if(typeof(value) == "string") {
@@ -1024,6 +1025,23 @@ xrf.navigator.pushState = (file,hash) => {
10241025
if( file == document.location.search.substr(1) ) return // page is in its default state
10251026
window.history.pushState({},`${file}#${hash}`, document.location.pathname + `?${file}#${hash}` )
10261027
}
1028+
xrf.frag.bg = function(v, opts){
1029+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1030+
1031+
console.log("└ bg "+v.x+","+v.y+","+v.z);
1032+
if( scene.background ) delete scene.background
1033+
scene.background = new THREE.Color( v.x, v.y, v.z )
1034+
}
1035+
xrf.frag.clip = function(v, opts){
1036+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1037+
1038+
if( v.x == 0 ) v.x = 1; // THREE.js .near restriction
1039+
console.log("└ clip "+v.x+","+v.y);
1040+
1041+
camera.near = v.x
1042+
camera.far = v.y
1043+
camera.updateProjectionMatrix();
1044+
}
10271045
xrf.frag.env = function(v, opts){
10281046
let { mesh, model, camera, scene, renderer, THREE} = opts
10291047
let env = mesh.getObjectByName(v.string)
@@ -1035,6 +1053,22 @@ xrf.frag.env = function(v, opts){
10351053
renderer.toneMappingExposure = 2;
10361054
console.log(` └ applied image '${v.string}' as environment map`)
10371055
}
1056+
xrf.frag.fog = function(v, opts){
1057+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1058+
1059+
console.log("└ fog "+v.x+","+v.y);
1060+
if( v.x == 0 && v.y == 0 ){
1061+
if( scene.fog ) delete scene.fog
1062+
scene.fog = null;
1063+
}else scene.fog = new THREE.Fog( scene.background, v.x, v.y );
1064+
}
1065+
xrf.frag.fov = function(v, opts){
1066+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1067+
1068+
console.log("└ fov "+v.int);
1069+
camera.fov = v.int;
1070+
camera.updateProjectionMatrix();
1071+
}
10381072
/**
10391073
*
10401074
* navigation, portals & mutations

dist/xrfragment.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@ xrfragment_Parser.parse = function(key,value,store) {
233233
Frag_h["physics"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.METADATA;
234234
Frag_h["fov"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_INT | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
235235
Frag_h["clip"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
236-
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
236+
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
237+
Frag_h["bg"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
237238
Frag_h["namespace"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
238239
Frag_h["SPDX"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
239240
Frag_h["unit"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
@@ -254,12 +255,12 @@ xrfragment_Parser.parse = function(key,value,store) {
254255
var v = new xrfragment_XRF(key,Frag_h[key]);
255256
if(Object.prototype.hasOwnProperty.call(Frag_h,key)) {
256257
if(!v.validate(value)) {
257-
console.log("src/xrfragment/Parser.hx:82:","⚠ fragment '" + key + "' has incompatible value (" + value + ")");
258+
console.log("src/xrfragment/Parser.hx:83:","⚠ fragment '" + key + "' has incompatible value (" + value + ")");
258259
return false;
259260
}
260261
store[key] = v;
261262
if(xrfragment_Parser.debug) {
262-
console.log("src/xrfragment/Parser.hx:86:","✔ " + key + ": " + v.string);
263+
console.log("src/xrfragment/Parser.hx:87:","✔ " + key + ": " + v.string);
263264
}
264265
} else {
265266
if(typeof(value) == "string") {

dist/xrfragment.lua

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1510,12 +1510,18 @@ __xrfragment_Parser.parse = function(key,value,store)
15101510
else
15111511
Frag_h.clip = value1;
15121512
end;
1513-
local value1 = _hx_bit.bor(_hx_bit.bor(_hx_bit.bor(_hx_bit.bor(__xrfragment_XRF.ASSET,__xrfragment_XRF.PV_OVERRIDE),__xrfragment_XRF.T_STRING),__xrfragment_XRF.NAVIGATOR),__xrfragment_XRF.METADATA);
1513+
local value1 = _hx_bit.bor(_hx_bit.bor(_hx_bit.bor(_hx_bit.bor(__xrfragment_XRF.ASSET,__xrfragment_XRF.PV_OVERRIDE),__xrfragment_XRF.T_VECTOR2),__xrfragment_XRF.NAVIGATOR),__xrfragment_XRF.METADATA);
15141514
if (value1 == nil) then
15151515
Frag_h.fog = __haxe_ds_StringMap.tnull;
15161516
else
15171517
Frag_h.fog = value1;
15181518
end;
1519+
local value1 = _hx_bit.bor(_hx_bit.bor(_hx_bit.bor(_hx_bit.bor(__xrfragment_XRF.ASSET,__xrfragment_XRF.PV_OVERRIDE),__xrfragment_XRF.T_VECTOR3),__xrfragment_XRF.NAVIGATOR),__xrfragment_XRF.METADATA);
1520+
if (value1 == nil) then
1521+
Frag_h.bg = __haxe_ds_StringMap.tnull;
1522+
else
1523+
Frag_h.bg = value1;
1524+
end;
15191525
local value1 = _hx_bit.bor(__xrfragment_XRF.ASSET,__xrfragment_XRF.T_STRING);
15201526
if (value1 == nil) then
15211527
Frag_h.namespace = __haxe_ds_StringMap.tnull;
@@ -1616,12 +1622,12 @@ __xrfragment_Parser.parse = function(key,value,store)
16161622
local v = __xrfragment_XRF.new(key, ret);
16171623
if (Frag_h[key] ~= nil) then
16181624
if (not v:validate(value)) then
1619-
__haxe_Log.trace(Std.string(Std.string(Std.string(Std.string("⚠ fragment '") .. Std.string(key)) .. Std.string("' has incompatible value (")) .. Std.string(value)) .. Std.string(")"), _hx_o({__fields__={fileName=true,lineNumber=true,className=true,methodName=true},fileName="src/xrfragment/Parser.hx",lineNumber=82,className="xrfragment.Parser",methodName="parse"}));
1625+
__haxe_Log.trace(Std.string(Std.string(Std.string(Std.string("⚠ fragment '") .. Std.string(key)) .. Std.string("' has incompatible value (")) .. Std.string(value)) .. Std.string(")"), _hx_o({__fields__={fileName=true,lineNumber=true,className=true,methodName=true},fileName="src/xrfragment/Parser.hx",lineNumber=83,className="xrfragment.Parser",methodName="parse"}));
16201626
do return false end;
16211627
end;
16221628
store[key] = v;
16231629
if (__xrfragment_Parser.debug) then
1624-
__haxe_Log.trace(Std.string(Std.string(Std.string("") .. Std.string(key)) .. Std.string(": ")) .. Std.string(v.string), _hx_o({__fields__={fileName=true,lineNumber=true,className=true,methodName=true},fileName="src/xrfragment/Parser.hx",lineNumber=86,className="xrfragment.Parser",methodName="parse"}));
1630+
__haxe_Log.trace(Std.string(Std.string(Std.string("") .. Std.string(key)) .. Std.string(": ")) .. Std.string(v.string), _hx_o({__fields__={fileName=true,lineNumber=true,className=true,methodName=true},fileName="src/xrfragment/Parser.hx",lineNumber=87,className="xrfragment.Parser",methodName="parse"}));
16251631
end;
16261632
else
16271633
if (__lua_Boot.__instanceof(value, String)) then

dist/xrfragment.module.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@ xrfragment_Parser.parse = function(key,value,store) {
233233
Frag_h["physics"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.METADATA;
234234
Frag_h["fov"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_INT | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
235235
Frag_h["clip"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
236-
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
236+
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
237+
Frag_h["bg"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
237238
Frag_h["namespace"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
238239
Frag_h["SPDX"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
239240
Frag_h["unit"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
@@ -254,12 +255,12 @@ xrfragment_Parser.parse = function(key,value,store) {
254255
var v = new xrfragment_XRF(key,Frag_h[key]);
255256
if(Object.prototype.hasOwnProperty.call(Frag_h,key)) {
256257
if(!v.validate(value)) {
257-
console.log("src/xrfragment/Parser.hx:82:","⚠ fragment '" + key + "' has incompatible value (" + value + ")");
258+
console.log("src/xrfragment/Parser.hx:83:","⚠ fragment '" + key + "' has incompatible value (" + value + ")");
258259
return false;
259260
}
260261
store[key] = v;
261262
if(xrfragment_Parser.debug) {
262-
console.log("src/xrfragment/Parser.hx:86:","✔ " + key + ": " + v.string);
263+
console.log("src/xrfragment/Parser.hx:87:","✔ " + key + ": " + v.string);
263264
}
264265
} else {
265266
if(typeof(value) == "string") {

dist/xrfragment.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1310,7 +1310,8 @@ def parse(key,value,store):
13101310
Frag.h["physics"] = (((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_VECTOR3) | xrfragment_XRF.METADATA)
13111311
Frag.h["fov"] = ((((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_INT) | xrfragment_XRF.NAVIGATOR) | xrfragment_XRF.METADATA)
13121312
Frag.h["clip"] = ((((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_VECTOR2) | xrfragment_XRF.NAVIGATOR) | xrfragment_XRF.METADATA)
1313-
Frag.h["fog"] = ((((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_STRING) | xrfragment_XRF.NAVIGATOR) | xrfragment_XRF.METADATA)
1313+
Frag.h["fog"] = ((((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_VECTOR2) | xrfragment_XRF.NAVIGATOR) | xrfragment_XRF.METADATA)
1314+
Frag.h["bg"] = ((((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_VECTOR3) | xrfragment_XRF.NAVIGATOR) | xrfragment_XRF.METADATA)
13141315
Frag.h["namespace"] = (xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING)
13151316
Frag.h["SPDX"] = (xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING)
13161317
Frag.h["unit"] = (xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING)

dist/xrfragment.three.js

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@ xrfragment_Parser.parse = function(key,value,store) {
233233
Frag_h["physics"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.METADATA;
234234
Frag_h["fov"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_INT | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
235235
Frag_h["clip"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
236-
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
236+
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
237+
Frag_h["bg"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
237238
Frag_h["namespace"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
238239
Frag_h["SPDX"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
239240
Frag_h["unit"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
@@ -254,12 +255,12 @@ xrfragment_Parser.parse = function(key,value,store) {
254255
var v = new xrfragment_XRF(key,Frag_h[key]);
255256
if(Object.prototype.hasOwnProperty.call(Frag_h,key)) {
256257
if(!v.validate(value)) {
257-
console.log("src/xrfragment/Parser.hx:82:","⚠ fragment '" + key + "' has incompatible value (" + value + ")");
258+
console.log("src/xrfragment/Parser.hx:83:","⚠ fragment '" + key + "' has incompatible value (" + value + ")");
258259
return false;
259260
}
260261
store[key] = v;
261262
if(xrfragment_Parser.debug) {
262-
console.log("src/xrfragment/Parser.hx:86:","✔ " + key + ": " + v.string);
263+
console.log("src/xrfragment/Parser.hx:87:","✔ " + key + ": " + v.string);
263264
}
264265
} else {
265266
if(typeof(value) == "string") {
@@ -1024,6 +1025,23 @@ xrf.navigator.pushState = (file,hash) => {
10241025
if( file == document.location.search.substr(1) ) return // page is in its default state
10251026
window.history.pushState({},`${file}#${hash}`, document.location.pathname + `?${file}#${hash}` )
10261027
}
1028+
xrf.frag.bg = function(v, opts){
1029+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1030+
1031+
console.log("└ bg "+v.x+","+v.y+","+v.z);
1032+
if( scene.background ) delete scene.background
1033+
scene.background = new THREE.Color( v.x, v.y, v.z )
1034+
}
1035+
xrf.frag.clip = function(v, opts){
1036+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1037+
1038+
if( v.x == 0 ) v.x = 1; // THREE.js .near restriction
1039+
console.log("└ clip "+v.x+","+v.y);
1040+
1041+
camera.near = v.x
1042+
camera.far = v.y
1043+
camera.updateProjectionMatrix();
1044+
}
10271045
xrf.frag.env = function(v, opts){
10281046
let { mesh, model, camera, scene, renderer, THREE} = opts
10291047
let env = mesh.getObjectByName(v.string)
@@ -1035,6 +1053,22 @@ xrf.frag.env = function(v, opts){
10351053
renderer.toneMappingExposure = 2;
10361054
console.log(` └ applied image '${v.string}' as environment map`)
10371055
}
1056+
xrf.frag.fog = function(v, opts){
1057+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1058+
1059+
console.log("└ fog "+v.x+","+v.y);
1060+
if( v.x == 0 && v.y == 0 ){
1061+
if( scene.fog ) delete scene.fog
1062+
scene.fog = null;
1063+
}else scene.fog = new THREE.Fog( scene.background, v.x, v.y );
1064+
}
1065+
xrf.frag.fov = function(v, opts){
1066+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1067+
1068+
console.log("└ fov "+v.int);
1069+
camera.fov = v.int;
1070+
camera.updateProjectionMatrix();
1071+
}
10381072
/**
10391073
*
10401074
* navigation, portals & mutations

dist/xrfragment.three.module.js

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@ xrfragment_Parser.parse = function(key,value,store) {
233233
Frag_h["physics"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.METADATA;
234234
Frag_h["fov"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_INT | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
235235
Frag_h["clip"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
236-
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
236+
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
237+
Frag_h["bg"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.NAVIGATOR | xrfragment_XRF.METADATA;
237238
Frag_h["namespace"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
238239
Frag_h["SPDX"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
239240
Frag_h["unit"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
@@ -254,12 +255,12 @@ xrfragment_Parser.parse = function(key,value,store) {
254255
var v = new xrfragment_XRF(key,Frag_h[key]);
255256
if(Object.prototype.hasOwnProperty.call(Frag_h,key)) {
256257
if(!v.validate(value)) {
257-
console.log("src/xrfragment/Parser.hx:82:","⚠ fragment '" + key + "' has incompatible value (" + value + ")");
258+
console.log("src/xrfragment/Parser.hx:83:","⚠ fragment '" + key + "' has incompatible value (" + value + ")");
258259
return false;
259260
}
260261
store[key] = v;
261262
if(xrfragment_Parser.debug) {
262-
console.log("src/xrfragment/Parser.hx:86:","✔ " + key + ": " + v.string);
263+
console.log("src/xrfragment/Parser.hx:87:","✔ " + key + ": " + v.string);
263264
}
264265
} else {
265266
if(typeof(value) == "string") {
@@ -1024,6 +1025,23 @@ xrf.navigator.pushState = (file,hash) => {
10241025
if( file == document.location.search.substr(1) ) return // page is in its default state
10251026
window.history.pushState({},`${file}#${hash}`, document.location.pathname + `?${file}#${hash}` )
10261027
}
1028+
xrf.frag.bg = function(v, opts){
1029+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1030+
1031+
console.log("└ bg "+v.x+","+v.y+","+v.z);
1032+
if( scene.background ) delete scene.background
1033+
scene.background = new THREE.Color( v.x, v.y, v.z )
1034+
}
1035+
xrf.frag.clip = function(v, opts){
1036+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1037+
1038+
if( v.x == 0 ) v.x = 1; // THREE.js .near restriction
1039+
console.log("└ clip "+v.x+","+v.y);
1040+
1041+
camera.near = v.x
1042+
camera.far = v.y
1043+
camera.updateProjectionMatrix();
1044+
}
10271045
xrf.frag.env = function(v, opts){
10281046
let { mesh, model, camera, scene, renderer, THREE} = opts
10291047
let env = mesh.getObjectByName(v.string)
@@ -1035,6 +1053,22 @@ xrf.frag.env = function(v, opts){
10351053
renderer.toneMappingExposure = 2;
10361054
console.log(` └ applied image '${v.string}' as environment map`)
10371055
}
1056+
xrf.frag.fog = function(v, opts){
1057+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1058+
1059+
console.log("└ fog "+v.x+","+v.y);
1060+
if( v.x == 0 && v.y == 0 ){
1061+
if( scene.fog ) delete scene.fog
1062+
scene.fog = null;
1063+
}else scene.fog = new THREE.Fog( scene.background, v.x, v.y );
1064+
}
1065+
xrf.frag.fov = function(v, opts){
1066+
let { frag, mesh, model, camera, scene, renderer, THREE} = opts
1067+
1068+
console.log("└ fov "+v.int);
1069+
camera.fov = v.int;
1070+
camera.updateProjectionMatrix();
1071+
}
10381072
/**
10391073
*
10401074
* navigation, portals & mutations

0 commit comments

Comments
 (0)