* TODO 将光栅化管线绘制三角形改为使用Meta3D来构建的引擎和引擎Demo

** DONE add imgui-webgpu-renderer

only implement getContext

** DONE add webgpu whole screen scene view ui control

set viewRect to uiState

** DONE can render a triangle by webgpu in run element 

run element

run app

** DONE commit


** DONE add contribute, contribute protocol templates

** DONE commit

** DONE FAQ: explain diff with three.js引擎 or editor
** DONE FAQ: explain how to use exist tool, e.g. three.js, three.js editor?

@sxleaf



** DONE meta3d platform add token to support run webgpu?





** DONE write tutorial

should use template!

test in chrome instead of canary!


** DONE update doc, readme

update [自定义]


move to 案例->自定义的案例->xxx



merge to master



# ** TODO write announce


# ** TODO publish announce and tutorial to 知乎->Meta3D专栏 as blog






** TODO do again with others(in canary)


content:
build engine demo

build engine package
download and use to render a triangle



task:
publish all(except ui) to platform(production): imgui webgpu renderer, ui control, pipeline, render, whole, run engine

# change color to blue;
# change triangle to cube



# ** TODO update doc to add build and download and use engine package!


# * TODO feat: assemble-space: if select, shouln't select again(button ui should forbidden)
* DONE feat: assemble-space: if select, should disappear

extensions

contributes

packages

package assemble run test



* DONE notice 周六

* DONE feat: assemble-space: support cancel select(move to first TODO for new)
* DONE feat: should check login before select from market(move to first TODO for new)


# * TODO feat: assemble-space: add each selectAll button for extensions, contributes, pacakges

# * TODO update doc to select all

* DONE update doc: 选中一次:删除一次





* DONE add paging


30 count per page


# ExtensionMarket

# protocols

# backend
# skip
# limit


# run test

# bdd test





# add page ui

# run test

# ////bdd test



# add TODO record:
# implemenet >1000
#     orderBy version


# implements





# ContributeMarket



# refactor:
# extract Page ui component


# PackageMarket



# ShowPublishedApps


# restore page size





# pass all bdd test(pass TODO)

* DONE refactor record: handle > 1000

# fix Utils

# ExtensionsUtils, ...


* DONE duplicate


* DONE fix: find extension,contribute,package

* DONE refactor: refactor Market: extract Second, Third


* DONE fix: enter second->jump to 2->enter third: current should be 1! 


* DONE fix: package with all except ui controls not work in element->run

# with action, not has!


** DONE record


* DONE close version dependent check




* DONE pass ci



* DONE publish v0.12.1


* DONE update production


* DONE run test engine in production

# build package and use

build and run demo







# * TODO update doc



* DONE send to @...



* TODO 将计算管线绘制三角形改为使用Meta3D来构建的引擎和引擎Demo


** TODO can render a triangle by webgpu+cs in run element 


** TODO write and publish tutorial

should use template!


** TODO update doc, readme


** TODO do again with others(in canary)

task1:
publish xxx to platform
# change triangle to cube
# change color to blue


task2: learn how to update extension/contribute
change color to blue




# * TODO 云开发环境

# goal:
# - dev fully on web
# - edit code realtime

# problem:
# how to add vim online?
# how to support ts/rescript compiler?
# how to import files?
#     get ts by sourcemap from webpacked file string?
#         then webpack?


# # - import/export local package

# - edit online

# - commit
# add commit button

# commit locally

# - publish
# can only publish that is the author!

# publish extension/contribute/package with new version


# split extension/contribute functions to:
# getExtensionService
# createExtensionState
# getExtensionLife

# ...








* DONE remove DependentMapType

- update book

- update Meta3D



            let engineWholeService = api.getExtensionService<engineWholeService>(meta3dState, "meta3d-engine-whole-sceneview-protocol")

            remove dependentExtensionProtocolNameMap, dependentContributeProtocolNameMap, DependentMapType



* DONE update info

** DONE 组建团队


* DONE update extensions


* DONE update contributes



* DONE update frontend

update

run and login with metamask


commit


* DONE update online env and doc

publish



////fix doc:
meta3d-pipeline-webgl1-scene-view2（实现的协议名：meta3d-pipeline-webgl1-scene-view2-protocol） 该贡献属于Pipeline类型，负责与Scene View相关的restore的逻辑


update doc:
demo link

update Github README:
demo link


notice wy




* DONE pass meta3d-component-commonlib/ bdd test




* DONE run test render



* DONE update online demo link



* TODO pr


* TODO encapuslate three.js engine


** DONE scene: gameObject, component use three.js to implement

e.g.

createGameObject:
create mesh for three.js





- change component, gameObject to abstract type:
 dis: different engine can't work together(because different scene)


- remain use current component, gameObject, convert to three->scene, camera, orbit class when update in extension

store converted result in extension state

share memory:
by use getter/setter, like:

class Object3D{
    constructor(gameObject){
        this.gameObject = gameObject
    }

    public gameObject:number;

    get parent(){
        get transform of gameObject
        get transform's parent 
    }
    set parent(parent){
        get transform of gameObject
        set transform's parent 
    }
}

class Scene extends Object3D{

}



class Mesh extends Object3D{
    constructor(gameObject){
        # this._gameObject = gameObject
        super(gameObject)
    }

    # private _gameObject:number;


}




only getter, no setter?




*** DONE pass camera convert run test
add:
meta3d-editor-engine-webgl1-three-render-sceneview(need update, register x)
meta3d-editor-engine-webgl1-three-whole
meta3d-editor-run-webgl1-three-engine
    create scene




package:
engine-basic
engine-scene(need update)


contribute:

meta3d-ui-control-webgpu-fullscreen-scene-view
meta3d-pipeline-viewrect-sceneview


extension:

imgui-webgl1-renderer


*** DONE pass camera convert

# TODO update meta3d-engine-scene-sceneview implemenet, protocol

# TODO update engine-scene package



# TODO update properties



# TODO fix:
# WebGL: INVALID_OPERATION: uniformMatrix4fv: location is not from current program


# TODO show cube
# TODO fix warn: Multiple instances of Three.js being imported.
    # TODO not uniform4fv, drawElements
        # clearColor->alpha should be 1
        # modelViewMatrix error
        ////uniform4fv
        # not create buffer
        # draw with program
        # camera data error?


*** DONE pass scene convert

MeshBasicMaterial to PBRMateiral


** DONE add renderer

基础渲染

TODO render a cube




# ** TODO fix: run: canvas's size not equal canvas.style.size




** TODO can reuse arcball camera for three and webgl1 render


not use Three.OrbitCameraControl!


