Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Creating Shader with Fog built-in causes crash for GPUParticles2D #102277

Closed
thadguidry opened this issue Feb 1, 2025 · 7 comments · Fixed by #102280
Closed

Creating Shader with Fog built-in causes crash for GPUParticles2D #102277

thadguidry opened this issue Feb 1, 2025 · 7 comments · Fixed by #102280

Comments

@thadguidry
Copy link
Contributor

thadguidry commented Feb 1, 2025

Tested versions

v4.4.beta.custom_build [ee4acfb]

System information

Godot v4.4.beta (ee4acfb) - Windows 11 (build 26100) - Multi-window, 2 monitors - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 2070 (NVIDIA; 32.0.15.6636) - Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz (8 threads)

Issue description

PS E:\GitHubRepos\godot\bin> .\godot.windows.editor.x86_64.console.exe --verbose
WorkerThreadPool: 8 threads, 2 max low-priority.
Godot Engine v4.4.beta.custom_build.ee4acfbfb (2025-01-29 23:45:20 UTC) - https://godotengine.org
TextServer: Added interface "Dummy"
TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)"
Native OpenGL API detected: 3.3: NVIDIA - NVIDIA GeForce RTX 2070
NVAPI: Init OK!
NVAPI: Disabled OpenGL threaded optimization successfully
NVAPI: Disabled G-SYNC for windowed mode successfully
Using "winink" pen tablet driver...
Shader 'CanvasSdfShaderGLES3' SHA256: 44bbf236450eedfcd6809364dd22de35fb1fba2b0ad37692100b7020b77689dd
Shader 'SkeletonShaderGLES3' SHA256: c3f2410877bc3308012bc9723be83d6ac575a3f790da7853409335b9f86949b6
Shader 'ParticlesShaderGLES3' SHA256: 72f167a4f7df8bb9923d128ee2293d1a1b74fa945d22f40468c24a678fe8496e
Shader 'ParticlesCopyShaderGLES3' SHA256: 5e89375869798df36c01f6e883c2f214e7d3689da2b856eb51d197a86ca079f2
Shader 'CopyShaderGLES3' SHA256: 90cf99304a0076c5b7cbd1727d7391a83a17d66537292fdaae7338e087f6f9f7
Shader 'CubemapFilterShaderGLES3' SHA256: c7265623974322cfd68cabe026b83a1356186ff5e617589d8ec2e53db8b9d0e1
Shader 'GlowShaderGLES3' SHA256: b215773e213bb9144f661add583d4309e1f6b633ba772aca9bb3256df8c0c886
Shader 'PostShaderGLES3' SHA256: 29668410223b7740d8376f04327e915addf4bcf6fc544e79d1eb58d7eb7ebc71
Shader 'FeedShaderGLES3' SHA256: 465e50e7c78a400bed6161d6b092565865268f1f5af330913c64f9d7c4bbd9e6
Shader 'CanvasShaderGLES3' SHA256: 388570ae9f6ae80d544332e232edada93582887a19fa48b9354f9937a9239e3b
Shader 'CanvasOcclusionShaderGLES3' SHA256: 6c2eea329ac350f637ba74b84111eabfa098ba448e0baec576c396a7884f1b87
Shader 'SceneShaderGLES3' SHA256: 148d2ddf8cdb690b8d4d709ee7888bd10fdb5648794912feb22412f624c140db
Shader 'SkyShaderGLES3' SHA256: 739d6ace8fa9c37c02bb9e76010377016be749d504ded7b27e2a8b0db8ab76a6
OpenGL API 3.3.0 NVIDIA 566.36 - Compatibility - Using Device: NVIDIA - NVIDIA GeForce RTX 2070

TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)".
CORE API HASH: 1180553829
EDITOR API HASH: 33618999
Loading resource: C:/Users/thadg/AppData/Roaming/Godot/editor_settings-4.4.tres
EditorSettings: Load OK!
EditorTheme: Generating new theme for the config '2106092673'.
EditorTheme: Generating new icons.
EditorTheme: Generating new fonts.
EditorTheme: Generating new styles.
WARNING: GENERAL - Message Id Number: 0 | Message Id Name: Loader Message
        windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files.
        Objects - 1
                Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle 2099023670768
     at: RenderingContextDriverVulkan::_debug_messenger_callback (drivers\vulkan\rendering_context_driver_vulkan.cpp:639)
