@zephyr3d/editor 0.3.4 → 0.3.7
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/assets/{index-DzQzWsCG.js → index-ySiLtSxz.js} +3 -3
- package/dist/assistant/zephyr-types-index.json +14217 -7895
- package/dist/index.html +1 -1
- package/dist/modules/zephyr3d_backend-webgl.js.map +1 -1
- package/dist/modules/zephyr3d_backend-webgpu.js +13 -12
- package/dist/modules/zephyr3d_backend-webgpu.js.map +1 -1
- package/dist/modules/zephyr3d_device.js +15 -15
- package/dist/modules/zephyr3d_device.js.map +1 -1
- package/dist/modules/zephyr3d_imgui.js.map +1 -1
- package/dist/modules/zephyr3d_scene.js +3276 -1089
- package/dist/modules/zephyr3d_scene.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgl/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/capabilities_webgpu.js +7 -6
- package/dist/vendor/zephyr3d/backend-webgpu/dist/capabilities_webgpu.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js +6 -6
- package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js.map +1 -1
- package/dist/vendor/zephyr3d/device/dist/device.js +15 -15
- package/dist/vendor/zephyr3d/device/dist/device.js.map +1 -1
- package/dist/vendor/zephyr3d/imgui/dist/index.d.ts +7 -0
- package/dist/vendor/zephyr3d/imgui/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/animation.js +87 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animation.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/animationcontroller.js +503 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animationcontroller.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js +686 -63
- package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/animationtimeline.js +974 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animationtimeline.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics_modifier.js +19 -19
- package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics_modifier.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/app/engine.js +131 -131
- package/dist/vendor/zephyr3d/scene/dist/app/engine.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/app/scriptregistry.js +17 -12
- package/dist/vendor/zephyr3d/scene/dist/app/scriptregistry.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/asset/model.js +2 -1
- package/dist/vendor/zephyr3d/scene/dist/asset/model.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/avatar/wardrobe.js +13 -13
- package/dist/vendor/zephyr3d/scene/dist/avatar/wardrobe.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/camera/camera.js +201 -201
- package/dist/vendor/zephyr3d/scene/dist/camera/camera.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/index.d.ts +1271 -10
- package/dist/vendor/zephyr3d/scene/dist/index.js +3 -1
- package/dist/vendor/zephyr3d/scene/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/mixins/lightmodel/pbrmetallicroughness.js +5 -5
- package/dist/vendor/zephyr3d/scene/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/mixins/lit.js +7 -3
- package/dist/vendor/zephyr3d/scene/dist/material/mixins/lit.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/mtoon.js +4 -4
- package/dist/vendor/zephyr3d/scene/dist/material/mtoon.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/pbrblueprint.js +11 -11
- package/dist/vendor/zephyr3d/scene/dist/material/pbrblueprint.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js +284 -284
- package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js +9 -9
- package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js +5 -5
- package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/renderer.js +7 -7
- package/dist/vendor/zephyr3d/scene/dist/render/renderer.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/shadow_region.js +45 -45
- package/dist/vendor/zephyr3d/scene/dist/shadow/shadow_region.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js +276 -275
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js +4 -3
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js +3 -2
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mtoon.js","sources":["../../src/material/mtoon.ts"],"sourcesContent":["import type { Immutable } from '@zephyr3d/base';\nimport { Vector2, Vector3 } from '@zephyr3d/base';\nimport type {\n BindGroup,\n PBFunctionScope,\n PBInsideFunctionScope,\n PBShaderExp,\n RenderStateSet\n} from '@zephyr3d/device';\nimport type { DrawContext, Primitive } from '../render';\nimport { applyMaterialMixins, MeshMaterial } from './meshmaterial';\nimport { mixinAlbedoColor } from './mixins/albedocolor';\nimport { mixinLambert } from './mixins/lightmodel/lambert';\nimport { mixinTextureProps } from './mixins/texture';\nimport { QUEUE_OPAQUE, QUEUE_TRANSPARENT, RENDER_PASS_TYPE_LIGHT } from '../values';\nimport { ShaderHelper } from './shader/helper';\n\n/**\n * MToonMaterial outline width mode.\n *\n * @public\n */\nexport type MToonOutlineWidthMode = 'none' | 'worldCoordinates' | 'screenCoordinates';\n\ntype RuntimeMaterialPassMethods = {\n bind(device: DrawContext['device'], pass: number): boolean;\n draw(primitive: Primitive, ctx: DrawContext, numInstances?: number): void;\n};\n\nconst ToonMaterialBase = applyMaterialMixins(\n MeshMaterial,\n mixinAlbedoColor,\n mixinLambert,\n mixinTextureProps('shadeMultiply'),\n mixinTextureProps('shadingShift'),\n mixinTextureProps('matcap'),\n mixinTextureProps('rimMultiply'),\n mixinTextureProps('outlineWidthMultiply'),\n mixinTextureProps('uvAnimationMask'),\n mixinTextureProps('emissive')\n);\n\n/**\n * MToonMaterial is a material that implements the MToon shader, which is a stylized shader commonly used for rendering anime-style characters. It supports features such as rim lighting, matcap, and outline rendering.\n *\n * @public\n */\nexport class MToonMaterial extends ToonMaterialBase {\n private static readonly FEATURE_OUTLINE_WIDTH_MODE = this.defineFeature();\n private static readonly FEATURE_OUTLINE_TANGENT_NORMALS = this.defineFeature();\n private readonly _shadeColorFactor: Vector3;\n private readonly _matcapFactor: Vector3;\n private readonly _parametricRimColorFactor: Vector3;\n private readonly _outlineColorFactor: Vector3;\n private readonly _uvAnimationScroll: Vector2;\n private readonly _emissiveColor: Vector3;\n private _shadingShiftFactor: number;\n private _shadingShiftTextureScale: number;\n private _shadingToonyFactor: number;\n private _giEqualizationFactor: number;\n private _parametricRimFresnelPowerFactor: number;\n private _parametricRimLiftFactor: number;\n private _rimLightingMixFactor: number;\n private _outlineWidthFactor: number;\n private _outlineLightingMixFactor: number;\n private _uvAnimationRotationSpeedFactor: number;\n private _emissiveStrength: number;\n private _transparentWithZWrite: boolean;\n private _renderQueueOffsetNumber: number;\n constructor() {\n super();\n this._shadeColorFactor = new Vector3(0, 0, 0);\n this._matcapFactor = new Vector3(1, 1, 1);\n this._parametricRimColorFactor = new Vector3(0, 0, 0);\n this._outlineColorFactor = new Vector3(0, 0, 0);\n this._uvAnimationScroll = new Vector2(0, 0);\n this._emissiveColor = new Vector3(0, 0, 0);\n this._shadingShiftFactor = 0;\n this._shadingShiftTextureScale = 1;\n this._shadingToonyFactor = 0.9;\n this._giEqualizationFactor = 0.9;\n this._parametricRimFresnelPowerFactor = 5;\n this._parametricRimLiftFactor = 0;\n this._rimLightingMixFactor = 1;\n this._outlineWidthFactor = 0;\n this._outlineLightingMixFactor = 1;\n this._uvAnimationRotationSpeedFactor = 0;\n this._emissiveStrength = 1;\n this._transparentWithZWrite = false;\n this._renderQueueOffsetNumber = 0;\n this.outlineWidthMode = 'none';\n this.outlineUsesTangentNormals = false;\n }\n get shadeColorFactor(): Immutable<Vector3> {\n return this._shadeColorFactor;\n }\n set shadeColorFactor(val: Immutable<Vector3>) {\n this._shadeColorFactor.set(val);\n this.uniformChanged();\n }\n get shadingShiftFactor(): number {\n return this._shadingShiftFactor;\n }\n set shadingShiftFactor(val: number) {\n if (val !== this._shadingShiftFactor) {\n this._shadingShiftFactor = val;\n this.uniformChanged();\n }\n }\n get shadingShiftTextureScale(): number {\n return this._shadingShiftTextureScale;\n }\n set shadingShiftTextureScale(val: number) {\n if (val !== this._shadingShiftTextureScale) {\n this._shadingShiftTextureScale = val;\n this.uniformChanged();\n }\n }\n get shadingToonyFactor(): number {\n return this._shadingToonyFactor;\n }\n set shadingToonyFactor(val: number) {\n const toony = Math.min(Math.max(val, 0), 0.99);\n if (toony !== this._shadingToonyFactor) {\n this._shadingToonyFactor = toony;\n this.uniformChanged();\n }\n }\n get giEqualizationFactor(): number {\n return this._giEqualizationFactor;\n }\n set giEqualizationFactor(val: number) {\n const factor = Math.min(Math.max(val, 0), 1);\n if (factor !== this._giEqualizationFactor) {\n this._giEqualizationFactor = factor;\n this.uniformChanged();\n }\n }\n get matcapFactor(): Immutable<Vector3> {\n return this._matcapFactor;\n }\n set matcapFactor(val: Immutable<Vector3>) {\n this._matcapFactor.set(val);\n this.uniformChanged();\n }\n get parametricRimColorFactor(): Immutable<Vector3> {\n return this._parametricRimColorFactor;\n }\n set parametricRimColorFactor(val: Immutable<Vector3>) {\n this._parametricRimColorFactor.set(val);\n this.uniformChanged();\n }\n get parametricRimFresnelPowerFactor(): number {\n return this._parametricRimFresnelPowerFactor;\n }\n set parametricRimFresnelPowerFactor(val: number) {\n if (val !== this._parametricRimFresnelPowerFactor) {\n this._parametricRimFresnelPowerFactor = val;\n this.uniformChanged();\n }\n }\n get parametricRimLiftFactor(): number {\n return this._parametricRimLiftFactor;\n }\n set parametricRimLiftFactor(val: number) {\n if (val !== this._parametricRimLiftFactor) {\n this._parametricRimLiftFactor = val;\n this.uniformChanged();\n }\n }\n get rimLightingMixFactor(): number {\n return this._rimLightingMixFactor;\n }\n set rimLightingMixFactor(val: number) {\n const factor = Math.min(Math.max(val, 0), 1);\n if (factor !== this._rimLightingMixFactor) {\n this._rimLightingMixFactor = factor;\n this.uniformChanged();\n }\n }\n get outlineWidthMode(): MToonOutlineWidthMode {\n return this.featureUsed<MToonOutlineWidthMode>(MToonMaterial.FEATURE_OUTLINE_WIDTH_MODE);\n }\n set outlineWidthMode(val: MToonOutlineWidthMode) {\n if (val !== 'none' && this.numPasses < 2) {\n this.numPasses = 2;\n }\n this.useFeature(MToonMaterial.FEATURE_OUTLINE_WIDTH_MODE, val);\n this.numPasses = val === 'none' ? 1 : 2;\n }\n get outlineWidthFactor(): number {\n return this._outlineWidthFactor;\n }\n set outlineWidthFactor(val: number) {\n if (val !== this._outlineWidthFactor) {\n this._outlineWidthFactor = val;\n this.uniformChanged();\n }\n }\n get outlineColorFactor(): Immutable<Vector3> {\n return this._outlineColorFactor;\n }\n set outlineColorFactor(val: Immutable<Vector3>) {\n this._outlineColorFactor.set(val);\n this.uniformChanged();\n }\n get outlineLightingMixFactor(): number {\n return this._outlineLightingMixFactor;\n }\n set outlineLightingMixFactor(val: number) {\n const factor = Math.min(Math.max(val, 0), 1);\n if (factor !== this._outlineLightingMixFactor) {\n this._outlineLightingMixFactor = factor;\n this.uniformChanged();\n }\n }\n get outlineUsesTangentNormals(): boolean {\n return !!this.featureUsed<boolean>(MToonMaterial.FEATURE_OUTLINE_TANGENT_NORMALS);\n }\n set outlineUsesTangentNormals(val: boolean) {\n this.useFeature(MToonMaterial.FEATURE_OUTLINE_TANGENT_NORMALS, !!val);\n }\n get transparentWithZWrite(): boolean {\n return this._transparentWithZWrite;\n }\n set transparentWithZWrite(val: boolean) {\n if (!!val !== this._transparentWithZWrite) {\n this._transparentWithZWrite = !!val;\n this.uniformChanged();\n }\n }\n get renderQueueOffsetNumber(): number {\n return this._renderQueueOffsetNumber;\n }\n set renderQueueOffsetNumber(val: number) {\n const offset = Math.trunc(val);\n if (offset !== this._renderQueueOffsetNumber) {\n this._renderQueueOffsetNumber = offset;\n this.uniformChanged();\n }\n }\n get uvAnimationScrollXSpeedFactor(): number {\n return this._uvAnimationScroll.x;\n }\n set uvAnimationScrollXSpeedFactor(val: number) {\n if (val !== this._uvAnimationScroll.x) {\n this._uvAnimationScroll.x = val;\n this.uniformChanged();\n }\n }\n get uvAnimationScrollYSpeedFactor(): number {\n return this._uvAnimationScroll.y;\n }\n set uvAnimationScrollYSpeedFactor(val: number) {\n if (val !== this._uvAnimationScroll.y) {\n this._uvAnimationScroll.y = val;\n this.uniformChanged();\n }\n }\n get uvAnimationRotationSpeedFactor(): number {\n return this._uvAnimationRotationSpeedFactor;\n }\n set uvAnimationRotationSpeedFactor(val: number) {\n if (val !== this._uvAnimationRotationSpeedFactor) {\n this._uvAnimationRotationSpeedFactor = val;\n this.uniformChanged();\n }\n }\n get emissiveColor(): Immutable<Vector3> {\n return this._emissiveColor;\n }\n set emissiveColor(val: Immutable<Vector3>) {\n this._emissiveColor.set(val);\n this.uniformChanged();\n }\n get emissiveStrength(): number {\n return this._emissiveStrength;\n }\n set emissiveStrength(val: number) {\n if (val !== this._emissiveStrength) {\n this._emissiveStrength = val;\n this.uniformChanged();\n }\n }\n clone(): MToonMaterial {\n const other = new MToonMaterial();\n other.copyFrom(this);\n return other;\n }\n copyFrom(other: this) {\n super.copyFrom(other);\n this.shadeColorFactor = other.shadeColorFactor;\n this.shadingShiftFactor = other.shadingShiftFactor;\n this.shadingShiftTextureScale = other.shadingShiftTextureScale;\n this.shadingToonyFactor = other.shadingToonyFactor;\n this.giEqualizationFactor = other.giEqualizationFactor;\n this.matcapFactor = other.matcapFactor;\n this.parametricRimColorFactor = other.parametricRimColorFactor;\n this.parametricRimFresnelPowerFactor = other.parametricRimFresnelPowerFactor;\n this.parametricRimLiftFactor = other.parametricRimLiftFactor;\n this.rimLightingMixFactor = other.rimLightingMixFactor;\n this.outlineWidthMode = other.outlineWidthMode;\n this.outlineWidthFactor = other.outlineWidthFactor;\n this.outlineColorFactor = other.outlineColorFactor;\n this.outlineLightingMixFactor = other.outlineLightingMixFactor;\n this.outlineUsesTangentNormals = other.outlineUsesTangentNormals;\n this.transparentWithZWrite = other.transparentWithZWrite;\n this.renderQueueOffsetNumber = other.renderQueueOffsetNumber;\n this.uvAnimationScrollXSpeedFactor = other.uvAnimationScrollXSpeedFactor;\n this.uvAnimationScrollYSpeedFactor = other.uvAnimationScrollYSpeedFactor;\n this.uvAnimationRotationSpeedFactor = other.uvAnimationRotationSpeedFactor;\n this.emissiveColor = other.emissiveColor;\n this.emissiveStrength = other.emissiveStrength;\n }\n getQueueType() {\n return this.isTransparentPass(0) ? QUEUE_TRANSPARENT : QUEUE_OPAQUE;\n }\n passToHash(pass: number): string {\n return super.passToHash(pass > 0 ? 1 : 0);\n }\n isTransparentPass(pass: number, ctx?: DrawContext): boolean {\n return pass === 0 && super.isTransparentPass(pass, ctx);\n }\n protected updateRenderStates(pass: number, stateSet: RenderStateSet, ctx: DrawContext): void {\n super.updateRenderStates(pass, stateSet, ctx);\n if (pass > 0) {\n stateSet.useRasterizerState().cullMode = 'front';\n stateSet.defaultBlendingState();\n stateSet.useDepthState().enableTest(true).enableWrite(true).setCompareFunc('lt');\n } else if (this._transparentWithZWrite && this.isTransparentPass(pass, ctx)) {\n stateSet.useDepthState().enableTest(true).enableWrite(true);\n }\n }\n draw(primitive: Primitive, ctx: DrawContext, numInstances = 0): void {\n const material = this as unknown as RuntimeMaterialPassMethods;\n if (this.numPasses > 1 && ctx.renderPass!.type === RENDER_PASS_TYPE_LIGHT && !ctx.lightBlending) {\n // Draw the inflated hull first so the regular pass hides interior outline fragments.\n material.bind(ctx.device, 1);\n this.drawPrimitive(1, primitive, ctx, numInstances);\n material.bind(ctx.device, 0);\n this.drawPrimitive(0, primitive, ctx, numInstances);\n } else {\n (MeshMaterial.prototype as unknown as RuntimeMaterialPassMethods).draw.call(\n this,\n primitive,\n ctx,\n numInstances\n );\n }\n }\n drawPrimitive(pass: number, primitive: Primitive, ctx: DrawContext, numInstances: number): void {\n if (pass > 0 && (ctx.renderPass!.type !== RENDER_PASS_TYPE_LIGHT || ctx.lightBlending)) {\n return;\n }\n super.drawPrimitive(pass, primitive, ctx, numInstances);\n }\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number): void {\n super.applyUniformValues(bindGroup, ctx, pass);\n if (this.needFragmentColorInput(ctx)) {\n bindGroup.setValue('shadeColorFactor', this._shadeColorFactor);\n bindGroup.setValue('shadingShiftFactor', this._shadingShiftFactor);\n bindGroup.setValue('shadingShiftTextureScale', this._shadingShiftTextureScale);\n bindGroup.setValue('shadingToonyFactor', this._shadingToonyFactor);\n bindGroup.setValue('giEqualizationFactor', this._giEqualizationFactor);\n bindGroup.setValue('matcapFactor', this._matcapFactor);\n bindGroup.setValue('parametricRimColorFactor', this._parametricRimColorFactor);\n bindGroup.setValue('parametricRimFresnelPowerFactor', this._parametricRimFresnelPowerFactor);\n bindGroup.setValue('parametricRimLiftFactor', this._parametricRimLiftFactor);\n bindGroup.setValue('rimLightingMixFactor', this._rimLightingMixFactor);\n bindGroup.setValue('uvAnimationScroll', this._uvAnimationScroll);\n bindGroup.setValue('uvAnimationRotationSpeedFactor', this._uvAnimationRotationSpeedFactor);\n bindGroup.setValue('emissiveColor', this._emissiveColor);\n bindGroup.setValue('emissiveStrength', this._emissiveStrength);\n } else if (pass > 0 && this.outlineWidthMultiplyTexture && this.usesAnimatedUV()) {\n bindGroup.setValue('uvAnimationScroll', this._uvAnimationScroll);\n bindGroup.setValue('uvAnimationRotationSpeedFactor', this._uvAnimationRotationSpeedFactor);\n }\n if (pass > 0) {\n bindGroup.setValue('outlineWidthFactor', this._outlineWidthFactor);\n if (this.outlineWidthMultiplyTexture) {\n bindGroup.setTexture(\n 'outlineWidthTex',\n this.outlineWidthMultiplyTexture,\n this.outlineWidthMultiplyTextureSampler\n );\n if (this.uvAnimationMaskTexture && this.usesAnimatedUV()) {\n bindGroup.setTexture(\n 'uvAnimationMaskTex',\n this.uvAnimationMaskTexture,\n this.uvAnimationMaskTextureSampler\n );\n }\n if (this.outlineWidthMultiplyTexCoordMatrix) {\n bindGroup.setValue('outlineWidthTextureMatrix', this.outlineWidthMultiplyTexCoordMatrix);\n }\n }\n }\n if (pass > 0 && ctx.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\n bindGroup.setValue('outlineColorFactor', this._outlineColorFactor);\n bindGroup.setValue('outlineLightingMixFactor', this._outlineLightingMixFactor);\n }\n }\n private usesAnimatedUV(): boolean {\n return (\n this._uvAnimationScroll.x !== 0 ||\n this._uvAnimationScroll.y !== 0 ||\n this._uvAnimationRotationSpeedFactor !== 0\n );\n }\n private applyUVAnimation(scope: PBInsideFunctionScope, uv: PBShaderExp): PBShaderExp {\n if (!this.usesAnimatedUV()) {\n return uv;\n }\n const pb = scope.$builder;\n const funcName = 'Z_mtoonUVAnimation';\n const that = this;\n if (!scope.uvAnimationScroll) {\n scope.uvAnimationScroll = pb.vec2().uniform(2);\n }\n if (!scope.uvAnimationRotationSpeedFactor) {\n scope.uvAnimationRotationSpeedFactor = pb.float().uniform(2);\n }\n if (that.uvAnimationMaskTexture && pb.shaderKind !== 'fragment' && !scope.uvAnimationMaskTex) {\n scope.uvAnimationMaskTex = pb.tex2D().uniform(2);\n }\n pb.func(funcName, [pb.vec2('uv')], function () {\n this.$l.mask = that.uvAnimationMaskTexture\n ? pb.shaderKind === 'fragment'\n ? pb.textureSample(that.getUvAnimationMaskTextureUniform(this), this.uv).b\n : pb.textureSampleLevel(this.uvAnimationMaskTex, this.uv, 0).b\n : pb.float(1);\n this.$l.time = ShaderHelper.getElapsedTime(this);\n this.$l.rotation = pb.mul(this.time, this.uvAnimationRotationSpeedFactor, this.mask);\n this.$l.c = pb.cos(this.rotation);\n this.$l.s = pb.sin(this.rotation);\n this.$l.centeredUv = pb.sub(this.uv, pb.vec2(0.5));\n this.$l.rotatedUv = pb.add(\n pb.vec2(\n pb.add(pb.mul(this.c, this.centeredUv.x), pb.mul(this.s, this.centeredUv.y)),\n pb.add(pb.mul(pb.neg(this.s), this.centeredUv.x), pb.mul(this.c, this.centeredUv.y))\n ),\n pb.vec2(0.5)\n );\n this.$return(pb.add(this.rotatedUv, pb.mul(this.uvAnimationScroll, this.time, this.mask)));\n });\n return pb.getGlobalScope()[funcName](uv);\n }\n private getMToonBaseUV(scope: PBInsideFunctionScope): PBShaderExp {\n return this.albedoTexture\n ? this.applyUVAnimation(scope, this.getAlbedoTexCoord(scope))\n : scope.$builder.vec2(0);\n }\n private getMToonNormalUV(scope: PBInsideFunctionScope): PBShaderExp {\n return this.normalTexture\n ? this.applyUVAnimation(scope, this.getNormalTexCoord(scope))\n : scope.$builder.vec2(0);\n }\n private sampleAlbedo(scope: PBInsideFunctionScope, uv: PBShaderExp): PBShaderExp {\n return this.calculateAlbedoColor(scope, uv);\n }\n private sampleShadeColor(scope: PBInsideFunctionScope): PBShaderExp {\n const pb = scope.$builder;\n return this.shadeMultiplyTexture\n ? pb.mul(\n scope.shadeColorFactor,\n this.sampleShadeMultiplyTexture(\n scope,\n this.applyUVAnimation(scope, this.getShadeMultiplyTexCoord(scope))\n ).rgb\n )\n : scope.shadeColorFactor;\n }\n private sampleNormal(scope: PBInsideFunctionScope, uv: PBShaderExp): PBShaderExp {\n const pb = scope.$builder;\n if (!this.normalTexture) {\n return pb.normalize(scope.$inputs.wNorm);\n }\n scope.$l.TBN = this.calculateTBN(scope, scope.$inputs.worldPos, scope.$inputs.wNorm);\n scope.$l.normalTex = pb.sub(pb.mul(this.sampleNormalTexture(scope, uv).rgb, 2), pb.vec3(1));\n scope.normalTex = pb.mul(scope.normalTex, pb.vec3(pb.vec3(this.getUniformNormalScale(scope)).xx, 1));\n return pb.normalize(pb.mul(scope.TBN, scope.normalTex));\n }\n private calculateMToonDirectLighting(\n scope: PBInsideFunctionScope,\n worldPos: PBShaderExp,\n normal: PBShaderExp,\n baseColor: PBShaderExp,\n shadeColor: PBShaderExp,\n shadingShift: PBShaderExp\n ): PBShaderExp {\n const pb = scope.$builder;\n const that = this;\n const funcName = 'Z_mtoonDirectLighting';\n pb.func(\n funcName,\n [\n pb.vec3('worldPos'),\n pb.vec3('normal'),\n pb.vec3('baseColor'),\n pb.vec3('shadeColor'),\n pb.float('shadingShift')\n ],\n function () {\n this.$l.directColor = pb.vec3(0);\n that.forEachLight(this, function (type, posRange, dirCutoff, colorIntensity, extra, shadow) {\n this.$l.lightAtten = that.calculateLightAttenuation(this, type, this.worldPos, posRange, dirCutoff);\n this.$l.lightDir = that.calculateLightDirection(this, type, this.worldPos, posRange, dirCutoff);\n this.$l.lightColor = pb.mul(colorIntensity.rgb, colorIntensity.a, this.lightAtten);\n this.$l.NoL = pb.dot(this.normal, this.lightDir);\n this.$l.shiftedShading = pb.add(this.NoL, this.shadingShift);\n this.$l.shading = pb.clamp(\n pb.div(\n pb.sub(this.shiftedShading, pb.add(-1, this.shadingToonyFactor)),\n pb.max(pb.sub(2, pb.mul(this.shadingToonyFactor, 2)), 0.00001)\n ),\n 0,\n 1\n );\n this.$l.lightDiffuse = pb.mix(this.shadeColor, this.baseColor, this.shading);\n if (shadow) {\n this.$l.shadowValue = that.calculateShadow(this, this.worldPos, pb.clamp(this.NoL, 0, 1));\n this.lightDiffuse = pb.mix(this.shadeColor, this.lightDiffuse, this.shadowValue);\n }\n this.directColor = pb.add(this.directColor, pb.mul(this.lightDiffuse, this.lightColor));\n });\n this.$return(this.directColor);\n }\n );\n return pb.getGlobalScope()[funcName](worldPos, normal, baseColor, shadeColor, shadingShift);\n }\n private calculateMToonGI(\n scope: PBInsideFunctionScope,\n normal: PBShaderExp,\n baseColor: PBShaderExp\n ): PBShaderExp {\n const pb = scope.$builder;\n if (!this.needCalculateEnvLight()) {\n return pb.vec3(0);\n }\n scope.$l.rawGi = this.getEnvLightIrradiance(scope, normal);\n scope.$l.uniformGi = pb.mul(\n pb.add(\n this.getEnvLightIrradiance(scope, pb.vec3(0, 1, 0)),\n this.getEnvLightIrradiance(scope, pb.vec3(0, -1, 0))\n ),\n 0.5\n );\n scope.$l.gi = pb.mix(scope.rawGi, scope.uniformGi, scope.giEqualizationFactor);\n return pb.mul(scope.gi, baseColor);\n }\n private calculateMToonRim(\n scope: PBInsideFunctionScope,\n normal: PBShaderExp,\n viewVec: PBShaderExp,\n uv: PBShaderExp,\n lighting: PBShaderExp\n ): PBShaderExp {\n const pb = scope.$builder;\n scope.$l.rim = pb.vec3(0);\n if (this.matcapTexture) {\n scope.$l.worldViewX = pb.normalize(pb.vec3(viewVec.z, 0, pb.neg(viewVec.x)));\n scope.$l.worldViewY = pb.normalize(pb.cross(viewVec, scope.worldViewX));\n scope.$l.matcapUv = pb.add(\n pb.mul(pb.vec2(pb.dot(scope.worldViewX, normal), pb.dot(scope.worldViewY, normal)), 0.495),\n pb.vec2(0.5)\n );\n scope.rim = pb.add(\n scope.rim,\n pb.mul(scope.matcapFactor, this.sampleMatcapTexture(scope, scope.matcapUv).rgb)\n );\n }\n scope.$l.NoV = pb.clamp(pb.dot(normal, viewVec), 0, 1);\n scope.$l.parametricRim = pb.pow(\n pb.clamp(pb.add(pb.sub(1, scope.NoV), scope.parametricRimLiftFactor), 0, 1),\n pb.max(scope.parametricRimFresnelPowerFactor, 0.00001)\n );\n scope.rim = pb.add(scope.rim, pb.mul(scope.parametricRimColorFactor, scope.parametricRim));\n if (this.rimMultiplyTexture) {\n scope.rim = pb.mul(\n scope.rim,\n this.sampleRimMultiplyTexture(scope, this.applyUVAnimation(scope, this.getRimMultiplyTexCoord(scope)))\n .rgb\n );\n }\n return pb.mul(scope.rim, pb.mix(pb.vec3(1), lighting, scope.rimLightingMixFactor));\n }\n private calculateMToonEmission(scope: PBInsideFunctionScope): PBShaderExp {\n const pb = scope.$builder;\n return this.emissiveTexture\n ? pb.mul(\n scope.emissiveColor,\n scope.emissiveStrength,\n this.sampleEmissiveTexture(scope, this.applyUVAnimation(scope, this.getEmissiveTexCoord(scope))).rgb\n )\n : pb.mul(scope.emissiveColor, scope.emissiveStrength);\n }\n vertexShader(scope: PBFunctionScope): void {\n super.vertexShader(scope);\n const pb = scope.$builder;\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\n scope.$l.oNorm = ShaderHelper.resolveVertexNormal(scope);\n if (this.pass > 0 && this.outlineUsesTangentNormals) {\n scope.$l.oOutlineNorm = ShaderHelper.resolveVertexTangent(scope).xyz;\n }\n scope.$l.worldNormal = pb.normalize(\n pb.mul(ShaderHelper.getNormalMatrix(scope), pb.vec4(scope.oNorm, 0)).xyz\n );\n scope.$l.worldOutlineNormal =\n this.pass > 0 && this.outlineUsesTangentNormals\n ? pb.normalize(pb.mul(ShaderHelper.getNormalMatrix(scope), pb.vec4(scope.oOutlineNorm, 0)).xyz)\n : scope.worldNormal;\n scope.$l.worldPos = pb.mul(ShaderHelper.getWorldMatrix(scope), pb.vec4(scope.oPos, 1)).xyz;\n if (this.pass > 0) {\n scope.outlineWidthFactor = pb.float().uniform(2);\n scope.$l.width = scope.outlineWidthFactor;\n if (this.outlineWidthMultiplyTexture) {\n scope.outlineWidthTex = pb.tex2D().uniform(2);\n const uvIndex = this.outlineWidthMultiplyTexCoordIndex;\n const semantic = `texCoord${uvIndex}` as any;\n if (!scope.$getVertexAttrib(semantic)) {\n scope.$inputs[semantic] = pb.vec2().attrib(semantic);\n }\n if (this.outlineWidthMultiplyTexCoordMatrix) {\n scope.outlineWidthTextureMatrix = pb.mat4().uniform(2);\n scope.$l.outlineUv = pb.mul(\n scope.outlineWidthTextureMatrix,\n pb.vec4(this.applyUVAnimation(scope, scope.$inputs[semantic]), 0, 1)\n ).xy;\n } else {\n scope.$l.outlineUv = this.applyUVAnimation(scope, scope.$inputs[semantic]);\n }\n scope.width = pb.mul(scope.width, pb.textureSampleLevel(scope.outlineWidthTex, scope.outlineUv, 0).g);\n }\n if (this.outlineWidthMode === 'worldCoordinates') {\n scope.worldPos = pb.add(scope.worldPos, pb.mul(scope.worldOutlineNormal, scope.width));\n } else if (this.outlineWidthMode === 'screenCoordinates') {\n scope.$l.clipNormalPos = pb.mul(\n ShaderHelper.getViewProjectionMatrix(scope),\n pb.vec4(pb.add(scope.worldPos, scope.worldOutlineNormal), 1)\n );\n scope.$l.clipPos = pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.worldPos, 1));\n scope.$l.screenNormal = pb.sub(\n pb.div(scope.clipNormalPos.xy, pb.max(scope.clipNormalPos.w, 0.00001)),\n pb.div(scope.clipPos.xy, pb.max(scope.clipPos.w, 0.00001))\n );\n scope.screenNormal = pb.normalize(\n pb.mul(\n scope.screenNormal,\n pb.vec2(1, pb.div(ShaderHelper.getRenderSize(scope).x, ShaderHelper.getRenderSize(scope).y))\n )\n );\n\n //scope.clipPos.xy = pb.add(scope.clipPos.xy, pb.mul(scope.screenNormal, scope.width, scope.clipPos.w));\n scope.clipPos = pb.vec4(\n pb.add(scope.clipPos.xy, pb.mul(scope.screenNormal, scope.width, scope.clipPos.w)),\n scope.clipPos.zw\n );\n scope.$outputs.worldPos = scope.worldPos;\n scope.$outputs.wNorm = scope.worldOutlineNormal;\n ShaderHelper.setClipSpacePosition(scope, scope.clipPos);\n return;\n }\n }\n scope.$outputs.worldPos = scope.worldPos;\n scope.$outputs.wNorm = this.pass > 0 ? scope.worldOutlineNormal : scope.worldNormal;\n ShaderHelper.setClipSpacePosition(\n scope,\n pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1))\n );\n }\n fragmentShader(scope: PBFunctionScope): void {\n super.fragmentShader(scope);\n const pb = scope.$builder;\n if (this.needFragmentColorInput()) {\n scope.shadeColorFactor = pb.vec3().uniform(2);\n scope.shadingShiftFactor = pb.float().uniform(2);\n scope.shadingShiftTextureScale = pb.float().uniform(2);\n scope.shadingToonyFactor = pb.float().uniform(2);\n scope.giEqualizationFactor = pb.float().uniform(2);\n scope.matcapFactor = pb.vec3().uniform(2);\n scope.parametricRimColorFactor = pb.vec3().uniform(2);\n scope.parametricRimFresnelPowerFactor = pb.float().uniform(2);\n scope.parametricRimLiftFactor = pb.float().uniform(2);\n scope.rimLightingMixFactor = pb.float().uniform(2);\n scope.uvAnimationScroll = pb.vec2().uniform(2);\n scope.uvAnimationRotationSpeedFactor = pb.float().uniform(2);\n scope.emissiveColor = pb.vec3().uniform(2);\n scope.emissiveStrength = pb.float().uniform(2);\n if (this.pass > 0) {\n scope.outlineColorFactor = pb.vec3().uniform(2);\n scope.outlineLightingMixFactor = pb.float().uniform(2);\n scope.$l.albedo = this.sampleAlbedo(scope, this.getMToonBaseUV(scope));\n scope.$l.outlineLighting = pb.mix(pb.vec3(1), scope.albedo.rgb, scope.outlineLightingMixFactor);\n this.outputFragmentColor(\n scope,\n scope.$inputs.worldPos,\n pb.vec4(pb.mul(scope.outlineColorFactor, scope.outlineLighting), scope.albedo.a)\n );\n } else {\n scope.$l.uv = this.getMToonBaseUV(scope);\n scope.$l.albedo = this.sampleAlbedo(scope, scope.uv);\n if (this.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\n scope.$l.normal = this.sampleNormal(scope, this.getMToonNormalUV(scope));\n scope.$l.shadingShift = scope.shadingShiftFactor;\n if (this.shadingShiftTexture) {\n scope.shadingShift = pb.add(\n scope.shadingShift,\n pb.mul(\n this.sampleShadingShiftTexture(\n scope,\n this.applyUVAnimation(scope, this.getShadingShiftTexCoord(scope))\n ).r,\n scope.shadingShiftTextureScale\n )\n );\n }\n scope.$l.shadeColor = this.sampleShadeColor(scope);\n scope.$l.viewVec = this.calculateViewVector(scope, scope.$inputs.worldPos);\n scope.$l.directLighting = this.calculateMToonDirectLighting(\n scope,\n scope.$inputs.worldPos,\n scope.normal,\n scope.albedo.rgb,\n scope.shadeColor,\n scope.shadingShift\n );\n scope.$l.giLighting = this.calculateMToonGI(scope, scope.normal, scope.albedo.rgb);\n scope.$l.lighting = pb.max(scope.directLighting, scope.giLighting);\n scope.$l.rim = this.calculateMToonRim(scope, scope.normal, scope.viewVec, scope.uv, scope.lighting);\n scope.$l.emission = this.calculateMToonEmission(scope);\n scope.$l.outColor = pb.vec4(\n pb.add(scope.directLighting, scope.giLighting, scope.rim, scope.emission),\n scope.albedo.a\n );\n this.outputFragmentColor(\n scope,\n scope.$inputs.worldPos,\n scope.outColor,\n pb.vec4(1, 1, 0, 1),\n pb.vec4(pb.add(pb.mul(scope.normal, 0.5), pb.vec3(0.5)), 1)\n );\n } else {\n this.outputFragmentColor(scope, scope.$inputs.worldPos, scope.albedo);\n }\n }\n } else {\n this.outputFragmentColor(scope, scope.$inputs.worldPos, null);\n }\n }\n}\n"],"names":["ToonMaterialBase","applyMaterialMixins","MeshMaterial","mixinAlbedoColor","mixinLambert","mixinTextureProps","MToonMaterial","FEATURE_OUTLINE_WIDTH_MODE","defineFeature","FEATURE_OUTLINE_TANGENT_NORMALS","_shadeColorFactor","_matcapFactor","_parametricRimColorFactor","_outlineColorFactor","_uvAnimationScroll","_emissiveColor","_shadingShiftFactor","_shadingShiftTextureScale","_shadingToonyFactor","_giEqualizationFactor","_parametricRimFresnelPowerFactor","_parametricRimLiftFactor","_rimLightingMixFactor","_outlineWidthFactor","_outlineLightingMixFactor","_uvAnimationRotationSpeedFactor","_emissiveStrength","_transparentWithZWrite","_renderQueueOffsetNumber","Vector3","Vector2","outlineWidthMode","outlineUsesTangentNormals","shadeColorFactor","val","set","uniformChanged","shadingShiftFactor","shadingShiftTextureScale","shadingToonyFactor","toony","Math","min","max","giEqualizationFactor","factor","matcapFactor","parametricRimColorFactor","parametricRimFresnelPowerFactor","parametricRimLiftFactor","rimLightingMixFactor","featureUsed","numPasses","useFeature","outlineWidthFactor","outlineColorFactor","outlineLightingMixFactor","transparentWithZWrite","renderQueueOffsetNumber","offset","trunc","uvAnimationScrollXSpeedFactor","x","uvAnimationScrollYSpeedFactor","y","uvAnimationRotationSpeedFactor","emissiveColor","emissiveStrength","clone","other","copyFrom","getQueueType","isTransparentPass","QUEUE_TRANSPARENT","QUEUE_OPAQUE","passToHash","pass","ctx","updateRenderStates","stateSet","useRasterizerState","cullMode","defaultBlendingState","useDepthState","enableTest","enableWrite","setCompareFunc","draw","primitive","numInstances","material","renderPass","type","RENDER_PASS_TYPE_LIGHT","lightBlending","bind","device","drawPrimitive","prototype","call","applyUniformValues","bindGroup","needFragmentColorInput","setValue","outlineWidthMultiplyTexture","usesAnimatedUV","setTexture","outlineWidthMultiplyTextureSampler","uvAnimationMaskTexture","uvAnimationMaskTextureSampler","outlineWidthMultiplyTexCoordMatrix","applyUVAnimation","scope","uv","pb","$builder","funcName","that","uvAnimationScroll","vec2","uniform","float","shaderKind","uvAnimationMaskTex","tex2D","func","$l","mask","textureSample","getUvAnimationMaskTextureUniform","b","textureSampleLevel","time","ShaderHelper","getElapsedTime","rotation","mul","c","cos","s","sin","centeredUv","sub","rotatedUv","add","neg","$return","getGlobalScope","getMToonBaseUV","albedoTexture","getAlbedoTexCoord","getMToonNormalUV","normalTexture","getNormalTexCoord","sampleAlbedo","calculateAlbedoColor","sampleShadeColor","shadeMultiplyTexture","sampleShadeMultiplyTexture","getShadeMultiplyTexCoord","rgb","sampleNormal","normalize","$inputs","wNorm","TBN","calculateTBN","worldPos","normalTex","sampleNormalTexture","vec3","getUniformNormalScale","xx","calculateMToonDirectLighting","normal","baseColor","shadeColor","shadingShift","directColor","forEachLight","posRange","dirCutoff","colorIntensity","extra","shadow","lightAtten","calculateLightAttenuation","lightDir","calculateLightDirection","lightColor","a","NoL","dot","shiftedShading","shading","clamp","div","lightDiffuse","mix","shadowValue","calculateShadow","calculateMToonGI","needCalculateEnvLight","rawGi","getEnvLightIrradiance","uniformGi","gi","calculateMToonRim","viewVec","lighting","rim","matcapTexture","worldViewX","z","worldViewY","cross","matcapUv","sampleMatcapTexture","NoV","parametricRim","pow","rimMultiplyTexture","sampleRimMultiplyTexture","getRimMultiplyTexCoord","calculateMToonEmission","emissiveTexture","sampleEmissiveTexture","getEmissiveTexCoord","vertexShader","oPos","resolveVertexPosition","oNorm","resolveVertexNormal","oOutlineNorm","resolveVertexTangent","xyz","worldNormal","getNormalMatrix","vec4","worldOutlineNormal","getWorldMatrix","width","outlineWidthTex","uvIndex","outlineWidthMultiplyTexCoordIndex","semantic","$getVertexAttrib","attrib","outlineWidthTextureMatrix","mat4","outlineUv","xy","g","clipNormalPos","getViewProjectionMatrix","clipPos","screenNormal","w","getRenderSize","zw","$outputs","setClipSpacePosition","fragmentShader","albedo","outlineLighting","outputFragmentColor","drawContext","shadingShiftTexture","sampleShadingShiftTexture","getShadingShiftTexCoord","r","calculateViewVector","directLighting","giLighting","emission","outColor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mtoon.js","sources":["../../src/material/mtoon.ts"],"sourcesContent":["import type { Immutable } from '@zephyr3d/base';\r\nimport { Vector2, Vector3 } from '@zephyr3d/base';\r\nimport type {\r\n BindGroup,\r\n PBFunctionScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n RenderStateSet\r\n} from '@zephyr3d/device';\r\nimport type { DrawContext, Primitive } from '../render';\r\nimport { applyMaterialMixins, MeshMaterial } from './meshmaterial';\r\nimport { mixinAlbedoColor } from './mixins/albedocolor';\r\nimport { mixinLambert } from './mixins/lightmodel/lambert';\r\nimport { mixinTextureProps } from './mixins/texture';\r\nimport { QUEUE_OPAQUE, QUEUE_TRANSPARENT, RENDER_PASS_TYPE_LIGHT } from '../values';\r\nimport { ShaderHelper } from './shader/helper';\r\n\r\n/**\r\n * MToonMaterial outline width mode.\r\n *\r\n * @public\r\n */\r\nexport type MToonOutlineWidthMode = 'none' | 'worldCoordinates' | 'screenCoordinates';\r\n\r\ntype RuntimeMaterialPassMethods = {\r\n bind(device: DrawContext['device'], pass: number): boolean;\r\n draw(primitive: Primitive, ctx: DrawContext, numInstances?: number): void;\r\n};\r\n\r\nconst ToonMaterialBase = applyMaterialMixins(\r\n MeshMaterial,\r\n mixinAlbedoColor,\r\n mixinLambert,\r\n mixinTextureProps('shadeMultiply'),\r\n mixinTextureProps('shadingShift'),\r\n mixinTextureProps('matcap'),\r\n mixinTextureProps('rimMultiply'),\r\n mixinTextureProps('outlineWidthMultiply'),\r\n mixinTextureProps('uvAnimationMask'),\r\n mixinTextureProps('emissive')\r\n);\r\n\r\n/**\r\n * MToonMaterial is a material that implements the MToon shader, which is a stylized shader commonly used for rendering anime-style characters. It supports features such as rim lighting, matcap, and outline rendering.\r\n *\r\n * @public\r\n */\r\nexport class MToonMaterial extends ToonMaterialBase {\r\n private static readonly FEATURE_OUTLINE_WIDTH_MODE = this.defineFeature();\r\n private static readonly FEATURE_OUTLINE_TANGENT_NORMALS = this.defineFeature();\r\n private readonly _shadeColorFactor: Vector3;\r\n private readonly _matcapFactor: Vector3;\r\n private readonly _parametricRimColorFactor: Vector3;\r\n private readonly _outlineColorFactor: Vector3;\r\n private readonly _uvAnimationScroll: Vector2;\r\n private readonly _emissiveColor: Vector3;\r\n private _shadingShiftFactor: number;\r\n private _shadingShiftTextureScale: number;\r\n private _shadingToonyFactor: number;\r\n private _giEqualizationFactor: number;\r\n private _parametricRimFresnelPowerFactor: number;\r\n private _parametricRimLiftFactor: number;\r\n private _rimLightingMixFactor: number;\r\n private _outlineWidthFactor: number;\r\n private _outlineLightingMixFactor: number;\r\n private _uvAnimationRotationSpeedFactor: number;\r\n private _emissiveStrength: number;\r\n private _transparentWithZWrite: boolean;\r\n private _renderQueueOffsetNumber: number;\r\n constructor() {\r\n super();\r\n this._shadeColorFactor = new Vector3(0, 0, 0);\r\n this._matcapFactor = new Vector3(1, 1, 1);\r\n this._parametricRimColorFactor = new Vector3(0, 0, 0);\r\n this._outlineColorFactor = new Vector3(0, 0, 0);\r\n this._uvAnimationScroll = new Vector2(0, 0);\r\n this._emissiveColor = new Vector3(0, 0, 0);\r\n this._shadingShiftFactor = 0;\r\n this._shadingShiftTextureScale = 1;\r\n this._shadingToonyFactor = 0.9;\r\n this._giEqualizationFactor = 0.9;\r\n this._parametricRimFresnelPowerFactor = 5;\r\n this._parametricRimLiftFactor = 0;\r\n this._rimLightingMixFactor = 1;\r\n this._outlineWidthFactor = 0;\r\n this._outlineLightingMixFactor = 1;\r\n this._uvAnimationRotationSpeedFactor = 0;\r\n this._emissiveStrength = 1;\r\n this._transparentWithZWrite = false;\r\n this._renderQueueOffsetNumber = 0;\r\n this.outlineWidthMode = 'none';\r\n this.outlineUsesTangentNormals = false;\r\n }\r\n get shadeColorFactor(): Immutable<Vector3> {\r\n return this._shadeColorFactor;\r\n }\r\n set shadeColorFactor(val: Immutable<Vector3>) {\r\n this._shadeColorFactor.set(val);\r\n this.uniformChanged();\r\n }\r\n get shadingShiftFactor(): number {\r\n return this._shadingShiftFactor;\r\n }\r\n set shadingShiftFactor(val: number) {\r\n if (val !== this._shadingShiftFactor) {\r\n this._shadingShiftFactor = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get shadingShiftTextureScale(): number {\r\n return this._shadingShiftTextureScale;\r\n }\r\n set shadingShiftTextureScale(val: number) {\r\n if (val !== this._shadingShiftTextureScale) {\r\n this._shadingShiftTextureScale = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get shadingToonyFactor(): number {\r\n return this._shadingToonyFactor;\r\n }\r\n set shadingToonyFactor(val: number) {\r\n const toony = Math.min(Math.max(val, 0), 0.99);\r\n if (toony !== this._shadingToonyFactor) {\r\n this._shadingToonyFactor = toony;\r\n this.uniformChanged();\r\n }\r\n }\r\n get giEqualizationFactor(): number {\r\n return this._giEqualizationFactor;\r\n }\r\n set giEqualizationFactor(val: number) {\r\n const factor = Math.min(Math.max(val, 0), 1);\r\n if (factor !== this._giEqualizationFactor) {\r\n this._giEqualizationFactor = factor;\r\n this.uniformChanged();\r\n }\r\n }\r\n get matcapFactor(): Immutable<Vector3> {\r\n return this._matcapFactor;\r\n }\r\n set matcapFactor(val: Immutable<Vector3>) {\r\n this._matcapFactor.set(val);\r\n this.uniformChanged();\r\n }\r\n get parametricRimColorFactor(): Immutable<Vector3> {\r\n return this._parametricRimColorFactor;\r\n }\r\n set parametricRimColorFactor(val: Immutable<Vector3>) {\r\n this._parametricRimColorFactor.set(val);\r\n this.uniformChanged();\r\n }\r\n get parametricRimFresnelPowerFactor(): number {\r\n return this._parametricRimFresnelPowerFactor;\r\n }\r\n set parametricRimFresnelPowerFactor(val: number) {\r\n if (val !== this._parametricRimFresnelPowerFactor) {\r\n this._parametricRimFresnelPowerFactor = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get parametricRimLiftFactor(): number {\r\n return this._parametricRimLiftFactor;\r\n }\r\n set parametricRimLiftFactor(val: number) {\r\n if (val !== this._parametricRimLiftFactor) {\r\n this._parametricRimLiftFactor = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get rimLightingMixFactor(): number {\r\n return this._rimLightingMixFactor;\r\n }\r\n set rimLightingMixFactor(val: number) {\r\n const factor = Math.min(Math.max(val, 0), 1);\r\n if (factor !== this._rimLightingMixFactor) {\r\n this._rimLightingMixFactor = factor;\r\n this.uniformChanged();\r\n }\r\n }\r\n get outlineWidthMode(): MToonOutlineWidthMode {\r\n return this.featureUsed<MToonOutlineWidthMode>(MToonMaterial.FEATURE_OUTLINE_WIDTH_MODE);\r\n }\r\n set outlineWidthMode(val: MToonOutlineWidthMode) {\r\n if (val !== 'none' && this.numPasses < 2) {\r\n this.numPasses = 2;\r\n }\r\n this.useFeature(MToonMaterial.FEATURE_OUTLINE_WIDTH_MODE, val);\r\n this.numPasses = val === 'none' ? 1 : 2;\r\n }\r\n get outlineWidthFactor(): number {\r\n return this._outlineWidthFactor;\r\n }\r\n set outlineWidthFactor(val: number) {\r\n if (val !== this._outlineWidthFactor) {\r\n this._outlineWidthFactor = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get outlineColorFactor(): Immutable<Vector3> {\r\n return this._outlineColorFactor;\r\n }\r\n set outlineColorFactor(val: Immutable<Vector3>) {\r\n this._outlineColorFactor.set(val);\r\n this.uniformChanged();\r\n }\r\n get outlineLightingMixFactor(): number {\r\n return this._outlineLightingMixFactor;\r\n }\r\n set outlineLightingMixFactor(val: number) {\r\n const factor = Math.min(Math.max(val, 0), 1);\r\n if (factor !== this._outlineLightingMixFactor) {\r\n this._outlineLightingMixFactor = factor;\r\n this.uniformChanged();\r\n }\r\n }\r\n get outlineUsesTangentNormals(): boolean {\r\n return !!this.featureUsed<boolean>(MToonMaterial.FEATURE_OUTLINE_TANGENT_NORMALS);\r\n }\r\n set outlineUsesTangentNormals(val: boolean) {\r\n this.useFeature(MToonMaterial.FEATURE_OUTLINE_TANGENT_NORMALS, !!val);\r\n }\r\n get transparentWithZWrite(): boolean {\r\n return this._transparentWithZWrite;\r\n }\r\n set transparentWithZWrite(val: boolean) {\r\n if (!!val !== this._transparentWithZWrite) {\r\n this._transparentWithZWrite = !!val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get renderQueueOffsetNumber(): number {\r\n return this._renderQueueOffsetNumber;\r\n }\r\n set renderQueueOffsetNumber(val: number) {\r\n const offset = Math.trunc(val);\r\n if (offset !== this._renderQueueOffsetNumber) {\r\n this._renderQueueOffsetNumber = offset;\r\n this.uniformChanged();\r\n }\r\n }\r\n get uvAnimationScrollXSpeedFactor(): number {\r\n return this._uvAnimationScroll.x;\r\n }\r\n set uvAnimationScrollXSpeedFactor(val: number) {\r\n if (val !== this._uvAnimationScroll.x) {\r\n this._uvAnimationScroll.x = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get uvAnimationScrollYSpeedFactor(): number {\r\n return this._uvAnimationScroll.y;\r\n }\r\n set uvAnimationScrollYSpeedFactor(val: number) {\r\n if (val !== this._uvAnimationScroll.y) {\r\n this._uvAnimationScroll.y = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get uvAnimationRotationSpeedFactor(): number {\r\n return this._uvAnimationRotationSpeedFactor;\r\n }\r\n set uvAnimationRotationSpeedFactor(val: number) {\r\n if (val !== this._uvAnimationRotationSpeedFactor) {\r\n this._uvAnimationRotationSpeedFactor = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get emissiveColor(): Immutable<Vector3> {\r\n return this._emissiveColor;\r\n }\r\n set emissiveColor(val: Immutable<Vector3>) {\r\n this._emissiveColor.set(val);\r\n this.uniformChanged();\r\n }\r\n get emissiveStrength(): number {\r\n return this._emissiveStrength;\r\n }\r\n set emissiveStrength(val: number) {\r\n if (val !== this._emissiveStrength) {\r\n this._emissiveStrength = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n clone(): MToonMaterial {\r\n const other = new MToonMaterial();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.shadeColorFactor = other.shadeColorFactor;\r\n this.shadingShiftFactor = other.shadingShiftFactor;\r\n this.shadingShiftTextureScale = other.shadingShiftTextureScale;\r\n this.shadingToonyFactor = other.shadingToonyFactor;\r\n this.giEqualizationFactor = other.giEqualizationFactor;\r\n this.matcapFactor = other.matcapFactor;\r\n this.parametricRimColorFactor = other.parametricRimColorFactor;\r\n this.parametricRimFresnelPowerFactor = other.parametricRimFresnelPowerFactor;\r\n this.parametricRimLiftFactor = other.parametricRimLiftFactor;\r\n this.rimLightingMixFactor = other.rimLightingMixFactor;\r\n this.outlineWidthMode = other.outlineWidthMode;\r\n this.outlineWidthFactor = other.outlineWidthFactor;\r\n this.outlineColorFactor = other.outlineColorFactor;\r\n this.outlineLightingMixFactor = other.outlineLightingMixFactor;\r\n this.outlineUsesTangentNormals = other.outlineUsesTangentNormals;\r\n this.transparentWithZWrite = other.transparentWithZWrite;\r\n this.renderQueueOffsetNumber = other.renderQueueOffsetNumber;\r\n this.uvAnimationScrollXSpeedFactor = other.uvAnimationScrollXSpeedFactor;\r\n this.uvAnimationScrollYSpeedFactor = other.uvAnimationScrollYSpeedFactor;\r\n this.uvAnimationRotationSpeedFactor = other.uvAnimationRotationSpeedFactor;\r\n this.emissiveColor = other.emissiveColor;\r\n this.emissiveStrength = other.emissiveStrength;\r\n }\r\n getQueueType() {\r\n return this.isTransparentPass(0) ? QUEUE_TRANSPARENT : QUEUE_OPAQUE;\r\n }\r\n passToHash(pass: number): string {\r\n return super.passToHash(pass > 0 ? 1 : 0);\r\n }\r\n isTransparentPass(pass: number, ctx?: DrawContext): boolean {\r\n return pass === 0 && super.isTransparentPass(pass, ctx);\r\n }\r\n protected updateRenderStates(pass: number, stateSet: RenderStateSet, ctx: DrawContext): void {\r\n super.updateRenderStates(pass, stateSet, ctx);\r\n if (pass > 0) {\r\n stateSet.useRasterizerState().cullMode = 'front';\r\n stateSet.defaultBlendingState();\r\n stateSet.useDepthState().enableTest(true).enableWrite(true).setCompareFunc('lt');\r\n } else if (this._transparentWithZWrite && this.isTransparentPass(pass, ctx)) {\r\n stateSet.useDepthState().enableTest(true).enableWrite(true);\r\n }\r\n }\r\n draw(primitive: Primitive, ctx: DrawContext, numInstances = 0): void {\r\n const material = this as unknown as RuntimeMaterialPassMethods;\r\n if (this.numPasses > 1 && ctx.renderPass!.type === RENDER_PASS_TYPE_LIGHT && !ctx.lightBlending) {\r\n // Draw the inflated hull first so the regular pass hides interior outline fragments.\r\n material.bind(ctx.device, 1);\r\n this.drawPrimitive(1, primitive, ctx, numInstances);\r\n material.bind(ctx.device, 0);\r\n this.drawPrimitive(0, primitive, ctx, numInstances);\r\n } else {\r\n (MeshMaterial.prototype as unknown as RuntimeMaterialPassMethods).draw.call(\r\n this,\r\n primitive,\r\n ctx,\r\n numInstances\r\n );\r\n }\r\n }\r\n drawPrimitive(pass: number, primitive: Primitive, ctx: DrawContext, numInstances: number): void {\r\n if (pass > 0 && (ctx.renderPass!.type !== RENDER_PASS_TYPE_LIGHT || ctx.lightBlending)) {\r\n return;\r\n }\r\n super.drawPrimitive(pass, primitive, ctx, numInstances);\r\n }\r\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number): void {\r\n super.applyUniformValues(bindGroup, ctx, pass);\r\n if (this.needFragmentColorInput(ctx)) {\r\n bindGroup.setValue('shadeColorFactor', this._shadeColorFactor);\r\n bindGroup.setValue('shadingShiftFactor', this._shadingShiftFactor);\r\n bindGroup.setValue('shadingShiftTextureScale', this._shadingShiftTextureScale);\r\n bindGroup.setValue('shadingToonyFactor', this._shadingToonyFactor);\r\n bindGroup.setValue('giEqualizationFactor', this._giEqualizationFactor);\r\n bindGroup.setValue('matcapFactor', this._matcapFactor);\r\n bindGroup.setValue('parametricRimColorFactor', this._parametricRimColorFactor);\r\n bindGroup.setValue('parametricRimFresnelPowerFactor', this._parametricRimFresnelPowerFactor);\r\n bindGroup.setValue('parametricRimLiftFactor', this._parametricRimLiftFactor);\r\n bindGroup.setValue('rimLightingMixFactor', this._rimLightingMixFactor);\r\n bindGroup.setValue('uvAnimationScroll', this._uvAnimationScroll);\r\n bindGroup.setValue('uvAnimationRotationSpeedFactor', this._uvAnimationRotationSpeedFactor);\r\n bindGroup.setValue('emissiveColor', this._emissiveColor);\r\n bindGroup.setValue('emissiveStrength', this._emissiveStrength);\r\n } else if (pass > 0 && this.outlineWidthMultiplyTexture && this.usesAnimatedUV()) {\r\n bindGroup.setValue('uvAnimationScroll', this._uvAnimationScroll);\r\n bindGroup.setValue('uvAnimationRotationSpeedFactor', this._uvAnimationRotationSpeedFactor);\r\n }\r\n if (pass > 0) {\r\n bindGroup.setValue('outlineWidthFactor', this._outlineWidthFactor);\r\n if (this.outlineWidthMultiplyTexture) {\r\n bindGroup.setTexture(\r\n 'outlineWidthTex',\r\n this.outlineWidthMultiplyTexture,\r\n this.outlineWidthMultiplyTextureSampler\r\n );\r\n if (this.uvAnimationMaskTexture && this.usesAnimatedUV()) {\r\n bindGroup.setTexture(\r\n 'uvAnimationMaskTex',\r\n this.uvAnimationMaskTexture,\r\n this.uvAnimationMaskTextureSampler\r\n );\r\n }\r\n if (this.outlineWidthMultiplyTexCoordMatrix) {\r\n bindGroup.setValue('outlineWidthTextureMatrix', this.outlineWidthMultiplyTexCoordMatrix);\r\n }\r\n }\r\n }\r\n if (pass > 0 && ctx.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n bindGroup.setValue('outlineColorFactor', this._outlineColorFactor);\r\n bindGroup.setValue('outlineLightingMixFactor', this._outlineLightingMixFactor);\r\n }\r\n }\r\n private usesAnimatedUV(): boolean {\r\n return (\r\n this._uvAnimationScroll.x !== 0 ||\r\n this._uvAnimationScroll.y !== 0 ||\r\n this._uvAnimationRotationSpeedFactor !== 0\r\n );\r\n }\r\n private applyUVAnimation(scope: PBInsideFunctionScope, uv: PBShaderExp): PBShaderExp {\r\n if (!this.usesAnimatedUV()) {\r\n return uv;\r\n }\r\n const pb = scope.$builder;\r\n const funcName = 'Z_mtoonUVAnimation';\r\n const that = this;\r\n if (!scope.uvAnimationScroll) {\r\n scope.uvAnimationScroll = pb.vec2().uniform(2);\r\n }\r\n if (!scope.uvAnimationRotationSpeedFactor) {\r\n scope.uvAnimationRotationSpeedFactor = pb.float().uniform(2);\r\n }\r\n if (that.uvAnimationMaskTexture && pb.shaderKind !== 'fragment' && !scope.uvAnimationMaskTex) {\r\n scope.uvAnimationMaskTex = pb.tex2D().uniform(2);\r\n }\r\n pb.func(funcName, [pb.vec2('uv')], function () {\r\n this.$l.mask = that.uvAnimationMaskTexture\r\n ? pb.shaderKind === 'fragment'\r\n ? pb.textureSample(that.getUvAnimationMaskTextureUniform(this), this.uv).b\r\n : pb.textureSampleLevel(this.uvAnimationMaskTex, this.uv, 0).b\r\n : pb.float(1);\r\n this.$l.time = ShaderHelper.getElapsedTime(this);\r\n this.$l.rotation = pb.mul(this.time, this.uvAnimationRotationSpeedFactor, this.mask);\r\n this.$l.c = pb.cos(this.rotation);\r\n this.$l.s = pb.sin(this.rotation);\r\n this.$l.centeredUv = pb.sub(this.uv, pb.vec2(0.5));\r\n this.$l.rotatedUv = pb.add(\r\n pb.vec2(\r\n pb.add(pb.mul(this.c, this.centeredUv.x), pb.mul(this.s, this.centeredUv.y)),\r\n pb.add(pb.mul(pb.neg(this.s), this.centeredUv.x), pb.mul(this.c, this.centeredUv.y))\r\n ),\r\n pb.vec2(0.5)\r\n );\r\n this.$return(pb.add(this.rotatedUv, pb.mul(this.uvAnimationScroll, this.time, this.mask)));\r\n });\r\n return pb.getGlobalScope()[funcName](uv);\r\n }\r\n private getMToonBaseUV(scope: PBInsideFunctionScope): PBShaderExp {\r\n return this.albedoTexture\r\n ? this.applyUVAnimation(scope, this.getAlbedoTexCoord(scope))\r\n : scope.$builder.vec2(0);\r\n }\r\n private getMToonNormalUV(scope: PBInsideFunctionScope): PBShaderExp {\r\n return this.normalTexture\r\n ? this.applyUVAnimation(scope, this.getNormalTexCoord(scope))\r\n : scope.$builder.vec2(0);\r\n }\r\n private sampleAlbedo(scope: PBInsideFunctionScope, uv: PBShaderExp): PBShaderExp {\r\n return this.calculateAlbedoColor(scope, uv);\r\n }\r\n private sampleShadeColor(scope: PBInsideFunctionScope): PBShaderExp {\r\n const pb = scope.$builder;\r\n return this.shadeMultiplyTexture\r\n ? pb.mul(\r\n scope.shadeColorFactor,\r\n this.sampleShadeMultiplyTexture(\r\n scope,\r\n this.applyUVAnimation(scope, this.getShadeMultiplyTexCoord(scope))\r\n ).rgb\r\n )\r\n : scope.shadeColorFactor;\r\n }\r\n private sampleNormal(scope: PBInsideFunctionScope, uv: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n if (!this.normalTexture) {\r\n return pb.normalize(scope.$inputs.wNorm);\r\n }\r\n scope.$l.TBN = this.calculateTBN(scope, scope.$inputs.worldPos, scope.$inputs.wNorm);\r\n scope.$l.normalTex = pb.sub(pb.mul(this.sampleNormalTexture(scope, uv).rgb, 2), pb.vec3(1));\r\n scope.normalTex = pb.mul(scope.normalTex, pb.vec3(pb.vec3(this.getUniformNormalScale(scope)).xx, 1));\r\n return pb.normalize(pb.mul(scope.TBN, scope.normalTex));\r\n }\r\n private calculateMToonDirectLighting(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n normal: PBShaderExp,\r\n baseColor: PBShaderExp,\r\n shadeColor: PBShaderExp,\r\n shadingShift: PBShaderExp\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const funcName = 'Z_mtoonDirectLighting';\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('worldPos'),\r\n pb.vec3('normal'),\r\n pb.vec3('baseColor'),\r\n pb.vec3('shadeColor'),\r\n pb.float('shadingShift')\r\n ],\r\n function () {\r\n this.$l.directColor = pb.vec3(0);\r\n that.forEachLight(this, function (type, posRange, dirCutoff, colorIntensity, extra, shadow) {\r\n this.$l.lightAtten = that.calculateLightAttenuation(this, type, this.worldPos, posRange, dirCutoff);\r\n this.$l.lightDir = that.calculateLightDirection(this, type, this.worldPos, posRange, dirCutoff);\r\n this.$l.lightColor = pb.mul(colorIntensity.rgb, colorIntensity.a, this.lightAtten);\r\n this.$l.NoL = pb.dot(this.normal, this.lightDir);\r\n this.$l.shiftedShading = pb.add(this.NoL, this.shadingShift);\r\n this.$l.shading = pb.clamp(\r\n pb.div(\r\n pb.sub(this.shiftedShading, pb.add(-1, this.shadingToonyFactor)),\r\n pb.max(pb.sub(2, pb.mul(this.shadingToonyFactor, 2)), 0.00001)\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.lightDiffuse = pb.mix(this.shadeColor, this.baseColor, this.shading);\r\n if (shadow) {\r\n this.$l.shadowValue = that.calculateShadow(this, this.worldPos, pb.clamp(this.NoL, 0, 1));\r\n this.lightDiffuse = pb.mix(this.shadeColor, this.lightDiffuse, this.shadowValue);\r\n }\r\n this.directColor = pb.add(this.directColor, pb.mul(this.lightDiffuse, this.lightColor));\r\n });\r\n this.$return(this.directColor);\r\n }\r\n );\r\n return pb.getGlobalScope()[funcName](worldPos, normal, baseColor, shadeColor, shadingShift);\r\n }\r\n private calculateMToonGI(\r\n scope: PBInsideFunctionScope,\r\n normal: PBShaderExp,\r\n baseColor: PBShaderExp\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n if (!this.needCalculateEnvLight()) {\r\n return pb.vec3(0);\r\n }\r\n scope.$l.rawGi = this.getEnvLightIrradiance(scope, normal);\r\n scope.$l.uniformGi = pb.mul(\r\n pb.add(\r\n this.getEnvLightIrradiance(scope, pb.vec3(0, 1, 0)),\r\n this.getEnvLightIrradiance(scope, pb.vec3(0, -1, 0))\r\n ),\r\n 0.5\r\n );\r\n scope.$l.gi = pb.mix(scope.rawGi, scope.uniformGi, scope.giEqualizationFactor);\r\n return pb.mul(scope.gi, baseColor);\r\n }\r\n private calculateMToonRim(\r\n scope: PBInsideFunctionScope,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n uv: PBShaderExp,\r\n lighting: PBShaderExp\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n scope.$l.rim = pb.vec3(0);\r\n if (this.matcapTexture) {\r\n scope.$l.worldViewX = pb.normalize(pb.vec3(viewVec.z, 0, pb.neg(viewVec.x)));\r\n scope.$l.worldViewY = pb.normalize(pb.cross(viewVec, scope.worldViewX));\r\n scope.$l.matcapUv = pb.add(\r\n pb.mul(pb.vec2(pb.dot(scope.worldViewX, normal), pb.dot(scope.worldViewY, normal)), 0.495),\r\n pb.vec2(0.5)\r\n );\r\n scope.rim = pb.add(\r\n scope.rim,\r\n pb.mul(scope.matcapFactor, this.sampleMatcapTexture(scope, scope.matcapUv).rgb)\r\n );\r\n }\r\n scope.$l.NoV = pb.clamp(pb.dot(normal, viewVec), 0, 1);\r\n scope.$l.parametricRim = pb.pow(\r\n pb.clamp(pb.add(pb.sub(1, scope.NoV), scope.parametricRimLiftFactor), 0, 1),\r\n pb.max(scope.parametricRimFresnelPowerFactor, 0.00001)\r\n );\r\n scope.rim = pb.add(scope.rim, pb.mul(scope.parametricRimColorFactor, scope.parametricRim));\r\n if (this.rimMultiplyTexture) {\r\n scope.rim = pb.mul(\r\n scope.rim,\r\n this.sampleRimMultiplyTexture(scope, this.applyUVAnimation(scope, this.getRimMultiplyTexCoord(scope)))\r\n .rgb\r\n );\r\n }\r\n return pb.mul(scope.rim, pb.mix(pb.vec3(1), lighting, scope.rimLightingMixFactor));\r\n }\r\n private calculateMToonEmission(scope: PBInsideFunctionScope): PBShaderExp {\r\n const pb = scope.$builder;\r\n return this.emissiveTexture\r\n ? pb.mul(\r\n scope.emissiveColor,\r\n scope.emissiveStrength,\r\n this.sampleEmissiveTexture(scope, this.applyUVAnimation(scope, this.getEmissiveTexCoord(scope))).rgb\r\n )\r\n : pb.mul(scope.emissiveColor, scope.emissiveStrength);\r\n }\r\n vertexShader(scope: PBFunctionScope): void {\r\n super.vertexShader(scope);\r\n const pb = scope.$builder;\r\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\r\n scope.$l.oNorm = ShaderHelper.resolveVertexNormal(scope);\r\n if (this.pass > 0 && this.outlineUsesTangentNormals) {\r\n scope.$l.oOutlineNorm = ShaderHelper.resolveVertexTangent(scope).xyz;\r\n }\r\n scope.$l.worldNormal = pb.normalize(\r\n pb.mul(ShaderHelper.getNormalMatrix(scope), pb.vec4(scope.oNorm, 0)).xyz\r\n );\r\n scope.$l.worldOutlineNormal =\r\n this.pass > 0 && this.outlineUsesTangentNormals\r\n ? pb.normalize(pb.mul(ShaderHelper.getNormalMatrix(scope), pb.vec4(scope.oOutlineNorm, 0)).xyz)\r\n : scope.worldNormal;\r\n scope.$l.worldPos = pb.mul(ShaderHelper.getWorldMatrix(scope), pb.vec4(scope.oPos, 1)).xyz;\r\n if (this.pass > 0) {\r\n scope.outlineWidthFactor = pb.float().uniform(2);\r\n scope.$l.width = scope.outlineWidthFactor;\r\n if (this.outlineWidthMultiplyTexture) {\r\n scope.outlineWidthTex = pb.tex2D().uniform(2);\r\n const uvIndex = this.outlineWidthMultiplyTexCoordIndex;\r\n const semantic = `texCoord${uvIndex}` as any;\r\n if (!scope.$getVertexAttrib(semantic)) {\r\n scope.$inputs[semantic] = pb.vec2().attrib(semantic);\r\n }\r\n if (this.outlineWidthMultiplyTexCoordMatrix) {\r\n scope.outlineWidthTextureMatrix = pb.mat4().uniform(2);\r\n scope.$l.outlineUv = pb.mul(\r\n scope.outlineWidthTextureMatrix,\r\n pb.vec4(this.applyUVAnimation(scope, scope.$inputs[semantic]), 0, 1)\r\n ).xy;\r\n } else {\r\n scope.$l.outlineUv = this.applyUVAnimation(scope, scope.$inputs[semantic]);\r\n }\r\n scope.width = pb.mul(scope.width, pb.textureSampleLevel(scope.outlineWidthTex, scope.outlineUv, 0).g);\r\n }\r\n if (this.outlineWidthMode === 'worldCoordinates') {\r\n scope.worldPos = pb.add(scope.worldPos, pb.mul(scope.worldOutlineNormal, scope.width));\r\n } else if (this.outlineWidthMode === 'screenCoordinates') {\r\n scope.$l.clipNormalPos = pb.mul(\r\n ShaderHelper.getViewProjectionMatrix(scope),\r\n pb.vec4(pb.add(scope.worldPos, scope.worldOutlineNormal), 1)\r\n );\r\n scope.$l.clipPos = pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.worldPos, 1));\r\n scope.$l.screenNormal = pb.sub(\r\n pb.div(scope.clipNormalPos.xy, pb.max(scope.clipNormalPos.w, 0.00001)),\r\n pb.div(scope.clipPos.xy, pb.max(scope.clipPos.w, 0.00001))\r\n );\r\n scope.screenNormal = pb.normalize(\r\n pb.mul(\r\n scope.screenNormal,\r\n pb.vec2(1, pb.div(ShaderHelper.getRenderSize(scope).x, ShaderHelper.getRenderSize(scope).y))\r\n )\r\n );\r\n\r\n //scope.clipPos.xy = pb.add(scope.clipPos.xy, pb.mul(scope.screenNormal, scope.width, scope.clipPos.w));\r\n scope.clipPos = pb.vec4(\r\n pb.add(scope.clipPos.xy, pb.mul(scope.screenNormal, scope.width, scope.clipPos.w)),\r\n scope.clipPos.zw\r\n );\r\n scope.$outputs.worldPos = scope.worldPos;\r\n scope.$outputs.wNorm = scope.worldOutlineNormal;\r\n ShaderHelper.setClipSpacePosition(scope, scope.clipPos);\r\n return;\r\n }\r\n }\r\n scope.$outputs.worldPos = scope.worldPos;\r\n scope.$outputs.wNorm = this.pass > 0 ? scope.worldOutlineNormal : scope.worldNormal;\r\n ShaderHelper.setClipSpacePosition(\r\n scope,\r\n pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1))\r\n );\r\n }\r\n fragmentShader(scope: PBFunctionScope): void {\r\n super.fragmentShader(scope);\r\n const pb = scope.$builder;\r\n if (this.needFragmentColorInput()) {\r\n scope.shadeColorFactor = pb.vec3().uniform(2);\r\n scope.shadingShiftFactor = pb.float().uniform(2);\r\n scope.shadingShiftTextureScale = pb.float().uniform(2);\r\n scope.shadingToonyFactor = pb.float().uniform(2);\r\n scope.giEqualizationFactor = pb.float().uniform(2);\r\n scope.matcapFactor = pb.vec3().uniform(2);\r\n scope.parametricRimColorFactor = pb.vec3().uniform(2);\r\n scope.parametricRimFresnelPowerFactor = pb.float().uniform(2);\r\n scope.parametricRimLiftFactor = pb.float().uniform(2);\r\n scope.rimLightingMixFactor = pb.float().uniform(2);\r\n scope.uvAnimationScroll = pb.vec2().uniform(2);\r\n scope.uvAnimationRotationSpeedFactor = pb.float().uniform(2);\r\n scope.emissiveColor = pb.vec3().uniform(2);\r\n scope.emissiveStrength = pb.float().uniform(2);\r\n if (this.pass > 0) {\r\n scope.outlineColorFactor = pb.vec3().uniform(2);\r\n scope.outlineLightingMixFactor = pb.float().uniform(2);\r\n scope.$l.albedo = this.sampleAlbedo(scope, this.getMToonBaseUV(scope));\r\n scope.$l.outlineLighting = pb.mix(pb.vec3(1), scope.albedo.rgb, scope.outlineLightingMixFactor);\r\n this.outputFragmentColor(\r\n scope,\r\n scope.$inputs.worldPos,\r\n pb.vec4(pb.mul(scope.outlineColorFactor, scope.outlineLighting), scope.albedo.a)\r\n );\r\n } else {\r\n scope.$l.uv = this.getMToonBaseUV(scope);\r\n scope.$l.albedo = this.sampleAlbedo(scope, scope.uv);\r\n if (this.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n scope.$l.normal = this.sampleNormal(scope, this.getMToonNormalUV(scope));\r\n scope.$l.shadingShift = scope.shadingShiftFactor;\r\n if (this.shadingShiftTexture) {\r\n scope.shadingShift = pb.add(\r\n scope.shadingShift,\r\n pb.mul(\r\n this.sampleShadingShiftTexture(\r\n scope,\r\n this.applyUVAnimation(scope, this.getShadingShiftTexCoord(scope))\r\n ).r,\r\n scope.shadingShiftTextureScale\r\n )\r\n );\r\n }\r\n scope.$l.shadeColor = this.sampleShadeColor(scope);\r\n scope.$l.viewVec = this.calculateViewVector(scope, scope.$inputs.worldPos);\r\n scope.$l.directLighting = this.calculateMToonDirectLighting(\r\n scope,\r\n scope.$inputs.worldPos,\r\n scope.normal,\r\n scope.albedo.rgb,\r\n scope.shadeColor,\r\n scope.shadingShift\r\n );\r\n scope.$l.giLighting = this.calculateMToonGI(scope, scope.normal, scope.albedo.rgb);\r\n scope.$l.lighting = pb.max(scope.directLighting, scope.giLighting);\r\n scope.$l.rim = this.calculateMToonRim(scope, scope.normal, scope.viewVec, scope.uv, scope.lighting);\r\n scope.$l.emission = this.calculateMToonEmission(scope);\r\n scope.$l.outColor = pb.vec4(\r\n pb.add(scope.directLighting, scope.giLighting, scope.rim, scope.emission),\r\n scope.albedo.a\r\n );\r\n this.outputFragmentColor(\r\n scope,\r\n scope.$inputs.worldPos,\r\n scope.outColor,\r\n pb.vec4(1, 1, 0, 1),\r\n pb.vec4(pb.add(pb.mul(scope.normal, 0.5), pb.vec3(0.5)), 1)\r\n );\r\n } else {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, scope.albedo);\r\n }\r\n }\r\n } else {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, null);\r\n }\r\n }\r\n}\r\n"],"names":["ToonMaterialBase","applyMaterialMixins","MeshMaterial","mixinAlbedoColor","mixinLambert","mixinTextureProps","MToonMaterial","FEATURE_OUTLINE_WIDTH_MODE","defineFeature","FEATURE_OUTLINE_TANGENT_NORMALS","_shadeColorFactor","_matcapFactor","_parametricRimColorFactor","_outlineColorFactor","_uvAnimationScroll","_emissiveColor","_shadingShiftFactor","_shadingShiftTextureScale","_shadingToonyFactor","_giEqualizationFactor","_parametricRimFresnelPowerFactor","_parametricRimLiftFactor","_rimLightingMixFactor","_outlineWidthFactor","_outlineLightingMixFactor","_uvAnimationRotationSpeedFactor","_emissiveStrength","_transparentWithZWrite","_renderQueueOffsetNumber","Vector3","Vector2","outlineWidthMode","outlineUsesTangentNormals","shadeColorFactor","val","set","uniformChanged","shadingShiftFactor","shadingShiftTextureScale","shadingToonyFactor","toony","Math","min","max","giEqualizationFactor","factor","matcapFactor","parametricRimColorFactor","parametricRimFresnelPowerFactor","parametricRimLiftFactor","rimLightingMixFactor","featureUsed","numPasses","useFeature","outlineWidthFactor","outlineColorFactor","outlineLightingMixFactor","transparentWithZWrite","renderQueueOffsetNumber","offset","trunc","uvAnimationScrollXSpeedFactor","x","uvAnimationScrollYSpeedFactor","y","uvAnimationRotationSpeedFactor","emissiveColor","emissiveStrength","clone","other","copyFrom","getQueueType","isTransparentPass","QUEUE_TRANSPARENT","QUEUE_OPAQUE","passToHash","pass","ctx","updateRenderStates","stateSet","useRasterizerState","cullMode","defaultBlendingState","useDepthState","enableTest","enableWrite","setCompareFunc","draw","primitive","numInstances","material","renderPass","type","RENDER_PASS_TYPE_LIGHT","lightBlending","bind","device","drawPrimitive","prototype","call","applyUniformValues","bindGroup","needFragmentColorInput","setValue","outlineWidthMultiplyTexture","usesAnimatedUV","setTexture","outlineWidthMultiplyTextureSampler","uvAnimationMaskTexture","uvAnimationMaskTextureSampler","outlineWidthMultiplyTexCoordMatrix","applyUVAnimation","scope","uv","pb","$builder","funcName","that","uvAnimationScroll","vec2","uniform","float","shaderKind","uvAnimationMaskTex","tex2D","func","$l","mask","textureSample","getUvAnimationMaskTextureUniform","b","textureSampleLevel","time","ShaderHelper","getElapsedTime","rotation","mul","c","cos","s","sin","centeredUv","sub","rotatedUv","add","neg","$return","getGlobalScope","getMToonBaseUV","albedoTexture","getAlbedoTexCoord","getMToonNormalUV","normalTexture","getNormalTexCoord","sampleAlbedo","calculateAlbedoColor","sampleShadeColor","shadeMultiplyTexture","sampleShadeMultiplyTexture","getShadeMultiplyTexCoord","rgb","sampleNormal","normalize","$inputs","wNorm","TBN","calculateTBN","worldPos","normalTex","sampleNormalTexture","vec3","getUniformNormalScale","xx","calculateMToonDirectLighting","normal","baseColor","shadeColor","shadingShift","directColor","forEachLight","posRange","dirCutoff","colorIntensity","extra","shadow","lightAtten","calculateLightAttenuation","lightDir","calculateLightDirection","lightColor","a","NoL","dot","shiftedShading","shading","clamp","div","lightDiffuse","mix","shadowValue","calculateShadow","calculateMToonGI","needCalculateEnvLight","rawGi","getEnvLightIrradiance","uniformGi","gi","calculateMToonRim","viewVec","lighting","rim","matcapTexture","worldViewX","z","worldViewY","cross","matcapUv","sampleMatcapTexture","NoV","parametricRim","pow","rimMultiplyTexture","sampleRimMultiplyTexture","getRimMultiplyTexCoord","calculateMToonEmission","emissiveTexture","sampleEmissiveTexture","getEmissiveTexCoord","vertexShader","oPos","resolveVertexPosition","oNorm","resolveVertexNormal","oOutlineNorm","resolveVertexTangent","xyz","worldNormal","getNormalMatrix","vec4","worldOutlineNormal","getWorldMatrix","width","outlineWidthTex","uvIndex","outlineWidthMultiplyTexCoordIndex","semantic","$getVertexAttrib","attrib","outlineWidthTextureMatrix","mat4","outlineUv","xy","g","clipNormalPos","getViewProjectionMatrix","clipPos","screenNormal","w","getRenderSize","zw","$outputs","setClipSpacePosition","fragmentShader","albedo","outlineLighting","outputFragmentColor","drawContext","shadingShiftTexture","sampleShadingShiftTexture","getShadingShiftTexCoord","r","calculateViewVector","directLighting","giLighting","emission","outColor"],"mappings":"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"}
|
|
@@ -16,17 +16,17 @@ const DEFAULT_OUTPUT_NAMES = [
|
|
|
16
16
|
'SpecularWeight',
|
|
17
17
|
'AO'
|
|
18
18
|
];
|
|
19
|
-
/**
|
|
20
|
-
* Physically-based rendering material driven by blueprint graphs, but shaded by the
|
|
21
|
-
* same PBR metallic/roughness backend used by {@link PBRMetallicRoughnessMaterial}.
|
|
22
|
-
*
|
|
23
|
-
* @remarks
|
|
24
|
-
* The blueprint graph only produces surface inputs. Final direct/indirect lighting,
|
|
25
|
-
* transmission, clearcoat, sheen, iridescence and anisotropic reflection still run
|
|
26
|
-
* through the standard PBRM backend so imported GLTF materials and blueprint materials
|
|
27
|
-
* stay on the same shading path.
|
|
28
|
-
*
|
|
29
|
-
* @public
|
|
19
|
+
/**
|
|
20
|
+
* Physically-based rendering material driven by blueprint graphs, but shaded by the
|
|
21
|
+
* same PBR metallic/roughness backend used by {@link PBRMetallicRoughnessMaterial}.
|
|
22
|
+
*
|
|
23
|
+
* @remarks
|
|
24
|
+
* The blueprint graph only produces surface inputs. Final direct/indirect lighting,
|
|
25
|
+
* transmission, clearcoat, sheen, iridescence and anisotropic reflection still run
|
|
26
|
+
* through the standard PBRM backend so imported GLTF materials and blueprint materials
|
|
27
|
+
* stay on the same shading path.
|
|
28
|
+
*
|
|
29
|
+
* @public
|
|
30
30
|
*/ class PBRBluePrintMaterial extends PBRMetallicRoughnessMaterial {
|
|
31
31
|
/** @internal */ static FEATURE_BLUEPRINT_VERTEX_COLOR = this.defineFeature();
|
|
32
32
|
/** @internal */ static FEATURE_BLUEPRINT_VERTEX_UV = this.defineFeature();
|