Skip to content

Commit

Permalink
feat(skybox): fix draw cube texture->gl format
Browse files Browse the repository at this point in the history
  • Loading branch information
yyc-git committed May 14, 2019
1 parent c7ec5b9 commit 2e14fd1
Show file tree
Hide file tree
Showing 9 changed files with 91 additions and 100 deletions.
27 changes: 3 additions & 24 deletions src/asset/converter/ConvertTexturesSystem.re
Original file line number Diff line number Diff line change
Expand Up @@ -30,22 +30,6 @@ let _buildDefaultName = textureIndex =>
| None => false
}; */

let _getFormat = mimeType =>
switch (mimeType) {
| "image/png" => SourceTextureType.Rgba
| "image/jpeg" => SourceTextureType.Rgb
| mimeType =>
WonderLog.Log.fatal(
WonderLog.Log.buildFatalMessage(
~title="_getFormat",
~description={j|unknown mimeType|j},
~reason="",
~solution={j||j},
~params={j|mimeType: $mimeType|j},
),
)
};

let convertToBasicSourceTextures =
(({textures, images}: GLTFType.gltf) as gltf)
: array(WDType.basicSourceTexture) =>
Expand Down Expand Up @@ -83,14 +67,9 @@ let convertToBasicSourceTextures =
source,
);

/* _isBase64Image(uri) ?
_getFormat(
uri
|> OptionService.unsafeGet
|> BufferUtils.getBase64MimeType,
) : */

_getFormat(mimeType |> OptionService.unsafeGet);
TextureFormatService.getFormatByMimeType(
mimeType |> OptionService.unsafeGet,
);
},
/* TODO test */
flipY:
Expand Down
19 changes: 3 additions & 16 deletions src/asset/generate/material/BuildLightMaterialDiffuseMapSystem.re
Original file line number Diff line number Diff line change
Expand Up @@ -122,22 +122,9 @@ let _convertBase64MimeTypeToWDBMimeType = mimeType =>
};