Devices:
  #0: NVIDIA NVIDIA GeForce RTX 2070 - Unsupported, Discrete
Optional extension VK_EXT_astc_decode_mode not found
Optional extension VK_EXT_debug_marker not found
- Vulkan Variable Rate Shading supported:
  Pipeline fragment shading rate
  Primitive fragment shading rate
  Attachment fragment shading rate, min texel size: (16, 16), max texel size: (16, 16), max fragment size: (4, 4)
- Vulkan multiview supported:
  max view count: 32
  max instances: 134217727
- Vulkan subgroup:
  size: 32
  min size: 32
  max size: 32
  stages: STAGE_VERTEX, STAGE_TESSELLATION_CONTROL, STAGE_TESSELLATION_EVALUATION, STAGE_GEOMETRY, STAGE_FRAGMENT, STAGE_COMPUTE, STAGE_RAYGEN_KHR, STAGE_ANY_HIT_KHR, STAGE_CLOSEST_HIT_KHR, STAGE_MISS_KHR, STAGE_INTERSECTION_KHR, STAGE_CALLABLE_KHR, STAGE_TASK_NV, STAGE_MESH_NV
  supported ops: FEATURE_BASIC, FEATURE_VOTE, FEATURE_ARITHMETIC, FEATURE_BALLOT, FEATURE_SHUFFLE, FEATURE_SHUFFLE_RELATIVE, FEATURE_CLUSTERED, FEATURE_QUAD, FEATURE_PARTITIONED_NV
  quad operations in all stages
Loaded system CA certificates
EditorSettings: Save OK!
Editing project: E:/GODOT PROJECTS/sandstorm
WorkerThreadPool: 8 threads, 6 max low-priority.
Godot Engine v4.4.beta.custom_build.ee4acfbfb (2025-01-29 23:45:20 UTC) - https://godotengine.org
EditorSettings: Save OK!
TextServer: Added interface "Dummy"
XR: Clearing primary interface
XR: Removed interface "Native mobile"
XR: Removed interface "OpenXR"
TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)"
WARNING: GENERAL - Message Id Number: 0 | Message Id Name: Loader Message
        windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files.
        Objects - 1
                Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle 2968574771856
     at: RenderingContextDriverVulkan::_debug_messenger_callback (drivers\vulkan\rendering_context_driver_vulkan.cpp:639)
Devices:
  #0: NVIDIA NVIDIA GeForce RTX 2070 - Supported, Discrete
Optional extension VK_EXT_astc_decode_mode not found
Optional extension VK_EXT_debug_marker not found
- Vulkan Variable Rate Shading supported:
  Pipeline fragment shading rate
  Primitive fragment shading rate
  Attachment fragment shading rate, min texel size: (16, 16), max texel size: (16, 16), max fragment size: (4, 4)
- Vulkan multiview supported:
  max view count: 32
  max instances: 134217727
- Vulkan subgroup:
  size: 32
  min size: 32
  max size: 32
  stages: STAGE_VERTEX, STAGE_TESSELLATION_CONTROL, STAGE_TESSELLATION_EVALUATION, STAGE_GEOMETRY, STAGE_FRAGMENT, STAGE_COMPUTE, STAGE_RAYGEN_KHR, STAGE_ANY_HIT_KHR, STAGE_CLOSEST_HIT_KHR, STAGE_MISS_KHR, STAGE_INTERSECTION_KHR, STAGE_CALLABLE_KHR, STAGE_TASK_NV, STAGE_MESH_NV
  supported ops: FEATURE_BASIC, FEATURE_VOTE, FEATURE_ARITHMETIC, FEATURE_BALLOT, FEATURE_SHUFFLE, FEATURE_SHUFFLE_RELATIVE, FEATURE_CLUSTERED, FEATURE_QUAD, FEATURE_PARTITIONED_NV
  quad operations in all stages
