Skip to main content
updated to address comment
Source Link
Pikalek
  • 13.4k
  • 5
  • 49
  • 54

The closest I was able to come to tracking this down was a comment I noticed in an official Unity tutorial called Mobile Considerations (for version: 2017.4):

GPU Skinning

Although GPU Skinning is a selectable option in Build Settings for all platforms, it is not supported by any mobile platform. This option will be removed in upcoming Unity releases.

Taken from your own finding about Android settings on version 2018.3, it appears that Unity now limits GPU skinning to VR:

GPU Skinning

Enable this option to use OpenGL ES 3 GPU skinning. To learn more about GPU skinning, see the Wikipedia page on skeletal animation.

Note: This property only supports VR apps, and only works if the Virtual Reality Supported checkbox is ticked.

Regarding their motivation for this, the best I could find is this piece (from version 2018.3) on mobile optimization:

Focus on CPUs

It is often the case that games are limited by the GPU on pixel processing. So they end up having unused CPU power, especially on multicore mobile CPUs. So it is often sensible to pull some work off the GPU and put it onto the CPU instead (Unity does all of these): mesh skinning , batching of small objects, particle geometry updates.

My best guess is that Unity eventually decided that either in general the performance trade offs were such that CPU skinning gave better results than GPU skinning or that the there were some other complications with support this feature. Based on some much older forum discussions, it seems that GPU skinning is only available on certain version of DirectX & OpenGL. It's also possible that rather than deal with a lot of user confusion about when & where a minor feature was & was not taking effect, that they simply removed it from the options.

Regarding the comment about CPU skinning hurting performance (in mobile apps), the only way to know that for certain would be to profile. It's fine to have hunches, but if you are serious about improving performance, should always start & end with profiling. Use profiling at the beginning to find the problem spots (instead of guessing & wasting time on things that aren't relevant) & use it after changes in development strategy to make sure you're moving the right things in the right direction.

The closest I was able to come to tracking this down was a comment I noticed in an official Unity tutorial called Mobile Considerations (for version: 2017.4):

GPU Skinning

Although GPU Skinning is a selectable option in Build Settings for all platforms, it is not supported by any mobile platform. This option will be removed in upcoming Unity releases.

Regarding their motivation for this, the best I could find is this piece (from version 2018.3) on mobile optimization:

Focus on CPUs

It is often the case that games are limited by the GPU on pixel processing. So they end up having unused CPU power, especially on multicore mobile CPUs. So it is often sensible to pull some work off the GPU and put it onto the CPU instead (Unity does all of these): mesh skinning , batching of small objects, particle geometry updates.

My best guess is that Unity eventually decided that either in general the performance trade offs were such that CPU skinning gave better results than GPU skinning or that the there were some other complications with support this feature. Based on some much older forum discussions, it seems that GPU skinning is only available on certain version of DirectX & OpenGL. It's also possible that rather than deal with a lot of user confusion about when & where a minor feature was & was not taking effect, that they simply removed it from the options.

Regarding the comment about CPU skinning hurting performance (in mobile apps), the only way to know that for certain would be to profile. It's fine to have hunches, but if you are serious about improving performance, should always start & end with profiling. Use profiling at the beginning to find the problem spots (instead of guessing & wasting time on things that aren't relevant) & use it after changes in development strategy to make sure you're moving the right things in the right direction.

The closest I was able to come to tracking this down was a comment I noticed in an official Unity tutorial called Mobile Considerations (for version: 2017.4):

GPU Skinning

Although GPU Skinning is a selectable option in Build Settings for all platforms, it is not supported by any mobile platform. This option will be removed in upcoming Unity releases.

Taken from your own finding about Android settings on version 2018.3, it appears that Unity now limits GPU skinning to VR:

GPU Skinning

Enable this option to use OpenGL ES 3 GPU skinning. To learn more about GPU skinning, see the Wikipedia page on skeletal animation.

Note: This property only supports VR apps, and only works if the Virtual Reality Supported checkbox is ticked.

Regarding their motivation for this, the best I could find is this piece (from version 2018.3) on mobile optimization:

Focus on CPUs

It is often the case that games are limited by the GPU on pixel processing. So they end up having unused CPU power, especially on multicore mobile CPUs. So it is often sensible to pull some work off the GPU and put it onto the CPU instead (Unity does all of these): mesh skinning , batching of small objects, particle geometry updates.

