pass TFogOptions by value, not pointer, and rearrange struct fields to minimize alignment issues
This commit is contained in:
@@ -26,13 +26,15 @@ struct TFogOptions {
|
|||||||
float maximumOpacity = 1.0f;
|
float maximumOpacity = 1.0f;
|
||||||
float height = 0.0f;
|
float height = 0.0f;
|
||||||
float heightFalloff = 1.0f;
|
float heightFalloff = 1.0f;
|
||||||
double3 linearColor = { 1.0f, 1.0f, 1.0f };
|
|
||||||
float density = 0.1f;
|
float density = 0.1f;
|
||||||
float inScatteringStart = 0.0f;
|
float inScatteringStart = 0.0f;
|
||||||
float inScatteringSize = -1.0f;
|
float inScatteringSize = -1.0f;
|
||||||
bool fogColorFromIbl = false;
|
|
||||||
TTexture* skyColor = nullptr;
|
TTexture* skyColor = nullptr;
|
||||||
bool enabled = false;
|
float linearColorR = 1.0;
|
||||||
|
float linearColorG = 1.0;
|
||||||
|
float linearColorB = 1.0;
|
||||||
|
bool fogColorFromIbl = 0;
|
||||||
|
bool enabled = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum TToneMapping
|
enum TToneMapping
|
||||||
@@ -86,7 +88,7 @@ EMSCRIPTEN_KEEPALIVE void View_setDitheringEnabled(TView *tView, bool enabled);
|
|||||||
EMSCRIPTEN_KEEPALIVE bool View_isDitheringEnabled(TView *tView);
|
EMSCRIPTEN_KEEPALIVE bool View_isDitheringEnabled(TView *tView);
|
||||||
EMSCRIPTEN_KEEPALIVE void View_setScene(TView *tView, TScene *tScene);
|
EMSCRIPTEN_KEEPALIVE void View_setScene(TView *tView, TScene *tScene);
|
||||||
EMSCRIPTEN_KEEPALIVE void View_setFrontFaceWindingInverted(TView *tView, bool inverted);
|
EMSCRIPTEN_KEEPALIVE void View_setFrontFaceWindingInverted(TView *tView, bool inverted);
|
||||||
EMSCRIPTEN_KEEPALIVE void View_setFogOptions(TView *tView, TFogOptions *tFogOptions);
|
EMSCRIPTEN_KEEPALIVE void View_setFogOptions(TView *tView, TFogOptions tFogOptions);
|
||||||
|
|
||||||
typedef void (*PickCallback)(uint32_t requestId, EntityId entityId, float depth, float fragX, float fragY, float fragZ);
|
typedef void (*PickCallback)(uint32_t requestId, EntityId entityId, float depth, float fragX, float fragY, float fragZ);
|
||||||
EMSCRIPTEN_KEEPALIVE void View_pick(TView* tView, uint32_t requestId, uint32_t x, uint32_t y, PickCallback callback);
|
EMSCRIPTEN_KEEPALIVE void View_pick(TView* tView, uint32_t requestId, uint32_t x, uint32_t y, PickCallback callback);
|
||||||
|
|||||||
@@ -256,27 +256,26 @@ namespace thermion
|
|||||||
auto *view = reinterpret_cast<View *>(tView);
|
auto *view = reinterpret_cast<View *>(tView);
|
||||||
view->setFrontFaceWindingInverted(inverted);
|
view->setFrontFaceWindingInverted(inverted);
|
||||||
}
|
}
|
||||||
|
EMSCRIPTEN_KEEPALIVE void View_setFogOptions(TView *tView, TFogOptions tFogOptions)
|
||||||
EMSCRIPTEN_KEEPALIVE void View_setFogOptions(TView *tView, TFogOptions *tFogOptions)
|
|
||||||
{
|
{
|
||||||
auto view = reinterpret_cast<View *>(tView);
|
auto view = reinterpret_cast<View *>(tView);
|
||||||
|
|
||||||
FogOptions fogOptions {
|
FogOptions fogOptions {
|
||||||
.distance = tFogOptions->distance,
|
.distance = tFogOptions.distance,
|
||||||
.cutOffDistance = tFogOptions->cutOffDistance,
|
.cutOffDistance = tFogOptions.cutOffDistance,
|
||||||
.maximumOpacity = tFogOptions->maximumOpacity,
|
.maximumOpacity = tFogOptions.maximumOpacity,
|
||||||
.height = tFogOptions->height,
|
.height = tFogOptions.height,
|
||||||
.heightFalloff = tFogOptions->heightFalloff,
|
.heightFalloff = tFogOptions.heightFalloff,
|
||||||
.color = LinearColor(tFogOptions->linearColor.x, tFogOptions->linearColor.y, tFogOptions->linearColor.z),
|
.color = LinearColor(tFogOptions.linearColorR, tFogOptions.linearColorG, tFogOptions.linearColorB),
|
||||||
.density = tFogOptions->density,
|
.density = tFogOptions.density,
|
||||||
.inScatteringStart = tFogOptions->inScatteringStart,
|
.inScatteringStart = tFogOptions.inScatteringStart,
|
||||||
.inScatteringSize = tFogOptions->inScatteringSize,
|
.inScatteringSize = tFogOptions.inScatteringSize,
|
||||||
.fogColorFromIbl = tFogOptions->fogColorFromIbl,
|
.fogColorFromIbl = tFogOptions.fogColorFromIbl == 1,
|
||||||
.skyColor = reinterpret_cast<Texture *>(tFogOptions->skyColor),
|
.skyColor = reinterpret_cast<Texture *>(tFogOptions.skyColor),
|
||||||
.enabled = tFogOptions->enabled
|
.enabled = tFogOptions.enabled == 1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TRACE("Setting fog enabled to %d (tFogOptions.cutOffDistance %f)", fogOptions.enabled, tFogOptions.cutOffDistance);
|
||||||
TRACE("Setting fog enabled to %d (tFogOptions->cutOffDistance %f)", fogOptions.enabled, tFogOptions->cutOffDistance);
|
|
||||||
view->setFogOptions(fogOptions);
|
view->setFogOptions(fogOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user