Vulkan 1.3.289 - Forward+ - Using Device #0: NVIDIA - NVIDIA GeForce RTX 2070
Startup PSO cache (4.3 MiB)
Using "winink" pen tablet driver...
Creating VMA small objects pool for memory type index 1
Shader 'CanvasSdfShaderRD' (group 0) SHA256: eff3e2e4da54f882f9483cbca250cf67a55889501671ecc68ba8c04eca315245
Shader 'SkeletonShaderRD' (group 0) SHA256: 69e06d69d44c63eec6cb2e3cc8f53084084164403bc89b1c71628fb26939d0ac
Shader 'SortShaderRD' (group 0) SHA256: 224720461038ebe4b88c0025d01e26566495bc711025991423ca6302984d922b
Shader 'ParticlesShaderRD' (group 0) SHA256: e3de58dcd4da77adc0ea5c46601d08c9503323280d7ceaf3e1f2179dbc3f0549
Shader 'ParticlesCopyShaderRD' (group 0) SHA256: 0afb1605a2c6a98f8f285076adc30fb83b92c91683b39700205ec311cdef9f39
Shader 'CanvasShaderRD' (group 0) SHA256: 7bde2b69027a64ccde8cb0f8c35aaeb7b4638c86b7f339e28161558ef2cbaa80
Shader 'CanvasOcclusionShaderRD' (group 0) SHA256: 94159e44032c2b4a3e789ba66544dd5c8696202a9c4181a4941359efad435865
Shader 'ClusterRenderShaderRD' (group 0) SHA256: 484e7a229d0e59696bd131045697f69788c76351bfddd4a2b96ae422a9a12224
Shader 'ClusterStoreShaderRD' (group 0) SHA256: b611d0f3adfb31480d576d60e4326f607a532230543f388afc74b39e99fae40d
Shader 'ClusterDebugShaderRD' (group 0) SHA256: 71bdb626ddda5f88266a74390465a528471bf7fd090b007c7bebdbd34d4d8d42
Shader 'SceneForwardClusteredShaderRD' (group 0) SHA256: fedf71e8d265e665a47d9a7dfc7232878f7611d3f69a33fe1598839d83ad16c4
Shader 'SceneForwardClusteredShaderRD' (group 1) SHA256: b03e8deb54387cdebf67778f9550ec2abbb597b060c5d06fba83781c9f7b9c9a
Shader 'SceneForwardClusteredShaderRD' (group 2) SHA256: 540f26e6cbf822528f156f9d1e0eea016293dd875ff1487f3e47d2435f6f06d4
Shader 'SceneForwardClusteredShaderRD' (group 3) SHA256: 56de48e56dc87b519afe42a78b0c8d533ae886b61021c05877edd7a9326c2d25
Shader 'BestFitNormalShaderRD' (group 0) SHA256: 25f5b53c7b13424765cc929b92a361a89c26d6cfbf5d8f8b8cd4beeda3d4c258
Shader 'ResolveShaderRD' (group 0) SHA256: 2acede38be8d5b232547f92294d5b2c30e89e80f50e98813d0825c4217a010f8
Shader 'TaaResolveShaderRD' (group 0) SHA256: cb12339c384a411d6a478e2ca770423eb41fd504d711061c880dab4e5567bfa3
Shader 'Fsr2DepthClipPassShaderRD' (group 0) SHA256: eebb31422e31f4c3f063103a39d96e130e433f7c2d0507074698e4a5de990558
Shader 'Fsr2ReconstructPreviousDepthPassShaderRD' (group 0) SHA256: c84ea11a1ad221a4e9cc624251f49f57462149aabefc49865e59da18954172a4
Shader 'Fsr2LockPassShaderRD' (group 0) SHA256: fdb9ed4571d39075f9a279ccb5e222a49b1aadfb827477a2d6df75dd7609603e
Shader 'Fsr2AccumulatePassShaderRD' (group 0) SHA256: 7fb9f560a6b5182ea4090f0b3b35721a33a3c4fbc574327ecbf2f6dbab048668
Shader 'Fsr2RcasPassShaderRD' (group 0) SHA256: ab989c4b8f9e19fdd6aec0229366696779dd5840e301e0d05e7d53969d1aac71
Shader 'Fsr2ComputeLuminancePyramidPassShaderRD' (group 0) SHA256: e08237f091f91640bea3a8e03a33bd066450fedb103b289de0a5f8b28c415f35
Shader 'Fsr2AutogenReactivePassShaderRD' (group 0) SHA256: fff052f93e2ce21fc0eb316e4188eeda301ba079366782fa5122b02306fea3a1
Shader 'Fsr2TcrAutogenPassShaderRD' (group 0) SHA256: b9f589999ed816e1748fe32b872ce6aa233078b31aac6ef3b3eae911dce6bdab
Shader 'SsEffectsDownsampleShaderRD' (group 0) SHA256: 9a19fa9dd1e8732592d55e86130ef955f8d7d3185127801227ce0e2c05162101
Shader 'SsilShaderRD' (group 0) SHA256: d8c1813a170d18e590ad51174c4864b5216b4b957ecf6a0d09d82cbf1fc15bb0
Shader 'SsilImportanceMapShaderRD' (group 0) SHA256: 47d95d253f8f976ca3c828a334756107c191ff541ab78acf44e9ba0427ca23f7
Shader 'SsilBlurShaderRD' (group 0) SHA256: ed5fa9769266e84758c249dcb7f54158be5a4f3a69e989bc1fcfefb60ff25c21
Shader 'SsilInterleaveShaderRD' (group 0) SHA256: 8aa4e8cc316ba13b6450ce47f42037365d9bbebd79d828cef260e0e4b9b258ee
Shader 'SsaoShaderRD' (group 0) SHA256: 93013ea60cefe9e1f2b7e7e561a5d9b30aec09fcde09dada5ac7f52ac65c4c6b
Shader 'SsaoImportanceMapShaderRD' (group 0) SHA256: 4e9176c95f808cc4c1d2bdf9019f25d910a160c391e50d22fcf45f283ff90d22
Shader 'SsaoBlurShaderRD' (group 0) SHA256: bfe7e4f66b8f29a948a3fdbfda1e3190ddfccf5cec2f97c8a4f2c627991af6ca
Shader 'SsaoInterleaveShaderRD' (group 0) SHA256: 11695220f70b6f4190937a1db56fed4c81e954ab842c76e5976ed810feec3ce6
Shader 'ScreenSpaceReflectionScaleShaderRD' (group 0) SHA256: ebb24ca91bf8b2d21ee083575941bf60a53e7b387f1dd191af76279c1df0a037
Shader 'ScreenSpaceReflectionShaderRD' (group 0) SHA256: 18afcf621634b6b8bdf2213b8888301152f25ed81a2d4e70a1a31484f78b5986
Shader 'ScreenSpaceReflectionFilterShaderRD' (group 0) SHA256: a9df34737498c1ffb2e4d483bab7eb0d44bda116b3ad19a7ef9ad92896e64cfc
Shader 'SubsurfaceScatteringShaderRD' (group 0) SHA256: 88a2c517cca505c24ab384a14f5daba56d9ae65307089f1005962cbd42013164
Shader 'SkyShaderRD' (group 0) SHA256: 6734cb8855ed0685d0c886b53292de8a6075df100e7448c6d82fee18f0399f08
Shader 'VoxelGiShaderRD' (group 0) SHA256: 5dd4d408afe7737b7493f115dcf88e738e9de05b1fa6e68a62fdb39dfb046509
Shader 'VoxelGiDebugShaderRD' (group 0) SHA256: fe0f86741abb860e01e3544042af4d26fd60e7c2ed6f667a82ae7e1d1e26af83
Shader 'SdfgiPreprocessShaderRD' (group 0) SHA256: 40ccd9c3a40b774a32d6d922a12f1ef4768fe16a81c2605e23653f5d120c3968
Shader 'SdfgiDirectLightShaderRD' (group 0) SHA256: 433ecee78aafb3aef9d9f85ac9952cdf7af119c4e903c7b9c3ddec2375b72276
Shader 'SdfgiIntegrateShaderRD' (group 0) SHA256: 89444af91a86df05f2ddcf46f9f10a4ded135d4a7bfb696f87b81f355ca74ba5
Shader 'GiShaderRD' (group 0) SHA256: a01ab2a50b6cc24e2fad76a9b3421b3b6634fd5916d59bbbe31e8b7e046ef182
Shader 'SdfgiDebugShaderRD' (group 0) SHA256: 80010615a0f50ea06515a01b96e44c1e437bc8c7f2f00e1b165f7ef800c01587
Shader 'SdfgiDebugProbesShaderRD' (group 0) SHA256: 4a97a84dd542ccb9e27d63edf39e8fd6616d2402aced6c86cd8e1185175faba0
Shader 'VolumetricFogShaderRD' (group 0) SHA256: 1a8ccb86d4bf26aa0ca11ad6181733bb33beebd52d6be783e7ea162d4dff4169
Shader 'VolumetricFogProcessShaderRD' (group 0) SHA256: 726e65cb0927b756d732a93c9ec2e34be2018c2f90cfcb813608a90917b09ec3
Shader 'BokehDofShaderRD' (group 0) SHA256: db80a872829fbbeb61ca2586e2ebd2b9cabfb7e52710357f1ad31c085ff66029
Shader 'CopyShaderRD' (group 0) SHA256: f119b1aa03dae8d525d0db68de72e6aff5c1a55f1d1c92f8db0d3894f255f3ac
Shader 'CopyToFbShaderRD' (group 0) SHA256: 306793be8a50da9bf930601e37f5485770ba8aad64493bb5b2429eda18c2af25
Shader 'CubeToDpShaderRD' (group 0) SHA256: 5808975b1cb2cd879c699c5232647264b84638ef67d94a88ee8aa87f37edfa27
Shader 'CubemapDownsamplerShaderRD' (group 0) SHA256: 99353d9397bb3c1fc0cc39996e65cb9830dc819584ab8ae2204bec35142fe857
Shader 'CubemapFilterShaderRD' (group 0) SHA256: 0d2d717368bf2c35289994e0975917e34bce1af2ddbae7789b16f5306c7ba948
Shader 'CubemapRoughnessShaderRD' (group 0) SHA256: 87f6795b5a51da6e7a5766fe3197ed81c3634a2aa9401cd9a5f896957cb8d04d
Shader 'SpecularMergeShaderRD' (group 0) SHA256: 97092205e24e43d3e66947f50247e218b94c62831c4b0e596e656dd1a2a7b48e
Shader 'ShadowFrustumShaderRD' (group 0) SHA256: e1325296e1043cd7e91ce0d25b37b5bb4b2c8a8e8101d26183e2015a3e42c22f
Shader 'MotionVectorsShaderRD' (group 0) SHA256: 7dfd76b8d530bfb7d460f684e2142a4a09b7cbe204c09c0f177fe4d02241eb53
Shader 'LuminanceReduceShaderRD' (group 0) SHA256: 0fc70f4ea57f65f277658a92e3c6f06ed4e094fc1484540b408625140a37f213
Shader 'TonemapShaderRD' (group 0) SHA256: 2815a371a61171d4a4f43ce09fc380acc29190ab9d0fe6eddf16087959ff7adb
Shader 'VrsShaderRD' (group 0) SHA256: 0fb60dbd19093e7b54cecff8d2b897654a255a8403fb4178ec073ecc71edbbb7
Shader 'FsrUpscaleShaderRD' (group 0) SHA256: ed68082a163f3f2ff8982d61e20441f5e7c4cdf73fc10c3658e01067f073ebf8
Shader 'BlitShaderRD' (group 0) SHA256: 66af1ff4c61e0c33067d34676f9026242c2debf2a6c0aed5a1276ded66a9ef58
ERROR: Condition "hr != ((HRESULT)0L)" is true. Returning: ERR_CANT_OPEN
   at: AudioDriverWASAPI::audio_device_init (drivers\wasapi\audio_driver_wasapi.cpp:281)
