How to avoid Unity Complie all Standard shader variants - unity3d

When add Standard Shader to Graphics——Always Include Shaders, Unity always stucks in sharedassets0.asset. I know it's unity complies shader variants in the background. it's about 60000 variants which make the .apk size is triple bigger than normal size. And it takes a long time(a couple of hours) to build, even if an empty project.If I remove the shader from the list, when I load a model from asset bundle, it will be a pink.Only add Standard to the list, then everything is ok!Is there any way to solve this problem? Please help me!I googled all I can google!

Edit: Unity 2018.2 added IPreprocessShaders which is described at:
https://blogs.unity3d.com/2018/05/14/stripping-scriptable-shader-variants/ You can review each individual shader keyword combination in IList<ShaderCompilerData> and remove ones you are certain you don't need. The this API is not complicated, but standard shader keywords are not well documented. Some of the keyword correspond to enum BuiltinShaderDefine while others are not. I ended up using this preprocessor to remove any ShaderCompilerData with BuiltinShaderDefine.UNITY_HARDWARE_TIER1, BuiltinShaderDefine.UNITY_HARDWARE_TIER2 and INSTANCING_ON(This is not in the BuiltinShaderDefine enum) turned on since I am certain we didn't use quality settings toggle and instancing.
The Unity Shader Variant Collections works kind of wonky. I ended up using a plugin called "Shader Control" to clean up the mess. But the process is still far from enjoyable since when you remove a keyword there is a chance you break something.
The best solution I could think of is remove all the "Built-in Shader" (Maybe not "Deferred" is you are using Deferred Rendering) and "Always Include Shaders" at the beginning of the project and if someone needs a built-in shader, download "Builit in Shaders" from the Unity Download Archive and import only the one needed back to the project. So that you can:
Have 100% control over built-in shader
Only compile shaders you used
Avoid shader duplication in AssetBundles (If you pack something referencing default imported shaders, the shader will be duplicated for each AssetBundle)
But this "best solution" is certainly more of a hindsight and does not help your current situation though. Give Shader Control a try.

Hi I want to suggest a method that worked for me. I was going to comment but my reputation hasn't reached 50. I would not recommend this as answer but no harm for you in trying I guess.
Instead of including the shaders under Graphics——Always Include Shaders I went to Project Settings -> Player -> Optimization and included the shaders under Preloaded Assets.
I also have doubts if it is the correct way to do so but it solved my problem. I would be glad if anyone could point out what was wrong about it and explain a bit, as I could not find much reference to this method on the Internet.
I have posted a similar question at game dev stack exchange
https://gamedev.stackexchange.com/questions/190092/unity-2020-3-what-is-best-practice-to-include-shaders

Related

Is there a way to convert a game made with ImpactJS to Unity?

I know that is possible export Unity projects to WebGL, but is there a way to use code from a ImpactJS project on Unity?
I checked the web for converter and found none, so unless I missed something, what you are trying to do is impossible.
There is always a way to convert. Sometimes it may require some manual fixing. Generally most languages are similar enough that you can automate many parts. The art assets are often re-usable, for example.
No. Unity converts it's own framework and system of gameobjects and c# code that you write into WebGL code.
However, if you have computing and business code that does not do much with the canvas/UI then that code can be copied over somewhat. For code that is purely computational or business logic, you can use any online tool to convert javascript into C# code with some success.
My guess is that if most of your code dealt with the canvas and UI and interaction, that none of that code will be able to be reused.

Make character face from photo for unity