My best guess is that Unity eventually decided that either in general the performance trade offs were such that CPU skinning gave better results than GPU skinning or that the there were some other complications with support this feature. Based on some much older forum discussions, it seems that GPU skinning is only available on certain version of DirectX & OpenGL. It's also possible that rather than deal with a lot of user confusion about when & where a minor feature was & was not taking effect, that they simply removed it from the options.

Regarding the comment about CPU skinning hurting performance (in mobile apps), the only way to know that for certain would be to profile. It's fine to have hunches, but if you are serious about improving performance, should always start & end with profiling. Use profiling at the beginning to find the problem spots (instead of guessing & wasting time on things that aren't relevant) & use it after changes in development strategy to make sure you're moving the right things in the right direction.

updated to address comment
Source Link
Pikalek
  • 13.4k
  • 5
  • 49
  • 54

The closest I was able to come to tracking this down was a comment I noticed in an official Unity tutorial called Mobile Considerations (for version: 2017.4):

GPU Skinning

Although GPU Skinning is a selectable option in Build Settings for all platforms, it is not supported by any mobile platform. This option will be removed in upcoming Unity releases.

Regarding their motivation for this, the best I could find is this piece (from version 2018.3) on mobile optimization:

Focus on CPUs

It is often the case that games are limited by the GPU on pixel processing. So they end up having unused CPU power, especially on multicore mobile CPUs. So it is often sensible to pull some work off the GPU and put it onto the CPU instead (Unity does all of these): mesh skinning , batching of small objects, particle geometry updates.

My best guess is that Unity eventually decided that either in general the performance trade offs were such that CPU skinning gave better results than GPU skinning or that the there were some other complications with support this feature. Based on some much older forum discussions, it seems that GPU skinning is only available on certain version of DirectX & OpenGL. It's also possible that rather than deal with a lot of user confusion about when & where a minor feature was & was not taking effect, that they simply removed it from the options.

Regarding the comment about CPU skinning hurting performance (in mobile apps), the only way to know that for certain would be to profile. It's fine to have hunches, but if you are serious about improving performance, should always start & end with profiling. Use profiling at the beginning to find the problem spots (instead of guessing & wasting time on things that aren't relevant) & use it after changes in development strategy to make sure you're moving the right things in the right direction.

The closest I was able to come to tracking this down was a comment I noticed in an official Unity tutorial called Mobile Considerations (for version: 2017.4):

GPU Skinning

Although GPU Skinning is a selectable option in Build Settings for all platforms, it is not supported by any mobile platform. This option will be removed in upcoming Unity releases.

The closest I was able to come to tracking this down was a comment I noticed in an official Unity tutorial called Mobile Considerations (for version: 2017.4):

GPU Skinning

Although GPU Skinning is a selectable option in Build Settings for all platforms, it is not supported by any mobile platform. This option will be removed in upcoming Unity releases.

Regarding their motivation for this, the best I could find is this piece (from version 2018.3) on mobile optimization:

Focus on CPUs

It is often the case that games are limited by the GPU on pixel processing. So they end up having unused CPU power, especially on multicore mobile CPUs. So it is often sensible to pull some work off the GPU and put it onto the CPU instead (Unity does all of these): mesh skinning , batching of small objects, particle geometry updates.

My best guess is that Unity eventually decided that either in general the performance trade offs were such that CPU skinning gave better results than GPU skinning or that the there were some other complications with support this feature. Based on some much older forum discussions, it seems that GPU skinning is only available on certain version of DirectX & OpenGL. It's also possible that rather than deal with a lot of user confusion about when & where a minor feature was & was not taking effect, that they simply removed it from the options.

Regarding the comment about CPU skinning hurting performance (in mobile apps), the only way to know that for certain would be to profile. It's fine to have hunches, but if you are serious about improving performance, should always start & end with profiling. Use profiling at the beginning to find the problem spots (instead of guessing & wasting time on things that aren't relevant) & use it after changes in development strategy to make sure you're moving the right things in the right direction.

Source Link
Pikalek
  • 13.4k
  • 5
  • 49
  • 54

The closest I was able to come to tracking this down was a comment I noticed in an official Unity tutorial called Mobile Considerations (for version: 2017.4):

GPU Skinning

Although GPU Skinning is a selectable option in Build Settings for all platforms, it is not supported by any mobile platform. This option will be removed in upcoming Unity releases.