ERROR: WASAPI: init_output_device error.
   at: (drivers\wasapi\audio_driver_wasapi.cpp:602)
WARNING: All audio drivers failed, falling back to the dummy driver.
     at: AudioDriverManager::initialize (servers\audio_server.cpp:246)

TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)".
CORE API HASH: 1180553829
EDITOR API HASH: 33618999
Loading resource: C:/Users/thadg/AppData/Roaming/Godot/editor_settings-4.4.tres
EditorSettings: Load OK!
EditorTheme: Generating new theme for the config '2106092673'.
EditorTheme: Generating new icons.
EditorTheme: Generating new fonts.
EditorTheme: Generating new styles.
Loading resource: C:/Users/thadg/AppData/Local/Godot/editor_doc_cache-4.4.res
Loaded system CA certificates
EditorSettings: Save OK!
Generated 'ID:-9223369653198176881' preview in 21601 usec
Generated 'ID:-9223369406220779565' preview in 13 usec

================================================================
CrashHandlerException: Program crashed
Engine version: Godot Engine v4.4.beta.custom_build (ee4acfbfbf15b3528c34a8d4f65d66097e636044)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[0] <couldn't map PC to fn name>
[1] <couldn't map PC to fn name>
[2] <couldn't map PC to fn name>
[3] <couldn't map PC to fn name>
[4] <couldn't map PC to fn name>
[5] <couldn't map PC to fn name>
[6] <couldn't map PC to fn name>
[7] <couldn't map PC to fn name>
[8] <couldn't map PC to fn name>
[9] <couldn't map PC to fn name>
-- END OF BACKTRACE --
================================================================
PS E:\GitHubRepos\godot\bin>

