Giter VIP home page Giter VIP logo

effekseerforunity's Introduction

Effekseer

Effekseer

This software is a particle effect editing tool. By incorporating runtimes and plug-ins, effects created in Effekseer can be played back in your application. Effekseer is intended to be used primarily for games, allowing the designer, not the programmer, to be in charge of editing particle effects.

本ソフトウェアはパーティクルエフェクト編集ツールです。 ランタイムやプラグインを組み込むことで、Effekseerで作成されたエフェクトをアプリケーション中で再生できるようになります。 Effekseerは主にゲーム向けに使用することを想定しており、パーティクルエフェクトの編集をプログラマではなくデザイナーが担当できるようにします。

本軟件為粒子效果的編輯工具。 透過組合 runtime 和插件,由Effekseer制作而成的效果便可以在應用程式內播放。 Effekseer主要用作遊戲開發,不僅是程序員而且設計師也可進行粒子效果的編輯。

master branch is the development branch. Please don't use master branch for production.

Supported platforms

  • DirectX9, DirectX11, DirectX12, Metal, Vulkan, OpenGL
  • WebGL
  • Unity
  • GodotEngine
  • UnrealEngine
  • DX Library
  • Cocos2d-x
  • Console games (Please mail to effekseer(at)gmail.com)

Sponsors

Development

Repositories

Roadmap

English

日本語

Branch

Documents

HowToBuild

How to add a new language

Profiling

Design

CodeOverview

CodingRule

コーディングルール

For contributors

Please read issues. We always welcome pull requests for improvements, bug fixes, and so on.

issuesを読んでください。常時、機能追加、バグ修正といったプルリクエストを募集しております。

Issues

effekseerforunity's People

Contributors

chromee avatar durswd avatar fum1h1ro avatar hiroj avatar kou-yeung avatar mikkame avatar notargs avatar oocytanb avatar t-kuhn avatar ueshita avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

effekseerforunity's Issues

Calling CoInitializeEx from DllMain may cause unexpected behavior

概要

EffekseerPlugin.cppDllMain 関数の中で、CoInitializeEx(NULL, COINIT_MULTITHREADED)CoUninitialize() が呼び出されていますが、これが予期しない動作を引き起こす可能性があります。

説明するのがとても難しいので、Microsoft のドキュメントのリンクをいくつかあげますので、ご覧ください。

具体的に発生した問題

  • 再現率が 100% ではないため、必ずしも CoInitializeEx が原因とは言い切れませんが、しばしば発生している問題を書きます。

  • UnityEditor において、EffekseerForUnity プラグインアセットを追加したプロジェクトで、ファイルダイアログを開く操作 (シーンを開くなど) を実行すると、ダイアログが表示されず、Editor の操作ができなくなることがあります。

再現手順

  1. UnityEditor を起動し、エフェクトの設定をしたシーンを開きます。

  2. Hierarchy から Effekseer Emitter コンポーネントが設定されているオブジェクトを選択し、Scene View に Effekseer の GUI を表示します。

  3. 数分待ちます。

  4. UnityEditor に戻り、ファイルダイアログ(Open Scene, Save as Scene, Create New Animation など)を開く操作をすると、ダイアログが表示されず、Editor の操作ができなくなることがあります。

必ず再現するわけではありませんが、しばらく作業したのち、ファイルダイアログを開こうとしたときに、しばしば発生します。

再現環境

  • OS: Windows 10 1903 64bit (クリーンインストールした環境で再現)

  • Unity: 2018.4.5f1, 2019.2.9f1, Unity 2017.4.32f1

  • Effekseer, EffekseerForUnity: 2019-10-15 時点の master ブランチをビルド。

  • Visual Studio 2019

根拠

  • EffekseerPlugin.cpp と同様に、DllMain 関数の中で、CoInitializeEx(NULL, COINIT_MULTITHREADED)CoUninitialize() を実行する、ダミーの Unity プラグインを作成したところ、ファイルダイアログが表示されず、Editor の操作ができなくなる現象が再現しました。

  • CoInitializeExCoUninitialize をコメントアウトすると、再現しなくなるようです。

  • ドキュメントのリンクにあげた中で、マルチスレッドアパートメントから GetOpenFileName/GetSaveFileName を呼び出したときの問題が述べられており、これが該当するかもしれません。

ダミーの Unity プラグインのコード

#include "uni-dummy-coinit.h"

UNI_DUMMY_COINIT_API int UNI_PLUGIN_API DummyFunc(int a, int b) {
    ::OutputDebugString(L"DummyFunc called\n");
    return a + b;
}

BOOL APIENTRY DllMain(
    HMODULE hModule,
    DWORD  ul_reason_for_call,
    LPVOID lpReserved
) {
    HRESULT hr;
    wchar_t buffer[256];

    switch (ul_reason_for_call) {
    case DLL_PROCESS_ATTACH:
        hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
        ::_snwprintf_s(buffer, sizeof(buffer) / sizeof(wchar_t), _TRUNCATE, L"DLL_PROCESS_ATTACH, hr = 0x%08X\n", hr);
        ::OutputDebugString(buffer);
        break;
    case DLL_THREAD_ATTACH:
        hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
        ::_snwprintf_s(buffer, sizeof(buffer) / sizeof(wchar_t), _TRUNCATE, L"DLL_THREAD_ATTACH, hr = 0x%08X\n", hr);
        ::OutputDebugString(buffer);
        break;
    case DLL_THREAD_DETACH:
        ::CoUninitialize();
        ::OutputDebugString(L"DLL_THREAD_DETACH\n");
        break;
    case DLL_PROCESS_DETACH:
        ::CoUninitialize();
        ::OutputDebugString(L"DLL_PROCESS_DETACH\n");
        break;
    }
    return TRUE;
}

Single Pass Instancedを有効にすると右目にエフェクトの描画が行われない (Effects on the right eye screen was not rendered when rendering in Single Pass Instanced)

概要

XR設定を有効にして Stereo Rendering Mode を Single Pass Instanced にすると、右目の画面にエフェクトがレンダリングされません。
image

再現方法

  1. 新規Unityプロジェクトに SteamVR と EffekseerForUnity をインポートする
  2. [Edit] > [ProjectSettngs] より ProjectSettings ダイアログを開き、左ペインから[XR Plug-in Management]>[OpenVR]を選択し、[Stereo Rendering Mode] のドロップダウンメニューから [Single Pass Instanced] を選択する
  3. EfkBasic シーンを再生する

再現環境

  • OS: Windows 10 Pro 20H2 64bit
  • Unity: 2020.3.1f1(with XR Plugin), 2019.4.23f1(with built-in XR)
  • XR Platform: SteamVR(OpenVR)
  • EffekseerFroUnity: 1.60beta2

Bug

こんにちは、マスター配下のダイナミックライブラリlibEffekseerUnityをデモプロジェクトに差し替えたところ、特殊効果が表示できないことが分かりました。ただし、自分でコンパイルしたライブラリを使用するのが通常です。何故ですか?ご回答ありがとうございます。環境:windows10、untiy2019.4.39, ms visual studio 2022, ndk:android-ndk-r19c。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.