I'm new to Unity 3d. I'm trying to create human character with face generated from photo. (to give real face look) I tried UMA 2 plugin, but it does not support changing face. I searched and found 'Avatar Maker UMA' can do it. Avatar maker UMA has low quality.
Is there any other way or software to create character from photo and use it in Unity 3d? Would appreciate any sources.
For the Unity Engine is quite impossible to generate faces, you should to it in another system but I want to share with you some ideas from the internet:
Can Unity generate faces?
"Yes and No.... Unity has zero support on this feature out of the box, in fact unity has virtually nothing in this regard, it engine that you design. that's what makes it so versatile and malleable. your problem has virtually nothing to with unity its self. in other words unity won't do it for you but it can be done within it.
but is probably possible if your willing to work really hard at it, many things are possible within unity that it does not come with. however generating 3d detailed meshes from a picture is a really daunting task, your basically need to do some edge detect algorithms... Oh god, its... its nightmare. its even harder because you going straight from scratch.... look I strongly suggest you get real good practice in programming and a really good understanding of how the 3ds does that exactly or you will be in the dark on this one.
Unity has a MeshClass that you will need and the webcam texture.
http://docs.unity3d.com/ScriptReference/Mesh.html http://docs.unity3d.com/ScriptReference/WebCamTexture.html
you can use that for the actual generation. but as i said, it is an absolute nightmare of a job.
I hope this answer's your question"
But there is a new plugin that maybe can help you, it's called AVATARSDK and can generate 3d faces.

Unity modular NPC

We are developing a Top Down RPG Game. So, there's a question about NPCs. Making a lot of NPC FBX files would not be optimal. From what I know, people usually make 3-4 bodies and a bunch of heads, so the NPCs would look different. Do you guys have any idea, if there's an optimal way of doing that?
I tried modelling bodies and heads in separate files and then putting heads onto the empty object on top of the body (this empty object was part of the FBX itself). It didn't work, as the actual head always displayed too high above, so it looked like the head was hovering in the air.
I also thought about making heads a part of one big FBX with just one body. So all the head would be on the same coordinate in space, and so in Unity there would be a possibility of making active just one head in time. I still don't think it would be very optimal.
So, is there a way people usually do this? I mean, this must be really common. They used it in Gothic, for sure and in many other games. So there must be an optimal way, but I'm unable to find it.
There are a few character customization packages available on asset store that you could use. I recommend UMA2 (Unity Multipurpose Avatar). It is a perfect tool and I'm using it on one of my projects and it's really gets the job done. And the good thing is that it's free. Once you imported it into your project, you can either buy contents (cloth, hair, face, ...) or create your own contents like I do using blender. There are tutorials about how to integrate and create contents on Secret Anorak youtube channel.

Finding assets not in use

Is there a way to know what is of all my GO, textures, sounds, etc, are not in use in all scenes, to delete it?
When i tested my game, I have inserted some textures, sounds, GO etc and some of them are not in use.
I'm using Unity 5.1.1.
2018 ..
The modern solution is simply ..
Click on your scene(s) and select "Select Dependencies".
It will show you what is used; the rest is unused. Really it's that easy.
As with many things in Unity pipeline, it is very common to use an asset, virtually every project uses a few well known assets. "A+ Assets Explorer" (link) is very common.
When Unity builds the executable, it does so only with required assets. Anything else that might exist in your scenes or projects is simply ignored.
This answer over on Unity Answers has more info.
There are also options available in the Asset Store, such as this one.
Asset Hunter is a tool that analyzes your buildlog and gives you an easily understandable overview over unused assets in your project folder.
The results are grouped into folders and file types, making it easy to start cleaning up your project.

Portal effect/Non euclidean

I am looking for a solution to the effect used in Valve's portal games and seen in the "portalizer" unity package. I have searched almost every related question on many forums, however none seem to offer the help I need. I have tried re-working the mirror reflection script found on the wiki, however I have a lot of problems when they are out of the camera's view, and it never seems to work. I feel like I have spent hours on this, if you know anywhere which details the logic and explanation of this effect such as camera matrices and stuff it would be great, or just a working block of code for me to look through.
By the way i'm actually not hoping to explicitly use it for potals, Im attempting to make a room similar to Doctor Who's Tardis which is bigger on the inside, kind of mimicking the effect of Non-Euclidean space. Im also looking for something more advanced than a simple camera with render-to-texture. Im also using the pro version.
Thanks in advance.