Steps to reproduce

  • Add New Project.
  • Add a GPUParticles2D node.
  • Click on Process Material
  • Click on New Shader Material
  • Click on the circle for Shader
  • Click on Shader input box and choose New Shader
  • In Create Shader dialog, change mode to Fog, check On for Built-in Shader.
    • NOTE: no crash occurs if mode Particles is chosen instead of Fog.
  • Notice panel description does not show an error (things look OK to click on Create button).
  • Click on Create button.

Screenshot

Image

Minimal reproduction project (MRP)

sandstorm.zip

@Chaosus
Copy link
Member

Chaosus commented Feb 1, 2025

Confirmed crash, callstack:

	godot.windows.editor.dev.x86_64.exe!RendererRD::ParticlesStorage::update_particles() Line 1650	C++
 	godot.windows.editor.dev.x86_64.exe!RenderingServerDefault::_draw(bool p_swap_buffers, double frame_step) Line 83	C++
 	godot.windows.editor.dev.x86_64.exe!RenderingServerDefault::draw(bool p_present, double frame_step) Line 415	C++
 	godot.windows.editor.dev.x86_64.exe!Main::iteration() Line 4490	C++
 	godot.windows.editor.dev.x86_64.exe!OS_Windows::run() Line 2062	C++
 	godot.windows.editor.dev.x86_64.exe!widechar_main(int argc, wchar_t * * argv) Line 96	C++
 	godot.windows.editor.dev.x86_64.exe!_main() Line 122	C++
 	godot.windows.editor.dev.x86_64.exe!main(int argc, char * * argv) Line 136	C++
 	godot.windows.editor.dev.x86_64.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) Line 150	C++

