armory3d / armory

3D Engine with Blender Integration
https://armory3d.org/engine
zlib License
3.07k stars 316 forks source link

[Krom | Windows] Shader compiler error while exporting skinned meshes #2164

Open knowledgenude opened 3 years ago

knowledgenude commented 3 years ago

While trying to export an .exe for the open jam, i faced this error.

The error doesn't happens while exporting for Linux (Krom).

Info: Publishing project, check console for details.

Compiling shader 1 of 28 (Ch32_body_armskin_mesh.frag.glsl) failed: Shader compiler error. (node:5687) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Shader compiler error. (node:5687) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. Compiling shader 3 of 28 (Ch32_body_armskin_shadowmap.vert.glsl) failed: Shader compiler error. Compiling shader 2 of 28 (Ch32_body_armskin_mesh.vert.glsl) failed: Shader compiler error. Compiling shader 4 of 28 (Checker_mesh.frag.glsl) failed: Shader compiler error. Finished in 44.450s

N8n5h commented 3 years ago

Are you trying to export from Windows or Linux?

If it's the latter, I think this issue may be because https://github.com/Kode/krafix might not support cross-compiling from linux for directx, though I'm not sure

Update

RobDangerous confirmed it that isn't possible to cross-compile from linux to directx bytecode because of libraries not available.

As a side note, maybe a check could be added to the exporter to detect this and halt the process with a pretty message instead of that error :sweat_smile:

knowledgenude commented 3 years ago

@N8n5h , thanks for the answer! Do you think that would be possible to export to DirectX trough WineHQ? In my test another error appeared:

Screenshot from 2021-04-23 11-36-28

Also i've tried to export to OpenGL from Linux and after the project is successfully exported, an exception is throw and the folder with .exe is not generated at all:

Finished in 52.289s
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/home/henrique/Documents/Armory/blender-2.83.13-linux64/2.83/python/lib/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/home/henrique/Documents/Armory/blender-2.83.13-linux64/2.83/python/lib/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/home/henrique/Documents/Armory/ArmorySDK//armory/blender/arm/make.py", line 35, in fn
    done()
  File "/home/henrique/Documents/Armory/ArmorySDK//armory/blender/arm/make.py", line 444, in build_done
    build_success()
  File "/home/henrique/Documents/Armory/ArmorySDK//armory/blender/arm/make.py", line 583, in build_success
    shutil.copy(krom_location, files_path + '/Krom.exe')
  File "/home/henrique/Documents/Armory/blender-2.83.13-linux64/2.83/python/lib/python3.7/shutil.py", line 248, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/home/henrique/Documents/Armory/blender-2.83.13-linux64/2.83/python/lib/python3.7/shutil.py", line 120, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/home/henrique/Documents/Armory/ArmorySDK/Krom/Krom_opengl.exe'
N8n5h commented 3 years ago

Do you think that would be possible to export to DirectX trough WineHQ?

By briefly investigating this popped up: https://github.com/samhocevar/d3d4linux, so it seems doable that way if done in a similar fashion.

Also i've tried to export to OpenGL from Linux and after the project is successfully exported, an exception is throw and the folder with .exe is not generated at all

The issue occurs because there is no opengl krom binary by default included in the sdk, just for directX https://github.com/armory3d/kromx_bin. Maybe compiling https://github.com/armory3d/armorcore with -g opengl on Windows could work, but haven't tested it...

tong commented 1 year ago

I've configured a workflow to build a opengl windows executeable in armorcore which stores the binary for download: https://github.com/tong/armorcore/actions/runs/3743141811

Any windows users who can confirm it works?

Note: Since only users with write permissions to the repository can access artifacts you have to add the workflow config to your fork of armory3d/armorcore and build the binary in your own repo/workflow (by checking out my branch).

tong commented 1 year ago

I got a report that the exe is working.

MoritzBrueckner commented 1 year ago

Any windows users who can confirm it works?

Works for me as well (I could download the artifact btw, without write permissions I guess).