mafaca / UtinyRipper

GUI and API library to work with Engine assets, serialized and bundle files
MIT License
2.82k stars 433 forks source link

Shader issues #562

Closed RS392 closed 4 years ago

RS392 commented 4 years ago

So uTinyRipper managed to export all the shaders, some 20 of them. But 12 of them have errors such as

Shader error in LightOverlay': Parse error: syntax error, unexpected TVAL_ID, expecting TOK_SETTEXTURE or '}' at line 15

I think it's because these shaders contain binary data (project is from a windows build). Here is an example of such a shader:

`Shader "Custom/Light overlay" { Properties { _Color ("Sky light color", Color) = (1,1,1,1) } SubShader { Tags { "QUEUE"="Transparent+100" "IGNOREPROJECTOR"="true" } Pass { Tags { "QUEUE"="Transparent+100" "IGNOREPROJECTOR"="true" } BindChannels { Bind "vertex", Vertex Bind "color", Color } ZWrite Off Blend DstColor SrcColor Program "vp" { SubProgram "opengl " { Bind "vertex" Vertex Bind "color" Color Vector 5 [_Color] "!!ARBvp1.0 PARAM c[6] = { { 1, 1.5, 0.5 }, state.matrix.mvp, program.local[5] }; TEMP R0; TEMP R1; TEMP R2; ADD R0.x, -vertex.color.w, c[0]; MUL R0, R0.x, c[5]; MIN R1.x, R0, R0.z; ADD R0, R0, vertex.color; MUL R1.x, R1, c[0].z; ADD R2.x, -R1, c[0].y; RCP R1.y, R0.x; MUL R1.x, R2, R1.y; MAD R1, R0, R1.x, -R0; SLT R2.y, R2.x, R0.x; MAD R0, R1, R2.y, R0; RCP R1.x, R0.y; MUL R1.x, R2, R1; MAD R1, R0, R1.x, -R0; SLT R2.y, R2.x, R0; MAD R0, R1, R2.y, R0; RCP R1.x, R0.z; MUL R1.x, R2, R1; SLT R2.x, R2, R0.z; MAD R1, R0, R1.x, -R0; MAD R0, R1, R2.x, R0; MUL result.color, R0, c[0].z; DP4 result.position.w, vertex.position, c[4]; DP4 result.position.z, vertex.position, c[3]; DP4 result.position.y, vertex.position, c[2]; DP4 result.position.x, vertex.position, c[1]; END

26 instructions, 3 R-regs

" } SubProgram "d3d9 " { Bind "vertex" Vertex Bind "color" Color Matrix 0 [glstate_matrix_mvp] Vector 4 [_Color] "vs_2_0 def c5, 1.00000000, 0.50000000, 1.50000000, 0.00000000 dcl_position0 v0 dcl_color0 v1 add r0.x, -v1.w, c5 mul r0, r0.x, c4 min r1.x, r0, r0.z mul r1.x, r1, c5.y add r2.x, -r1, c5.z add r0, r0, v1 slt r1.x, r2, r0 max r1.x, -r1, r1 slt r2.y, c5.w, r1.x rcp r1.x, r0.x mul r2.z, r2.x, r1.x add r1.y, -r2, c5.x mul r1, r0, r1.y mul r0, r0, r2.z mad r0, r2.y, r0, r1 slt r1.x, r2, r0.y max r1.x, -r1, r1 slt r2.y, c5.w, r1.x rcp r1.x, r0.y mul r2.z, r2.x, r1.x add r1.y, -r2, c5.x mul r1, r0, r1.y mul r0, r0, r2.z mad r0, r2.y, r0, r1 slt r1.x, r2, r0.z max r1.x, -r1, r1 slt r2.y, c5.w, r1.x rcp r1.x, r0.z mul r2.x, r2, r1 add r1.y, -r2, c5.x mul r1, r0, r1.y mul r0, r0, r2.x mad r0, r2.y, r0, r1 mul oD0, r0, c5.y dp4 oPos.w, v0, c3 dp4 oPos.z, v0, c2 dp4 oPos.y, v0, c1 dp4 oPos.x, v0, c0 " } SubProgram "d3d11 " { Bind "vertex" Vertex Bind "color" Color ConstBuffer "$Globals" 16 Vector 0 [_Color] ConstBuffer "UnityPerDraw" 336 Matrix 0 [glstate_matrix_mvp] BindCB "$Globals" 0 BindCB "UnityPerDraw" 1 "vs_4_0 eefiecedeembjegjkfonamboiihpajmpgdnneigcabaaaaaabeaeaaaaadaaaaaa cmaaaaaahmaaaaaanaaaaaaaejfdeheoeiaaaaaaacaaaaaaaiaaaaaadiaaaaaa aaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaapapaaaaebaaaaaaaaaaaaaaaaaaaaaa adaaaaaaabaaaaaaapapaaaafaepfdejfeejepeoaaedepemepfcaaklepfdeheo emaaaaaaacaaaaaaaiaaaaaadiaaaaaaaaaaaaaaabaaaaaaadaaaaaaaaaaaaaa apaaaaaaeeaaaaaaaaaaaaaaaaaaaaaaadaaaaaaabaaaaaaapaaaaaafdfgfpfa epfdejfeejepeoaaedepemepfcaaklklfdeieefcdmadaaaaeaaaabaampaaaaaa fjaaaaaeegiocaaaaaaaaaaaabaaaaaafjaaaaaeegiocaaaabaaaaaaaeaaaaaa fpaaaaadpcbabaaaaaaaaaaafpaaaaadpcbabaaaabaaaaaaghaaaaaepccabaaa aaaaaaaaabaaaaaagfaaaaadpccabaaaabaaaaaagiaaaaacadaaaaaadiaaaaai pcaabaaaaaaaaaaafgbfbaaaaaaaaaaaegiocaaaabaaaaaaabaaaaaadcaaaaak pcaabaaaaaaaaaaaegiocaaaabaaaaaaaaaaaaaaagbabaaaaaaaaaaaegaobaaa aaaaaaaadcaaaaakpcaabaaaaaaaaaaaegiocaaaabaaaaaaacaaaaaakgbkbaaa aaaaaaaaegaobaaaaaaaaaaadcaaaaakpccabaaaaaaaaaaaegiocaaaabaaaaaa adaaaaaapgbpbaaaaaaaaaaaegaobaaaaaaaaaaaaaaaaaaibcaabaaaaaaaaaaa dkbabaiaebaaaaaaabaaaaaaabeaaaaaaaaaiadpdiaaaaaigcaabaaaaaaaaaaa agaabaaaaaaaaaaaagiccaaaaaaaaaaaaaaaaaaadcaaaaakpcaabaaaabaaaaaa egiocaaaaaaaaaaaaaaaaaaaagaabaaaaaaaaaaaegbobaaaabaaaaaaddaaaaah bcaabaaaaaaaaaaackaabaaaaaaaaaaabkaabaaaaaaaaaaadcaaaaakbcaabaaa aaaaaaaaakaabaiaebaaaaaaaaaaaaaaabeaaaaaaaaaaadpabeaaaaaaaaamadp aoaaaaahccaabaaaaaaaaaaaakaabaaaaaaaaaaaakaabaaaabaaaaaadiaaaaah pcaabaaaacaaaaaafgafbaaaaaaaaaaaegaobaaaabaaaaaadbaaaaahccaabaaa aaaaaaaaakaabaaaaaaaaaaaakaabaaaabaaaaaadhaaaaajpcaabaaaabaaaaaa fgafbaaaaaaaaaaaegaobaaaacaaaaaaegaobaaaabaaaaaaaoaaaaahccaabaaa aaaaaaaaakaabaaaaaaaaaaabkaabaaaabaaaaaadiaaaaahpcaabaaaacaaaaaa fgafbaaaaaaaaaaaegaobaaaabaaaaaadbaaaaahccaabaaaaaaaaaaaakaabaaa aaaaaaaabkaabaaaabaaaaaadhaaaaajpcaabaaaabaaaaaafgafbaaaaaaaaaaa egaobaaaacaaaaaaegaobaaaabaaaaaaaoaaaaahccaabaaaaaaaaaaaakaabaaa aaaaaaaackaabaaaabaaaaaadbaaaaahbcaabaaaaaaaaaaaakaabaaaaaaaaaaa ckaabaaaabaaaaaadiaaaaahpcaabaaaacaaaaaafgafbaaaaaaaaaaaegaobaaa abaaaaaadhaaaaajpcaabaaaaaaaaaaaagaabaaaaaaaaaaaegaobaaaacaaaaaa egaobaaaabaaaaaadiaaaaakpccabaaaabaaaaaaegaobaaaaaaaaaaaaceaaaaa aaaaaadpaaaaaadpaaaaaadpaaaaaadpdoaaaaab" } SubProgram "d3d11_9x " { Bind "vertex" Vertex Bind "color" Color ConstBuffer "$Globals" 16 Vector 0 [_Color] ConstBuffer "UnityPerDraw" 336 Matrix 0 [glstate_matrix_mvp] BindCB "$Globals" 0 BindCB "UnityPerDraw" 1 "vs_4_0_level_9_1 eefiecednaahpkhophfaonpejbjalioalpifgcomabaaaaaagiagaaaaaeaaaaaa daaaaaaaiaacaaaameafaaaabeagaaaaebgpgodjeiacaaaaeiacaaaaaaacpopp aiacaaaaeaaaaaaaacaaceaaaaaadmaaaaaadmaaaaaaceaaabaadmaaaaaaaaaa abaaabaaaaaaaaaaabaaaaaaaeaaacaaaaaaaaaaaaaaaaaaaaacpoppfbaaaaaf agaaapkaaaaaiadpaaaaaadpaaaamadpaaaaaaaabpaaaaacafaaaaiaaaaaapja bpaaaaacafaaabiaabaaapjaacaaaaadaaaaabiaabaappjbagaaaakaaeaaaaae abaaapiaabaaoekaaaaaaaiaabaaoejaafaaaaadaaaaadiaaaaaaaiaabaaoika akaaaaadaaaaabiaaaaaffiaaaaaaaiaaeaaaaaeaaaaabiaaaaaaaiaagaaffkb agaakkkaagaaaaacaaaaaciaabaaaaiaafaaaaadaaaaaciaaaaaffiaaaaaaaia aeaaaaaeacaaapiaabaaoeiaaaaaffiaabaaoeibamaaaaadaaaaaciaaaaaaaia abaaaaiaaeaaaaaeabaaapiaaaaaffiaacaaoeiaabaaoeiaagaaaaacaaaaacia abaaffiaafaaaaadaaaaaciaaaaaffiaaaaaaaiaaeaaaaaeacaaapiaabaaoeia aaaaffiaabaaoeibamaaaaadaaaaaciaaaaaaaiaabaaffiaaeaaaaaeabaaapia aaaaffiaacaaoeiaabaaoeiaagaaaaacaaaaaciaabaakkiaafaaaaadaaaaacia aaaaffiaaaaaaaiaamaaaaadaaaaabiaaaaaaaiaabaakkiaaeaaaaaeacaaapia abaaoeiaaaaaffiaabaaoeibaeaaaaaeaaaaapiaaaaaaaiaacaaoeiaabaaoeia afaaaaadaaaaapoaaaaaoeiaagaaffkaafaaaaadaaaaapiaaaaaffjaadaaoeka aeaaaaaeaaaaapiaacaaoekaaaaaaajaaaaaoeiaaeaaaaaeaaaaapiaaeaaoeka aaaakkjaaaaaoeiaaeaaaaaeaaaaapiaafaaoekaaaaappjaaaaaoeiaaeaaaaae aaaaadmaaaaappiaaaaaoekaaaaaoeiaabaaaaacaaaaammaaaaaoeiappppaaaa fdeieefcdmadaaaaeaaaabaampaaaaaafjaaaaaeegiocaaaaaaaaaaaabaaaaaa fjaaaaaeegiocaaaabaaaaaaaeaaaaaafpaaaaadpcbabaaaaaaaaaaafpaaaaad pcbabaaaabaaaaaaghaaaaaepccabaaaaaaaaaaaabaaaaaagfaaaaadpccabaaa abaaaaaagiaaaaacadaaaaaadiaaaaaipcaabaaaaaaaaaaafgbfbaaaaaaaaaaa egiocaaaabaaaaaaabaaaaaadcaaaaakpcaabaaaaaaaaaaaegiocaaaabaaaaaa aaaaaaaaagbabaaaaaaaaaaaegaobaaaaaaaaaaadcaaaaakpcaabaaaaaaaaaaa egiocaaaabaaaaaaacaaaaaakgbkbaaaaaaaaaaaegaobaaaaaaaaaaadcaaaaak pccabaaaaaaaaaaaegiocaaaabaaaaaaadaaaaaapgbpbaaaaaaaaaaaegaobaaa aaaaaaaaaaaaaaaibcaabaaaaaaaaaaadkbabaiaebaaaaaaabaaaaaaabeaaaaa aaaaiadpdiaaaaaigcaabaaaaaaaaaaaagaabaaaaaaaaaaaagiccaaaaaaaaaaa aaaaaaaadcaaaaakpcaabaaaabaaaaaaegiocaaaaaaaaaaaaaaaaaaaagaabaaa aaaaaaaaegbobaaaabaaaaaaddaaaaahbcaabaaaaaaaaaaackaabaaaaaaaaaaa bkaabaaaaaaaaaaadcaaaaakbcaabaaaaaaaaaaaakaabaiaebaaaaaaaaaaaaaa abeaaaaaaaaaaadpabeaaaaaaaaamadpaoaaaaahccaabaaaaaaaaaaaakaabaaa aaaaaaaaakaabaaaabaaaaaadiaaaaahpcaabaaaacaaaaaafgafbaaaaaaaaaaa egaobaaaabaaaaaadbaaaaahccaabaaaaaaaaaaaakaabaaaaaaaaaaaakaabaaa abaaaaaadhaaaaajpcaabaaaabaaaaaafgafbaaaaaaaaaaaegaobaaaacaaaaaa egaobaaaabaaaaaaaoaaaaahccaabaaaaaaaaaaaakaabaaaaaaaaaaabkaabaaa abaaaaaadiaaaaahpcaabaaaacaaaaaafgafbaaaaaaaaaaaegaobaaaabaaaaaa dbaaaaahccaabaaaaaaaaaaaakaabaaaaaaaaaaabkaabaaaabaaaaaadhaaaaaj pcaabaaaabaaaaaafgafbaaaaaaaaaaaegaobaaaacaaaaaaegaobaaaabaaaaaa aoaaaaahccaabaaaaaaaaaaaakaabaaaaaaaaaaackaabaaaabaaaaaadbaaaaah bcaabaaaaaaaaaaaakaabaaaaaaaaaaackaabaaaabaaaaaadiaaaaahpcaabaaa acaaaaaafgafbaaaaaaaaaaaegaobaaaabaaaaaadhaaaaajpcaabaaaaaaaaaaa agaabaaaaaaaaaaaegaobaaaacaaaaaaegaobaaaabaaaaaadiaaaaakpccabaaa abaaaaaaegaobaaaaaaaaaaaaceaaaaaaaaaaadpaaaaaadpaaaaaadpaaaaaadp doaaaaabejfdeheoeiaaaaaaacaaaaaaaiaaaaaadiaaaaaaaaaaaaaaaaaaaaaa adaaaaaaaaaaaaaaapapaaaaebaaaaaaaaaaaaaaaaaaaaaaadaaaaaaabaaaaaa apapaaaafaepfdejfeejepeoaaedepemepfcaaklepfdeheoemaaaaaaacaaaaaa aiaaaaaadiaaaaaaaaaaaaaaabaaaaaaadaaaaaaaaaaaaaaapaaaaaaeeaaaaaa aaaaaaaaaaaaaaaaadaaaaaaabaaaaaaapaaaaaafdfgfpfaepfdejfeejepeoaa edepemepfcaaklkl" } } Program "fp" { SubProgram "opengl " { "!!ARBfp1.0 MOV result.color, fragment.color.primary; END

1 instructions, 0 R-regs

" } SubProgram "d3d9 " { "ps_2_0 dcl v0 mov_pp oC0, v0 " } SubProgram "d3d11 " { "ps_4_0 eefiecedfjdoiaijdeijhjdpnpibjbpjbcgfffpfabaaaaaapeaaaaaaadaaaaaa cmaaaaaaiaaaaaaaleaaaaaaejfdeheoemaaaaaaacaaaaaaaiaaaaaadiaaaaaa aaaaaaaaabaaaaaaadaaaaaaaaaaaaaaapaaaaaaeeaaaaaaaaaaaaaaaaaaaaaa adaaaaaaabaaaaaaapapaaaafdfgfpfaepfdejfeejepeoaaedepemepfcaaklkl epfdeheocmaaaaaaabaaaaaaaiaaaaaacaaaaaaaaaaaaaaaaaaaaaaaadaaaaaa aaaaaaaaapaaaaaafdfgfpfegbhcghgfheaaklklfdeieefcdiaaaaaaeaaaaaaa aoaaaaaagcbaaaadpcbabaaaabaaaaaagfaaaaadpccabaaaaaaaaaaadgaaaaaf pccabaaaaaaaaaaaegbobaaaabaaaaaadoaaaaab" } SubProgram "d3d11_9x " { "ps_4_0_level_9_1 eefiecedmdmomhldiedflkcimhkfbplmajbggmfnabaaaaaaeeabaaaaaeaaaaaa daaaaaaahmaaaaaalmaaaaaabaabaaaaebgpgodjeeaaaaaaeeaaaaaaaaacpppp caaaaaaaceaaaaaaaaaaceaaaaaaceaaaaaaceaaaaaaceaaaaaaceaaaaacpppp bpaaaaacaaaaaaiaaaaacplaabaaaaacaaaicpiaaaaaoelappppaaaafdeieefc diaaaaaaeaaaaaaaaoaaaaaagcbaaaadpcbabaaaabaaaaaagfaaaaadpccabaaa aaaaaaaadgaaaaafpccabaaaaaaaaaaaegbobaaaabaaaaaadoaaaaabejfdeheo emaaaaaaacaaaaaaaiaaaaaadiaaaaaaaaaaaaaaabaaaaaaadaaaaaaaaaaaaaa apaaaaaaeeaaaaaaaaaaaaaaaaaaaaaaadaaaaaaabaaaaaaapapaaaafdfgfpfa epfdejfeejepeoaaedepemepfcaaklklepfdeheocmaaaaaaabaaaaaaaiaaaaaa caaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaapaaaaaafdfgfpfegbhcghgf heaaklkl" } } } } }`

@mafaca

However, for windows applications Unity uses D3 compiler and translate shader's code into binary form. So it can't be restored even manually (it has to be disassembled first).

Is that within your skillset? I would gladly pay you if you could restore these shaders manually if need be. The originals were sadly lost due to computer failure. Here is my email: lunatuna392@gmail.com

neobenedict commented 4 years ago

Shaders are compiled by Unity for the target platform, and cannot be re-imported. You would have to rewrite them or find some way to decompile.

mafaca commented 4 years ago

@RS392 unfortunately no. you can ask @spacehamster tho, he is just working on d3 decompiler