@AThousandShips
Copy link
Member

This also happens in 4.3.stable and 4.2.2.stable

@Calinou
Copy link
Member

Calinou commented Feb 1, 2025

I'm thinking we should change the shader creation dialog to only allow choosing compatible shader modes. In fact, we could hide the Mode dropdown entirely when only one choice is available (and write the shader mode in the dialog title instead).

This probably involves making the shader creation dialog read the property hint to figure out which shader modes are allowed based on the allowed resource types. For instance, if ShaderMaterial,ParticleProcessMaterial are allowed, then you can infer only particle shaders are allowed.

@AThousandShips
Copy link
Member

Would be good to fix the crash for cherry-picking and then enforce the limitation as a follow-up

@Chaosus
Copy link
Member

Chaosus commented Feb 1, 2025

we could hide the Mode dropdown entirely when only one choice is available (and write the shader mode in the dialog title instead).

Then how shader with proper type could be created when it's create directly from a filesystem?

@Calinou
Copy link
Member

Calinou commented Feb 1, 2025

Then how shader with proper type could be created when it's create directly from a filesystem?

In this case, you don't assign the shader directly to a property, so we can't infer it. We can't fully prevent users from assigning the wrong shader type to a property expecting a shader type, but we can make it harder when creating shaders from the inspector at least 🙂

@thadguidry
Copy link
Contributor Author

Then how shader with proper type could be created when it's create directly from a filesystem?

In this case, you don't assign the shader directly to a property, so we can't infer it. We can't fully prevent users from assigning the wrong shader type to a property expecting a shader type, but we can make it harder when creating shaders from the inspector at least 🙂

Is there any possibility to warn users (not prevent) about incompatible types through better dynamic text in the inspector dialog description? The green sentences versus red sentences felt very clear to me as an indication that something wasn't quite right.

@akien-mga akien-mga added this to the 4.4 milestone Feb 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants