filament icon indicating copy to clipboard operation
filament copied to clipboard

Get the full version API

Open ccworld1000 opened this issue 3 years ago • 19 comments

Is your feature request related to a problem? Please describe. Get the full version API, like 1.28.2

Describe the solution you'd like The version information is generally the basic API

Describe alternatives you've considered Version comparison, version analysis, problem reporting, debugging, etc

OS and backend It has nothing to do with OS and backend.

ccworld1000 avatar Nov 08 '22 03:11 ccworld1000

I don't quite understand what you want? Where do you need the full version number?

romainguy avatar Nov 08 '22 03:11 romainguy

The version is updated too frequently, which may cause the external call binary library to be updated frequently.

Scenario 1: Manual replacement of binary may lead to misoperation

Scenario 2: There may be potential bugs in the new binary, leading to rollback of the old version before it can be used

Scenario 3: When the code of the new version changes too much, some things still exist in the last version, and the new version may disappear

........

With version output information, the above problems may be easily found during debugging.

ccworld1000 avatar Nov 08 '22 03:11 ccworld1000

I still don't quite understand what problem you would like to see fixed and how. You do not have to update to the latest version of Filament.

romainguy avatar Nov 08 '22 04:11 romainguy

It is mainly about obtaining version information.

ccworld1000 avatar Nov 08 '22 04:11 ccworld1000

@ccworld1000 do you just want something like Engine::getVersion() that would return something like 1.28.2 (e.g. a string or struct)?

pixelflinger avatar Nov 08 '22 23:11 pixelflinger

string or string_view or char *

You can decide for yourself.

The version number of the automatically updated version is added to the script corresponding to the release of a new version.

@pixelflinger

ccworld1000 avatar Nov 09 '22 12:11 ccworld1000

It feels that it can be output together with "FEATURE_LEVEL", so that you can easily identify the version number. It is also easy to identify other people's questions. For example, if there is a problem in the last version and the new version has just been repaired, you can easily locate it by looking at the version number.

Of course, it's no problem to only provide interfaces without output.

You can also decide for yourself.

@pixelflinger

ccworld1000 avatar Nov 09 '22 13:11 ccworld1000

We could also display the version number in the --help output of our command line tools.

romainguy avatar Nov 18 '22 18:11 romainguy

Good idea @romainguy

ccworld1000 avatar Nov 21 '22 02:11 ccworld1000

It can also be extended to other ends For example, the web side can compare versions and support coexistence of multiple versions.

@pixelflinger @romainguy

ccworld1000 avatar Nov 21 '22 02:11 ccworld1000

Perhaps at the same time, you can discuss "MATERIAL_VERSION" internally. Replace "MATERIAL_VERSION" with a new version.

@romainguy @pixelflinger

ccworld1000 avatar Nov 21 '22 02:11 ccworld1000

What do you mean replace material versions with a new version?

romainguy avatar Nov 21 '22 03:11 romainguy

Replace with new version number

ccworld1000 avatar Nov 23 '22 01:11 ccworld1000

No, we are not going to do this. The material version is independent of Filament's version number as the material version doesn't always change.

romainguy avatar Nov 23 '22 01:11 romainguy

66.N.1 66.N.2 66.N.3 66.N.4 66.N.5 66.N.6 66.N.7 66.N.8 66.N.9

The actual version has changed. It is possible that N has not changed. If there are fluctuations in versions 1-9, they have actually changed.

ccworld1000 avatar Nov 23 '22 02:11 ccworld1000

The material version only changes when we make changes to the data structures used between shaders and filament (UBO). The current material version is 30 (it's a single integer, not a semver version number) and there have been 125+ versioned releases of Filament itself.

romainguy avatar Nov 23 '22 02:11 romainguy

It seems that compatibility is not considered, forward or backward compatibility.

In fact, material versions can cross versions, unless there is no change in the corresponding part of the fluctuating version. Considering that the code has changed a lot and there are also human factors, whether to change it depends on your decision.

ccworld1000 avatar Nov 23 '22 02:11 ccworld1000

Filament will reject incompatible materials as a runtime error. Providing compatibility for older materials is something we could do but it would require (potentially) a lot of extra code for very little benefits. Note that all that's required is to recompile the materials. The source code of the materials is itself guaranteed to remain compatible.

romainguy avatar Nov 23 '22 02:11 romainguy

We need a way to track the engine version. Yes would could inject meta data in our CI/CD, but we need the origin of authority to be Filament as found in GIT. This is unrelated to materials version.

@pixelflinger something like Engine::getVersion() that would return something like 1.28.2 (e.g. a string or struct)? Yes exactly this simple.

jwinarske avatar Aug 15 '25 16:08 jwinarske