Skip to content
H1Gdev edited this page Oct 29, 2017 · 2 revisions

DDSテクスチャの描画

GraphicsDevice.setShader() Shader.link()

ForwardRenderer.renderForward() ForwardRenderer.drawInstance() GraphicsDevice.draw() GraphicsDevice.setTexture() GraphicsDevice.initializeTexture() gl.createTexture(); gl.activeTexture(gl.TEXTURE0 + textureUnit); gl.bindTexture(texture._glTarget, texture._glTextureId); GraphicsDevice.uploadTexture() gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); gl.compressedTexImage2D(gl.TEXTURE_2D, mipLevel, texture._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, mipObject); gl.uniform1i(sampler.locationId, textureUnit);

gl.TEXTURE_2D 3553

gl.TEXTURE_CUBE_MAP 34067

pc.PIXELFORMAT_DXT1

texture._glTarget = texture._cubemap ? gl.TEXTURE_CUBE_MAP texture._glFormat = gl.RGB; 6407 texture._glInternalFormat = ext.COMPRESSED_RGB_S3TC_DXT1_EXT; 33776

texture._levels[0] にデータ

https://msdn.microsoft.com/ja-jp/library/dn302429(v=vs.85).aspx → compressedTexImage2D()は対象外らしい

https://github.com/mrdoob/three.js/issues/4316 → 反転したDDSを作成しろと?

http://www.html5gamedevs.com/topic/27362-dds-texture/ → Vを1-Vにする?

https://github.com/pex-gl/pex-examples/tree/master/context.Texture.flip

Application.setSkybox() Scene.setSkybox() Scene.skybox = cubemaps[0]; Scene._skyboxCubeMap = Scene._resetSkyboxModel() Scene._skyboxModel = null; Scene.updateShaders = true; Scene._skyboxLoad() Scene.assets.load() Scene._onSkyboxChange() Scene.setSkybox()

ForwardRenderer.render() Scene.updateShadersFunc() Material.setParameter("texture_cubeMap", this._skyboxCubeMap); pc.createBox() pc.createMesh()

CubeMap width height _compressed _format の設定

setSource() の改造

※sources[index]に設定する構造を変更

src/resources/cubemap.js src/graphics/texture.js //src/graphics/device.js // uploadTexture()には影響がないようにsetSource()でどうにかする

あとは反転問題…

engine/src/graphics/program-lib/chunks/skybox.vert vViewDir.y *= -1.0;

置換するところは、$を使うらしい

で上下反転

PNG, JPEG DXT 上下反転 PVR 〃 ETC1 ??

Cubemap内でcompressとそうではないものの混合は無理(動作確認してみて。仕様上は知らないけどきっとできないんじゃないか)

とりあえずできた 39503a6327611386fad08a7e483bb27c3f58ec7d

https://github.com/playcanvas/engine/pull/928

そもそも全体的(特にeasy texture compression)にDDSでのskyboxを想定できていない作りになっていて、例の彼が反転させないといけないこと自体が想定外らしい。。。 これ以上の局所対応は無理なのでclose

Clone this wiki locally