Skip to content

Commit

Permalink
Merge pull request #2 from MAG-AdrianMeredith/feat/lightmap-uvs
Browse files Browse the repository at this point in the history
Feat/lightmap uvs
  • Loading branch information
MAG-AdrianMeredith committed Sep 13, 2022
2 parents cd108f6 + c5f7455 commit 40890b0
Show file tree
Hide file tree
Showing 15 changed files with 89 additions and 16 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@
},
"scripts": {
"build": "rollup -c",
"deploy": "npm run build:release && npm run build:types && yarn rollup -i build/playcanvas.mjs/index.js -o build/playcanvas.rel.mjs && cp -rf build/playcanvas.d.ts ../oly-web-client/libs/overrides/playcanvas/build/playcanvas.d.ts && cp -rf build/playcanvas-rel.mjs ../oly-web-client/libs/overrides/playcanvas/build/playcanvas.mjs",
"deploy": "npm run build:release && npm run build:types && yarn rollup -i build/playcanvas.mjs/index.js -o build/playcanvas.rel.mjs && cp -rf build/playcanvas.d.ts ../oly-web-client/libs/overrides/playcanvas/build/playcanvas.d.ts && cp -rf build/playcanvas.rel.mjs ../oly-web-client/libs/overrides/playcanvas/build/playcanvas.mjs",
"build:release": "rollup -c --environment target:release",
"build:debug": "rollup -c --environment target:debug",
"build:dts": "tsc src/index.js --outDir types --allowJs --declaration --emitDeclarationOnly",
Expand Down
5 changes: 4 additions & 1 deletion src/deprecated/deprecated.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import {
SEMANTIC_TEXCOORD1, SEMANTIC_ATTR0, SEMANTIC_ATTR1, SEMANTIC_ATTR2, SEMANTIC_ATTR3,
TEXTURELOCK_READ, TEXTURELOCK_WRITE,
TEXTURETYPE_DEFAULT, TEXTURETYPE_RGBM, TEXTURETYPE_SWIZZLEGGGR,
TYPE_INT8, TYPE_UINT8, TYPE_INT16, TYPE_UINT16, TYPE_INT32, TYPE_UINT32, TYPE_FLOAT32
TYPE_INT8, TYPE_UINT8, TYPE_INT16, TYPE_UINT16, TYPE_INT32, TYPE_UINT32, TYPE_FLOAT32, SEMANTIC_TEXCOORD2, SEMANTIC_TEXCOORD3, SEMANTIC_TEXCOORD4, SEMANTIC_TEXCOORD5, SEMANTIC_TEXCOORD6, SEMANTIC_TEXCOORD7
} from '../graphics/constants.js';
import { begin, dummyFragmentCode, end, fogCode, gammaCode, precisionCode, skinCode, tonemapCode, versionCode } from '../graphics/program-lib/programs/common.js';
import { drawQuadWithShader } from '../graphics/simple-post-effect.js';
Expand Down Expand Up @@ -381,6 +381,9 @@ export const gfx = {
SEMANTIC_TEXCOORD: SEMANTIC_TEXCOORD,
SEMANTIC_TEXCOORD0: SEMANTIC_TEXCOORD0,
SEMANTIC_TEXCOORD1: SEMANTIC_TEXCOORD1,
SEMANTIC_TEXCOORD2: SEMANTIC_TEXCOORD2,
SEMANTIC_TEXCOORD3: SEMANTIC_TEXCOORD3,
SEMANTIC_TEXCOORD4: SEMANTIC_TEXCOORD4,
SEMANTIC_ATTR0: SEMANTIC_ATTR0,
SEMANTIC_ATTR1: SEMANTIC_ATTR1,
SEMANTIC_ATTR2: SEMANTIC_ATTR2,
Expand Down
6 changes: 6 additions & 0 deletions src/graphics/program-lib/chunks/chunks.js
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,9 @@ import transformDeclVS from './common/vert/transformDecl.js';
import transmissionPS from './standard/frag/transmission.js';
import uv0VS from './lit/vert/uv0.js';
import uv1VS from './lit/vert/uv1.js';
import uv2VS from './lit/vert/uv2.js';
import uv3VS from './lit/vert/uv3.js';
import uv4VS from './lit/vert/uv4.js';
import viewDirPS from './lit/frag/viewDir.js';
import viewNormalVS from './lit/vert/viewNormal.js';
import webgpuPS from './common/frag/webgpu.js';
Expand Down Expand Up @@ -393,6 +396,9 @@ const shaderChunks = {
transmissionPS,
uv0VS,
uv1VS,
uv2VS,
uv3VS,
uv4VS,
viewDirPS,
viewNormalVS,
webgpuPS,
Expand Down
3 changes: 3 additions & 0 deletions src/graphics/program-lib/chunks/lit/vert/base.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ attribute vec3 vertex_normal;
attribute vec4 vertex_tangent;
attribute vec2 vertex_texCoord0;
attribute vec2 vertex_texCoord1;
attribute vec2 vertex_texCoord2;
attribute vec2 vertex_texCoord3;
attribute vec2 vertex_texCoord4;
attribute vec4 vertex_color;
uniform mat4 matrix_viewProjection;
Expand Down
5 changes: 5 additions & 0 deletions src/graphics/program-lib/chunks/lit/vert/uv2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export default /* glsl */`
vec2 getUv2() {
return vertex_texCoord2;
}
`;
5 changes: 5 additions & 0 deletions src/graphics/program-lib/chunks/lit/vert/uv3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export default /* glsl */`
vec2 getUv3() {
return vertex_texCoord3;
}
`;
5 changes: 5 additions & 0 deletions src/graphics/program-lib/chunks/lit/vert/uv4.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export default /* glsl */`
vec2 getUv4() {
return vertex_texCoord4;
}
`;
18 changes: 15 additions & 3 deletions src/graphics/program-lib/programs/lit-shader.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,13 @@ import {
SEMANTIC_BLENDINDICES, SEMANTIC_BLENDWEIGHT, SEMANTIC_COLOR, SEMANTIC_NORMAL, SEMANTIC_POSITION, SEMANTIC_TANGENT,
SEMANTIC_TEXCOORD0, SEMANTIC_TEXCOORD1,
SHADERTAG_MATERIAL,
PIXELFORMAT_R8_G8_B8_A8
PIXELFORMAT_R8_G8_B8_A8,
SEMANTIC_TEXCOORD2,
SEMANTIC_TEXCOORD3,
SEMANTIC_TEXCOORD4,
SEMANTIC_TEXCOORD5,
SEMANTIC_TEXCOORD6,
SEMANTIC_TEXCOORD7
} from '../../constants.js';
import { shaderChunks } from '../chunks/chunks.js';
import { ChunkUtils } from '../chunk-utils.js';
Expand Down Expand Up @@ -31,6 +37,9 @@ const builtinAttributes = {
vertex_tangent: SEMANTIC_TANGENT,
vertex_texCoord0: SEMANTIC_TEXCOORD0,
vertex_texCoord1: SEMANTIC_TEXCOORD1,
vertex_texCoord2: SEMANTIC_TEXCOORD2,
vertex_texCoord3: SEMANTIC_TEXCOORD3,
vertex_texCoord4: SEMANTIC_TEXCOORD4,
vertex_color: SEMANTIC_COLOR,
vertex_boneWeights: SEMANTIC_BLENDWEIGHT,
vertex_boneIndices: SEMANTIC_BLENDINDICES
Expand All @@ -45,7 +54,10 @@ const builtinVaryings = {
vBinormalW: "vec3",
vObjectSpaceUpW: "vec3",
vUv0: "vec2",
vUv1: "vec2"
vUv1: "vec2",
vUv2: "vec2",
vUv3: "vec2",
vUv4: "vec2",
};

class LitShader {
Expand Down Expand Up @@ -269,7 +281,7 @@ class LitShader {
}
}

const maxUvSets = 2;
const maxUvSets = 8;

for (let i = 0; i < maxUvSets; i++) {
if (useUv[i]) {
Expand Down
8 changes: 7 additions & 1 deletion src/graphics/program-lib/programs/standard.js
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ const standard = {
const useUv = [];
const useUnmodifiedUv = [];
const mapTransforms = [];
const maxUvSets = 2;
const maxUvSets = 8;

for (const p in _matTex2D) {
const mname = p + "Map";
Expand Down Expand Up @@ -250,7 +250,13 @@ const standard = {

if (options.forceUv1) {
useUv[1] = true;
useUv[2] = true;
useUv[3] = true;
useUv[4] = true;
useUnmodifiedUv[1] = (useUnmodifiedUv[1] !== undefined) ? useUnmodifiedUv[1] : true;
useUnmodifiedUv[2] = (useUnmodifiedUv[2] !== undefined) ? useUnmodifiedUv[2] : true;
useUnmodifiedUv[3] = (useUnmodifiedUv[3] !== undefined) ? useUnmodifiedUv[3] : true;
useUnmodifiedUv[4] = (useUnmodifiedUv[4] !== undefined) ? useUnmodifiedUv[4] : true;
}

litShader.generateVertexShader(useUv, useUnmodifiedUv, mapTransforms);
Expand Down
3 changes: 0 additions & 3 deletions src/graphics/program-lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@ const attrib2Semantic = {
vertex_texCoord2: SEMANTIC_TEXCOORD2,
vertex_texCoord3: SEMANTIC_TEXCOORD3,
vertex_texCoord4: SEMANTIC_TEXCOORD4,
vertex_texCoord5: SEMANTIC_TEXCOORD5,
vertex_texCoord6: SEMANTIC_TEXCOORD6,
vertex_texCoord7: SEMANTIC_TEXCOORD7,
vertex_color: SEMANTIC_COLOR,
vertex_boneIndices: SEMANTIC_BLENDINDICES,
vertex_boneWeights: SEMANTIC_BLENDWEIGHT
Expand Down
14 changes: 13 additions & 1 deletion src/graphics/vertex-format.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { math } from '../math/math.js';

import {
SEMANTIC_TEXCOORD0, SEMANTIC_TEXCOORD1, SEMANTIC_ATTR12, SEMANTIC_ATTR13, SEMANTIC_ATTR14, SEMANTIC_ATTR15,
SEMANTIC_COLOR, SEMANTIC_TANGENT, TYPE_FLOAT32, typedArrayTypesByteSize
SEMANTIC_COLOR, SEMANTIC_TANGENT, TYPE_FLOAT32, typedArrayTypesByteSize, SEMANTIC_TEXCOORD2, SEMANTIC_TEXCOORD3, SEMANTIC_TEXCOORD4, SEMANTIC_TEXCOORD5, SEMANTIC_TEXCOORD6, SEMANTIC_TEXCOORD7
} from './constants.js';

/** @typedef {import('./graphics-device.js').GraphicsDevice} GraphicsDevice */
Expand Down Expand Up @@ -119,6 +119,12 @@ class VertexFormat {
this._elements = [];
this.hasUv0 = false;
this.hasUv1 = false;
this.hasUv2 = false;
this.hasUv3 = false;
this.hasUv4 = false;
this.hasUv5 = false;
this.hasUv6 = false;
this.hasUv7 = false;
this.hasColor = false;
this.hasTangents = false;
this.verticesByteSize = 0;
Expand Down Expand Up @@ -166,6 +172,12 @@ class VertexFormat {
this.hasUv0 = true;
} else if (elementDesc.semantic === SEMANTIC_TEXCOORD1) {
this.hasUv1 = true;
} else if (elementDesc.semantic === SEMANTIC_TEXCOORD2) {
this.hasUv2 = true;
} else if (elementDesc.semantic === SEMANTIC_TEXCOORD3) {
this.hasUv3 = true;
} else if (elementDesc.semantic === SEMANTIC_TEXCOORD4) {
this.hasUv4 = true;
} else if (elementDesc.semantic === SEMANTIC_COLOR) {
this.hasColor = true;
} else if (elementDesc.semantic === SEMANTIC_TANGENT) {
Expand Down
17 changes: 15 additions & 2 deletions src/resources/parser/glb-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,13 @@ const flipTexCoordVs = function (vertexBuffer) {
for (i = 0; i < vertexBuffer.format.elements.length; ++i) {
const element = vertexBuffer.format.elements[i];
if (element.name === SEMANTIC_TEXCOORD0 ||
element.name === SEMANTIC_TEXCOORD1) {
element.name === SEMANTIC_TEXCOORD1||
element.name === SEMANTIC_TEXCOORD2||
element.name === SEMANTIC_TEXCOORD3||
element.name === SEMANTIC_TEXCOORD4||
element.name === SEMANTIC_TEXCOORD5||
element.name === SEMANTIC_TEXCOORD6||
element.name === SEMANTIC_TEXCOORD7) {
switch (element.dataType) {
case TYPE_FLOAT32:
floatOffsets.push({ offset: element.offset / 4 + 1, stride: element.stride / 4 });
Expand Down Expand Up @@ -466,6 +472,7 @@ const createVertexBufferInternal = function (device, sourceDesc, flipV) {
}
const numVertices = positionDesc.count;

if (numVertices === 0) return;
// generate vertexDesc elements
const vertexDesc = [];
for (const semantic in sourceDesc) {
Expand All @@ -488,7 +495,13 @@ const createVertexBufferInternal = function (device, sourceDesc, flipV) {
SEMANTIC_BLENDINDICES,
SEMANTIC_BLENDWEIGHT,
SEMANTIC_TEXCOORD0,
SEMANTIC_TEXCOORD1
SEMANTIC_TEXCOORD1,
SEMANTIC_TEXCOORD2,
SEMANTIC_TEXCOORD3,
SEMANTIC_TEXCOORD4,
SEMANTIC_TEXCOORD5,
SEMANTIC_TEXCOORD6,
SEMANTIC_TEXCOORD7,
];

// sort vertex elements by engine-ideal order
Expand Down
8 changes: 7 additions & 1 deletion src/scene/materials/standard-material-options-builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
SHADERDEF_DIRLM, SHADERDEF_INSTANCING, SHADERDEF_LM, SHADERDEF_MORPH_POSITION, SHADERDEF_MORPH_NORMAL, SHADERDEF_NOSHADOW, SHADERDEF_MORPH_TEXTURE_BASED,
SHADERDEF_SCREENSPACE, SHADERDEF_SKIN, SHADERDEF_TANGENTS, SHADERDEF_UV0, SHADERDEF_UV1, SHADERDEF_VCOLOR, SHADERDEF_LMAMBIENT,
TONEMAP_LINEAR,
SPECULAR_PHONG
SPECULAR_PHONG,
} from '../constants.js';

import { Quat } from '../../math/quat.js';
Expand Down Expand Up @@ -97,10 +97,16 @@ class StandardMaterialOptionsBuilder {
_updateUVOptions(options, stdMat, objDefs, minimalOptions) {
let hasUv0 = false;
let hasUv1 = false;
let hasUv2 = false;
let hasUv3 = false;
let hasUv4 = false;
let hasVcolor = false;
if (objDefs) {
hasUv0 = (objDefs & SHADERDEF_UV0) !== 0;
hasUv1 = (objDefs & SHADERDEF_UV1) !== 0;
hasUv2 = hasUv1;
hasUv3 = hasUv1;
hasUv4 = hasUv1;
hasVcolor = (objDefs & SHADERDEF_VCOLOR) !== 0;
}

Expand Down
2 changes: 1 addition & 1 deletion src/scene/materials/standard-material.js
Original file line number Diff line number Diff line change
Expand Up @@ -790,7 +790,7 @@ class StandardMaterial extends Material {
if (!hasLocalEnvOverride && this.useSkybox) {
if (scene.envAtlas && scene.skybox && !isPhong) {
this._setParameter('texture_envAtlas', scene.envAtlas);
this._setParameter('texture_cubeMap', scene.skybox);
this._setParameter('texture_cubeMap', scene.envAtlas);
} else if (scene.envAtlas && !isPhong) {
this._setParameter('texture_envAtlas', scene.envAtlas);
} else if (scene.skybox) {
Expand Down
4 changes: 2 additions & 2 deletions src/scene/mesh-instance.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
SHADERDEF_UV0, SHADERDEF_UV1, SHADERDEF_VCOLOR, SHADERDEF_TANGENTS, SHADERDEF_NOSHADOW, SHADERDEF_SKIN,
SHADERDEF_SCREENSPACE, SHADERDEF_MORPH_POSITION, SHADERDEF_MORPH_NORMAL, SHADERDEF_MORPH_TEXTURE_BASED,
SHADERDEF_LM, SHADERDEF_DIRLM, SHADERDEF_LMAMBIENT,
SORTKEY_FORWARD
SORTKEY_FORWARD,
} from './constants.js';

import { GraphNode } from './graph-node.js';
Expand Down Expand Up @@ -369,7 +369,7 @@ class MeshInstance {
} else if (this.node._aabbVer !== this._aabbVer) {

// local space bounding box - either from mesh or empty
if (this.mesh) {
if (this.mesh?.aabb) {
localAabb.center.copy(this.mesh.aabb.center);
localAabb.halfExtents.copy(this.mesh.aabb.halfExtents);
} else {
Expand Down

0 comments on commit 40890b0

Please sign in to comment.