let _getImageMimeType = source =>
switch (FileNameService.getFileExtName(Obj.magic(source)##name)) {
| None
| Some(".png") => "image/png"
| Some(".jpg")
| Some(".jpeg") => "image/jpeg"
| mimeType =>
WonderLog.Log.fatal(
WonderLog.Log.buildFatalMessage(
~title="_getImageMimeType",
~description={j|unknown image mimeType: $mimeType|j},
~reason="",
~solution={j||j},
~params={j||j},
),
)
};
ImageService.getMimeTypeByExtname(
FileNameService.getFileExtName(Obj.magic(source)##name),
);

let _getImageBase64 = (texture, source) =>
_convertImageToBase64(
Expand Down
Empty file modified src/glsl/skybox/webgl1_skybox_fragment.glsl
100644 → 100755
Empty file.
Empty file modified src/glsl/skybox/webgl1_skybox_vertex.glsl
100644 → 100755
Empty file.
106 changes: 49 additions & 57 deletions src/job/no_worker/loop/RenderSkyboxJob.re
Original file line number Diff line number Diff line change
Expand Up @@ -38,69 +38,61 @@ let _unsafeGetNZImage = state =>
let _unsafeGetSkyboxGameObject = state =>
state.jobDataRecord.skyboxData.skyboxGameObject |> OptionService.unsafeGet;

/* let */
let _getTextureFormat = (gl, imageExtname) =>
imageExtname
|> ImageService.getMimeTypeByExtname
|> TextureFormatService.getFormatByMimeType
|> TextureFormatService.getGlFormat(gl);

let _drawTexture = (gl, target, source) => {
let glFormat =
_getTextureFormat(
gl,
FileNameService.getFileExtName(Obj.magic(source)##src),
);

let _updateCubeTexture = (gl, target, state) => {
gl
|> WonderWebgl.Gl.texImage2D(
gl |> WonderWebgl.Gl.getTextureCubeMapPositiveX,
0,
gl |> WonderWebgl.Gl.getRgb,
gl |> WonderWebgl.Gl.getRgb,
gl |> WonderWebgl.Gl.getUnsignedByte,
_unsafeGetPXImage(state)
|> WonderWebgl.GlType.imageElementToTextureSource,
);
gl
|> WonderWebgl.Gl.texImage2D(
gl |> WonderWebgl.Gl.getTextureCubeMapNegativeX,
0,
gl |> WonderWebgl.Gl.getRgb,
gl |> WonderWebgl.Gl.getRgb,
gl |> WonderWebgl.Gl.getUnsignedByte,
_unsafeGetNXImage(state)
|> WonderWebgl.GlType.imageElementToTextureSource,
);
gl
|> WonderWebgl.Gl.texImage2D(
gl |> WonderWebgl.Gl.getTextureCubeMapPositiveY,
0,
gl |> WonderWebgl.Gl.getRgb,
gl |> WonderWebgl.Gl.getRgb,
gl |> WonderWebgl.Gl.getUnsignedByte,
_unsafeGetPYImage(state)
|> WonderWebgl.GlType.imageElementToTextureSource,
);
gl
|> WonderWebgl.Gl.texImage2D(
gl |> WonderWebgl.Gl.getTextureCubeMapNegativeY,
0,
gl |> WonderWebgl.Gl.getRgb,
gl |> WonderWebgl.Gl.getRgb,
gl |> WonderWebgl.Gl.getUnsignedByte,
_unsafeGetNYImage(state)
|> WonderWebgl.GlType.imageElementToTextureSource,
);
gl
|> WonderWebgl.Gl.texImage2D(
gl |> WonderWebgl.Gl.getTextureCubeMapPositiveZ,
0,
gl |> WonderWebgl.Gl.getRgb,
gl |> WonderWebgl.Gl.getRgb,
gl |> WonderWebgl.Gl.getUnsignedByte,
_unsafeGetPZImage(state)
|> WonderWebgl.GlType.imageElementToTextureSource,
);
gl
|> WonderWebgl.Gl.texImage2D(
gl |> WonderWebgl.Gl.getTextureCubeMapNegativeZ,
target,
0,
gl |> WonderWebgl.Gl.getRgb,
gl |> WonderWebgl.Gl.getRgb,
glFormat,
glFormat,
gl |> WonderWebgl.Gl.getUnsignedByte,
_unsafeGetNZImage(state)
|> WonderWebgl.GlType.imageElementToTextureSource,
source,
);
};

let _updateCubeTexture = (gl, target, state) => {
_drawTexture(
gl,
gl |> WonderWebgl.Gl.getTextureCubeMapPositiveX,
_unsafeGetPXImage(state) |> WonderWebgl.GlType.imageElementToTextureSource,
);
_drawTexture(
gl,
gl |> WonderWebgl.Gl.getTextureCubeMapNegativeX,
_unsafeGetNXImage(state) |> WonderWebgl.GlType.imageElementToTextureSource,
);
_drawTexture(
gl,
gl |> WonderWebgl.Gl.getTextureCubeMapPositiveY,
_unsafeGetPYImage(state) |> WonderWebgl.GlType.imageElementToTextureSource,
);
_drawTexture(
gl,
gl |> WonderWebgl.Gl.getTextureCubeMapNegativeY,
_unsafeGetNYImage(state) |> WonderWebgl.GlType.imageElementToTextureSource,
);
_drawTexture(
gl,
gl |> WonderWebgl.Gl.getTextureCubeMapPositiveZ,
_unsafeGetPZImage(state) |> WonderWebgl.GlType.imageElementToTextureSource,
);
_drawTexture(
gl,
gl |> WonderWebgl.Gl.getTextureCubeMapNegativeZ,
_unsafeGetNZImage(state) |> WonderWebgl.GlType.imageElementToTextureSource,
);

gl
|> WonderWebgl.Gl.texParameteri(
Expand Down
6 changes: 3 additions & 3 deletions src/service/atom/FileNameService.re
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
let getFileExtName = fileName =>
switch ([%re {|/^.*(\.\w+)$/|}] |> Js.Re.exec(fileName)) {
let getFileExtName = str =>
switch ([%re {|/^.*(\.\w+)$/|}] |> Js.Re.exec(str)) {
| None => None
| Some(result) =>
let resultArr = Js.Re.matches(result);

resultArr[1] |. Some;
resultArr[1]->Some;
};
17 changes: 17 additions & 0 deletions src/service/atom/ImageService.re
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
let getMimeTypeByExtname = extname =>
switch (extname) {
| None
| Some(".png") => "image/png"
| Some(".jpg")
| Some(".jpeg") => "image/jpeg"
| mimeType =>
WonderLog.Log.fatal(
WonderLog.Log.buildFatalMessage(
~title="getMimeTypeByExtname",
~description={j|unknown image mimeType: $mimeType|j},
~reason="",
~solution={j||j},
~params={j||j},
),
)
};
16 changes: 16 additions & 0 deletions src/service/primitive/texture/TextureFormatService.re
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
open SourceTextureType;

let getFormatByMimeType = mimeType =>
switch (mimeType) {
| "image/png" => SourceTextureType.Rgba
| "image/jpeg" => SourceTextureType.Rgb
| mimeType =>
WonderLog.Log.fatal(
WonderLog.Log.buildFatalMessage(
~title="getFormatByMimeType",
~description={j|unknown mimeType|j},
~reason="",
~solution={j||j},
~params={j|mimeType: $mimeType|j},
),
)
};

let getGlFormat = (gl, format) =>
switch (format) {
| Rgb => gl |> WonderWebgl.Gl.getRgb
Expand Down
Empty file.

0 comments on commit 2e14fd1

Please sign in to comment.