Search Unity

[FREE] Subpixel Morphological Antialiasing (SMAA)

Discussion in 'Assets and Asset Store' started by Chman, May 4, 2015.

  1. exitsimulation

    exitsimulation

    Joined:
    Feb 10, 2014
    Posts:
    82
    SMAA does not seem to work on my Nexus 5 right now.

    Turning smaa on or off makes no difference (in the editor it does).
    Also this is my Logcat output (the whole shader seems to be written into the logcat ??):

    Code (CSharp):
    1.  
    2. 05-27 20:04:33.748: I/Adreno-EGL(11088): <qeglDrvAPI_eglInitialize:410>: QUALCOMM Build: 10/24/14, 167c270, I68fa98814b
    3. 05-27 20:04:33.749: W/Adreno-EGL(11088): <qeglDrvAPI_eglGetConfigAttrib:638>: EGL_BAD_ATTRIBUTE
    4. 05-27 20:04:33.749: W/Adreno-EGL(11088): <qeglDrvAPI_eglGetConfigAttrib:638>: EGL_BAD_ATTRIBUTE
    5. 05-27 20:04:33.775: D/Unity(11088): GL_AMD_compressed_ATC_texture GL_AMD_performance_monitor GL_AMD_program_binary_Z400 GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_robustness GL_EXT_texture_format_BGRA8888 GL_EXT_texture_type_2_10_10_10_REV GL_NV_fence GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth_texture GL_OES_depth24 GL_OES_EGL_image GL_OES_EGL_sync GL_OES_EGL_image_external GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_depth_texture_cube_map GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_vertex_type_10_10_10_2 GL_OES_vertex_array_object GL_QCOM_alpha_test GL_QCOM_binning_control GL_QCOM_driver_control GL_QCOM_perfmon_global_mode GL_QCOM_extended_get GL_QCOM_extended_get2 GL_QCOM_tiled_rendering GL_QCOM_writeonly_rendering GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_
    6. 05-27 20:04:33.775: D/Unity(11088): texture_sRGB_decode GL_EXT_texture_filter_anisotropic GL_EXT_multisampled_render_to_texture GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_disjoint_timer_query
    7. 05-27 20:04:33.837: W/libc(11088): pthread_create sched_setscheduler call failed: Operation not permitted
    8. 05-27 20:04:33.844: D/audio_hw_primary(183): out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2
    9. 05-27 20:04:33.857: D/audio_hw_primary(183): select_devices: out_snd_device(2: speaker) in_snd_device(0: none)
    10. 05-27 20:04:33.857: D/msm8974_platform(183): platform_send_audio_calibration: sending audio calibration for snd_device(2) acdb_id(15)
    11. 05-27 20:04:33.858: D/audio_hw_primary(183): enable_snd_device: snd_device(2: speaker)
    12. 05-27 20:04:33.861: D/audio_hw_primary(183): enable_audio_route: apply and update mixer path: low-latency-playback
    13. 05-27 20:04:34.788: W/SensorService(771): sensor 00000000 already enabled in connection 0x9ed6c4c0 (ignoring)
    14. 05-27 20:04:34.975: D/Unity(11088): #extension GL_EXT_shader_texture_lod : enable
    15. 05-27 20:04:34.975: D/Unity(11088): precision highp float;
    16. 05-27 20:04:34.975: D/Unity(11088): vec4 impl_texture2DLodEXT(sampler2D sampler, vec2 coord, float lod)
    17. 05-27 20:04:34.975: D/Unity(11088): {
    18. 05-27 20:04:34.975: D/Unity(11088): #if defined(GL_EXT_shader_texture_lod)
    19. 05-27 20:04:34.976: D/Unity(11088):  return texture2DLodEXT(sampler, coord, lod);
    20. 05-27 20:04:34.976: D/Unity(11088): #else
    21. 05-27 20:04:34.976: D/Unity(11088):  return texture2D(sampler, coord, lod);
    22. 05-27 20:04:34.976: D/Unity(11088): #endif
    23. 05-27 20:04:34.976: D/Unity(11088): }
    24. 05-27 20:04:34.976: D/Unity(11088): uniform sampler2D _MainTex;
    25. 05-27 20:04:34.976: D/Unity(11088): uniform sampler2D _AreaTex;
    26. 05-27 20:04:34.976: D/Unity(11088): uniform sampler2D _SearchTex;
    27. 05-27 20:04:34.976: D/Unity(11088): uniform highp vec4 _Metrics;
    28. 05-27 20:04:34.976: D/Unity(11088): uniform highp vec4 _Params1;
    29. 05-27 20:04:34.976: D/Unity(11088): uniform highp vec2 _Params2;
    30. 05-27 20:04:34.976: D/Unity(11088): varying highp vec2 xlv_TEXCOORD0;
    31. 05-27 20:04:34.976: D/Unity(11088): varying highp vec2 xlv_TEXCOORD1;
    32. 05-27 20:04:34.976: D/Unity(11088): varying highp vec4 xlv_TEXCOORD2;
    33. 05-27 20:04:34.976: D/Unity(11088): varying highp vec4 xlv_TEXCOORD2_1;
    34. 05-27 20:04:34.976: D/Unity(11088): varying highp vec4 xlv_TEXCOORD2_2;
    35. 05-27 20:04:34.976: D/Unity(11088): void main ()
    36. 05-27 20:04:34.976: D/Unity(11088): {
    37. 05-27 20:04:34.976: D/Unity(11088):   highp vec2 e_1;
    38. 05-27 20:04:34.976: D/Unity(11088):   highp vec4 weights_2;
    39. 05-27 20:04:34.976: D/Unity(11088):   weights_2 = vec4(0.0, 0.0, 0.0, 0.0);
    40. 05-27 20:04:34.976: D/Unity(11088):   lowp vec2 tmpvar_3;
    41. 05-27 20:04:34.976: D/Unity(11088):   tmpvar_3 = texture2D (_MainTex, xlv_TEXCOORD0).xy;
    42. 05-27 20:04:34.976: D/Unity(11088):   e_1 = tmpvar_3;
    43. 05-27 20:04:34.976: D/Unity(11088):   if ((e_1.y > 0.0)) {
    44. 05-27 20:04:34.976: D/Unity(11088):     highp vec4 d_4;
    45. 05-27 20:04:34.976: D/Unity(11088):     highp vec2 weights_5;
    46. 05-27 20:04:34.976: D/Unity(11088):     weights_5 = vec2(0.0, 0.0);
    47. 05-27 20:04:34.976: D/Unity(11088):     if ((e_1.x > 0.0)) {
    48. 05-27 20:04:34.976: D/Unity(11088):       highp vec2 e_6;
    49. 05-27 20:04:34.976: D/Unity(11088):       highp vec3 t_7;
    50. 05-27 20:04:34.976: D/Unity(11088):       highp vec4 coord_8;
    51. 05-27 20:04:34.976: D/Unity(11088):       highp vec4 tmpvar_9;
    52. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_9.zw = vec2(-1.0, 1.0);
    53. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_9.xy = xlv_TEXCOORD0;
    54. 05-27 20:04:34.976: D/Unity(11088):       coord_8 = tmpvar_9;
    55. 05-27 20:04:34.976: D/Unity(11088):       highp vec3 tmpvar_10;
    56. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_10.z = 1.0;
    57. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_10.xy = _Metrics.xy;
    58. 05-27 20:04:34.976: D/Unity(11088):       t_7 = tmpvar_10;
    59. 05-27 20:04:34.976: D/Unity(11088):       while (true) {
    60. 05-27 20:04:34.976: D/Unity(11088):         if (!(((coord_8.z <
    61. 05-27 20:04:34.976: D/Unity(11088):           (_Params1.w - 1.0)
    62. 05-27 20:04:34.976: D/Unity(11088):         ) && (coord_8.w > 0.9)))) {
    63. 05-27 20:04:34.976: D/Unity(11088):           break;
    64. 05-27 20:04:34.976: D/Unity(11088):         };
    65. 05-27 20:04:34.976: D/Unity(11088):         coord_8.xyz = ((t_7 * vec3(-1.0, 1.0, 1.0)) + coord_8.xyz);
    66. 05-27 20:04:34.976: D/Unity(11088):         lowp vec4 tmpvar_11;
    67. 05-27 20:04:34.976: D/Unity(11088):         tmpvar_11 = impl_texture2DLodEXT (_MainTex, coord_8.xy, 0.0);
    68. 05-27 20:04:34.976: D/Unity(11088):         highp vec2 tmpvar_12;
    69. 05-27 20:04:34.976: D/Unity(11088):         tmpvar_12 = tmpvar_11.xy;
    70. 05-27 20:04:34.976: D/Unity(11088):         e_6 = tmpvar_12;
    71. 05-27 20:04:34.976: D/Unity(11088):         coord_8.w = dot (tmpvar_12, vec2(0.5, 0.5));
    72. 05-27 20:04:34.976: D/Unity(11088):       };
    73. 05-27 20:04:34.976: D/Unity(11088):       d_4.z = coord_8.w;
    74. 05-27 20:04:34.976: D/Unity(11088):       d_4.x = (coord_8.z + float((e_6.y > 0.9)));
    75. 05-27 20:04:34.976: D/Unity(11088):     } else {
    76. 05-27 20:04:34.976: D/Unity(11088):       d_4.xz = vec2(0.0, 0.0);
    77. 05-27 20:04:34.976: D/Unity(11088):     };
    78. 05-27 20:04:34.976: D/Unity(11088):     highp vec3 t_13;
    79. 05-27 20:04:34.976: D/Unity(11088):     highp vec4 coord_14;
    80. 05-27 20:04:34.976: D/Unity(11088):     highp vec4 tmpvar_15;
    81. 05-27 20:04:34.976: D/Unity(11088):     tmpvar_15.zw = vec2(-1.0, 1.0);
    82. 05-27 20:04:34.976: D/Unity(11088):     tmpvar_15.xy = xlv_TEXCOORD0;
    83. 05-27 20:04:34.976: D/Unity(11088):     coord_14 = tmpvar_15;
    84. 05-27 20:04:34.976: D/Unity(11088):     highp vec3 tmpvar_16;
    85. 05-27 20:04:34.976: D/Unity(11088):     tmpvar_16.z = 1.0;
    86. 05-27 20:04:34.976: D/Unity(11088):     tmpvar_16.xy = _Metrics.xy;
    87. 05-27 20:04:34.976: D/Unity(11088):     t_13 = tmpvar_16;
    88. 05-27 20:04:34.976: D/Unity(11088):     while (true) {
    89. 05-27 20:04:34.976: D/Unity(11088):       if (!(((coord_14.z <
    90. 05-27 20:04:34.976: D/Unity(11088):         (_Params1.w - 1.0)
    91. 05-27 20:04:34.976: D/Unity(11088):       ) && (coord_14.w > 0.9)))) {
    92. 05-27 20:04:34.976: D/Unity(11088):         break;
    93. 05-27 20:04:34.976: D/Unity(11088):       };
    94. 05-27 20:04:34.976: D/Unity(11088):       coord_14.xyz = ((t_13 * vec3(1.0, -1.0, 1.0)) + coord_14.xyz);
    95. 05-27 20:04:34.976: D/Unity(11088):       lowp vec4 tmpvar_17;
    96. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_17 = impl_texture2DLodEXT (_MainTex, coord_14.xy, 0.0);
    97. 05-27 20:04:34.976: D/Unity(11088):       highp vec2 tmpvar_18;
    98. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_18 = tmpvar_17.xy;
    99. 05-27 20:04:34.976: D/Unity(11088):       coord_14.w = dot (tmpvar_18, vec2(0.5, 0.5));
    100. 05-27 20:04:34.976: D/Unity(11088):     };
    101. 05-27 20:04:34.976: D/Unity(11088):     d_4.yw = coord_14.zw;
    102. 05-27 20:04:34.976: D/Unity(11088):     if (((d_4.x + coord_14.z) > 2.0)) {
    103. 05-27 20:04:34.976: D/Unity(11088):       highp vec4 c_19;
    104. 05-27 20:04:34.976: D/Unity(11088):       highp vec4 tmpvar_20;
    105. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_20.x = (-(d_4.x) + 0.25);
    106. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_20.y = d_4.x;
    107. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_20.z = d_4.y;
    108. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_20.w = (-(coord_14.z) - 0.25);
    109. 05-27 20:04:34.976: D/Unity(11088):       highp vec4 tmpvar_21;
    110. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_21 = ((tmpvar_20 * _Metrics.xyxy) + xlv_TEXCOORD0.xyxy);
    111. 05-27 20:04:34.976: D/Unity(11088):       highp vec4 tmpvar_22;
    112. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_22.zw = vec2(0.0, 0.0);
    113. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_22.xy = (tmpvar_21.xy + (vec2(-1.0, 0.0) * _Metrics.xy));
    114. 05-27 20:04:34.976: D/Unity(11088):       lowp vec2 tmpvar_23;
    115. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_23 = impl_texture2DLodEXT (_MainTex, tmpvar_22.xy, 0.0).xy;
    116. 05-27 20:04:34.976: D/Unity(11088):       c_19.xy = tmpvar_23;
    117. 05-27 20:04:34.976: D/Unity(11088):       highp vec4 tmpvar_24;
    118. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_24.zw = vec2(0.0, 0.0);
    119. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_24.xy = (tmpvar_21.zw + (vec2(1.0, 0.0) * _Metrics.xy));
    120. 05-27 20:04:34.976: D/Unity(11088):       lowp vec2 tmpvar_25;
    121. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_25 = impl_texture2DLodEXT (_MainTex, tmpvar_24.xy, 0.0).xy;
    122. 05-27 20:04:34.976: D/Unity(11088):       c_19.zw = tmpvar_25;
    123. 05-27 20:04:34.976: D/Unity(11088):       highp vec4 e_26;
    124. 05-27 20:04:34.976: D/Unity(11088):       e_26.yw = c_19.yw;
    125. 05-27 20:04:34.976: D/Unity(11088):       e_26.xz = (c_19.xz * abs((
    126. 05-27 20:04:34.976: D/Unity(11088):         (5.0 * c_19.xz)
    127. 05-27 20:04:34.976: D/Unity(11088):        - 3.75)));
    128. 05-27 20:04:34.976: D/Unity(11088):       c_19 = floor((e_26 + vec4(0.5, 0.5, 0.5, 0.5))).yxwz;
    129. 05-27 20:04:34.976: D/Unity(11088):       bvec2 tmpvar_27;
    130. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_27 = bool(float((d_4.z >= 0.9))).xx;
    131. 05-27 20:04:34.976: D/Unity(11088):       highp vec2 variable_28;
    132. 05-27 20:04:34.976: D/Unity(11088):       variable_28 = ((vec2(2.0, 2.0) * c_19.xz) + c_19.yw);
    133. 05-27 20:04:34.976: D/Unity(11088):       if (tmpvar_27.x) {
    134. 05-27 20:04:34.976: D/Unity(11088):         variable_28.x = 0.0;
    135. 05-27 20:04:34.976: D/Unity(11088):       };
    136. 05-27 20:04:34.976: D/Unity(11088):       if (tmpvar_27.y) {
    137. 05-27 20:04:34.976: D/Unity(11088):         variable_28.y = 0.0;
    138. 05-27 20:04:34.976: D/Unity(11088):       };
    139. 05-27 20:04:34.976: D/Unity(11088):       highp vec2 tmpvar_29;
    140. 05-27 20:04:34.976: D/Unity(11088):       highp vec2 texcoord_30;
    141. 05-27 20:04:34.976: D/Unity(11088):       highp vec2 tmpvar_31;
    142. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_31 = ((vec2(0.00625, 0.001785714) * (
    143. 05-27 20:04:34.976: D/Unity(11088):         (vec2(20.0, 20.0) * variable_28)
    144. 05-27 20:04:34.976: D/Unity(11088):        + d_4.xy)) + vec2(0.003125, 0.0008928571));
    145. 05-27 20:04:34.976: D/Unity(11088):       texcoord_30.x = (tmpvar_31.x + 0.5);
    146. 05-27 20:04:34.976: D/Unity(11088):       texcoord_30.y = tmpvar_31.y;
    147. 05-27 20:04:34.976: D/Unity(11088):       lowp vec4 tmpvar_32;
    148. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_32 = impl_texture2DLodEXT (_AreaTex, texcoord_30, 0.0);
    149. 05-27 20:04:34.976: D/Unity(11088):       tmpvar_29 = tmpvar_32.xy;
    150. 05-27 20:04:34.976: D/Unity(11088):       weights_5 = tmpvar_29;
    151. 05-27 20:04:34.977: D/Unity(11088):     };
    152. 05-27 20:04:34.977: D/Unity(11088):     highp vec3 t_33;
    153. 05-27 20:04:34.977: D/Unity(11088):     highp vec4 coord_34;
    154. 05-27 20:04:34.977: D/Unity(11088):     highp vec4 tmpvar_35;
    155. 05-27 20:04:34.977: D/Unity(11088):     tmpvar_35.zw = vec2(-1.0, 1.0);
    156. 05-27 20:04:34.977: D/Unity(11088):     tmpvar_35.xy = xlv_TEXCOORD0;
    157. 05-27 20:04:34.977: D/Unity(11088):     coord_34.yzw = tmpvar_35.yzw;
    158. 05-27 20:04:34.977: D/Unity(11088):     coord_34.x = (xlv_TEXCOORD0.x + (0.25 * _Metrics.x));
    159. 05-27 20:04:34.977: D/Unity(11088):     highp vec3 tmpvar_36;
    160. 05-27 20:04:34.977: D/Unity(11088):     tmpvar_36.z = 1.0;
    161. 05-27 20:04:34.977: D/Unity(11088):     tmpvar_36.xy = _Metrics.xy;
    162. 05-27 20:04:34.977: D/Unity(11088):     t_33 = tmpvar_36;
    163. 05-27 20:04:34.977: D/Unity(11088):     while (true) {
    164. 05-27 20:04:34.977: D/Unity(11088):       if (!(((coord_34.z <
    165. 05-27 20:04:34.977: D/Unity(11088):         (_Params1.w - 1.0)
    166. 05-27 20:04:34.977: D/Unity(11088):       ) && (coord_34.w > 0.9)))) {
    167. 05-27 20:04:34.977: D/Unity(11088):         break;
    168. 05-27 20:04:34.977: D/Unity(11088):       };
    169. 05-27 20:04:34.977: D/Unity(11088):       coord_34.xyz = ((t_33 * vec3(-1.0, -1.0, 1.0)) + coord_34.xyz);
    170. 05-27 20:04:34.977: D/Unity(11088):       lowp vec4 tmpvar_37;
    171. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_37 = impl_texture2DLodEXT (_MainTex, coord_34.xy, 0.0);
    172. 05-27 20:04:34.977: D/Unity(11088):       highp vec2 tmpvar_38;
    173. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_38 = tmpvar_37.xy;
    174. 05-27 20:04:34.977: D/Unity(11088):       highp vec2 e_39;
    175. 05-27 20:04:34.977: D/Unity(11088):       e_39.y = tmpvar_38.y;
    176. 05-27 20:04:34.977: D/Unity(11088):       e_39.x = (tmpvar_38.x * abs((
    177. 05-27 20:04:34.977: D/Unity(11088):         (5.0 * tmpvar_38.x)
    178. 05-27 20:04:34.977: D/Unity(11088):        - 3.75)));
    179. 05-27 20:04:34.977: D/Unity(11088):       coord_34.w = dot (floor((e_39 + vec2(0.5, 0.5))), vec2(0.5, 0.5));
    180. 05-27 20:04:34.977: D/Unity(11088):     };
    181. 05-27 20:04:34.977: D/Unity(11088):     d_4.xz = coord_34.zw;
    182. 05-27 20:04:34.977: D/Unity(11088):     highp vec4 tmpvar_40;
    183. 05-27 20:04:34.977: D/Unity(11088):     tmpvar_40.zw = vec2(0.0, 0.0);
    184. 05-27 20:04:34.977: D/Unity(11088):     tmpvar_40.xy = (xlv_TEXCOORD0 + (vec2(1.0, 0.0) * _Metrics.xy));
    185. 05-27 20:04:34.977: D/Unity(11088):     lowp vec4 tmpvar_41;
    186. 05-27 20:04:34.977: D/Unity(11088):     tmpvar_41 = impl_texture2DLodEXT (_MainTex, tmpvar_40.xy, 0.0);
    187. 05-27 20:04:34.977: D/Unity(11088):     if ((tmpvar_41.x > 0.0)) {
    188. 05-27 20:04:34.977: D/Unity(11088):       highp vec2 e_42;
    189. 05-27 20:04:34.977: D/Unity(11088):       highp vec3 t_43;
    190. 05-27 20:04:34.977: D/Unity(11088):       highp vec4 coord_44;
    191. 05-27 20:04:34.977: D/Unity(11088):       highp vec4 tmpvar_45;
    192. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_45.zw = vec2(-1.0, 1.0);
    193. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_45.xy = xlv_TEXCOORD0;
    194. 05-27 20:04:34.977: D/Unity(11088):       coord_44.yzw = tmpvar_45.yzw;
    195. 05-27 20:04:34.977: D/Unity(11088):       coord_44.x = (xlv_TEXCOORD0.x + (0.25 * _Metrics.x));
    196. 05-27 20:04:34.977: D/Unity(11088):       highp vec3 tmpvar_46;
    197. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_46.z = 1.0;
    198. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_46.xy = _Metrics.xy;
    199. 05-27 20:04:34.977: D/Unity(11088):       t_43 = tmpvar_46;
    200. 05-27 20:04:34.977: D/Unity(11088):       while (true) {
    201. 05-27 20:04:34.977: D/Unity(11088):         if (!(((coord_44.z <
    202. 05-27 20:04:34.977: D/Unity(11088):           (_Params1.w - 1.0)
    203. 05-27 20:04:34.977: D/Unity(11088):         ) && (coord_44.w > 0.9)))) {
    204. 05-27 20:04:34.977: D/Unity(11088):           break;
    205. 05-27 20:04:34.977: D/Unity(11088):         };
    206. 05-27 20:04:34.977: D/Unity(11088):         coord_44.xyz = (t_43 + coord_44.xyz);
    207. 05-27 20:04:34.977: D/Unity(11088):         lowp vec4 tmpvar_47;
    208. 05-27 20:04:34.977: D/Unity(11088):         tmpvar_47 = impl_texture2DLodEXT (_MainTex, coord_44.xy, 0.0);
    209. 05-27 20:04:34.977: D/Unity(11088):         highp vec2 tmpvar_48;
    210. 05-27 20:04:34.977: D/Unity(11088):         tmpvar_48 = tmpvar_47.xy;
    211. 05-27 20:04:34.977: D/Unity(11088):         highp vec2 e_49;
    212. 05-27 20:04:34.977: D/Unity(11088):         e_49.y = tmpvar_48.y;
    213. 05-27 20:04:34.977: D/Unity(11088):         e_49.x = (tmpvar_48.x * abs((
    214. 05-27 20:04:34.977: D/Unity(11088):           (5.0 * tmpvar_48.x)
    215. 05-27 20:04:34.977: D/Unity(11088):          - 3.75)));
    216. 05-27 20:04:34.977: D/Unity(11088):         highp vec2 tmpvar_50;
    217. 05-27 20:04:34.977: D/Unity(11088):         tmpvar_50 = floor((e_49 + vec2(0.5, 0.5)));
    218. 05-27 20:04:34.977: D/Unity(11088):         e_42 = tmpvar_50;
    219. 05-27 20:04:34.977: D/Unity(11088):         coord_44.w = dot (tmpvar_50, vec2(0.5, 0.5));
    220. 05-27 20:04:34.977: D/Unity(11088):       };
    221. 05-27 20:04:34.977: D/Unity(11088):       d_4.w = coord_44.w;
    222. 05-27 20:04:34.977: D/Unity(11088):       d_4.y = (coord_44.z + float((e_42.y > 0.9)));
    223. 05-27 20:04:34.977: D/Unity(11088):     } else {
    224. 05-27 20:04:34.977: D/Unity(11088):       d_4.yw = vec2(0.0, 0.0);
    225. 05-27 20:04:34.977: D/Unity(11088):     };
    226. 05-27 20:04:34.977: D/Unity(11088):     if (((coord_34.z + d_4.y) > 2.0)) {
    227. 05-27 20:04:34.977: D/Unity(11088):       highp vec4 c_1_51;
    228. 05-27 20:04:34.977: D/Unity(11088):       highp vec4 tmpvar_52;
    229. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_52.x = -(coord_34.z);
    230. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_52.y = -(coord_34.z);
    231. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_52.z = d_4.y;
    232. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_52.w = d_4.y;
    233. 05-27 20:04:34.977: D/Unity(11088):       highp vec4 tmpvar_53;
    234. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_53 = ((tmpvar_52 * _Metrics.xyxy) + xlv_TEXCOORD0.xyxy);
    235. 05-27 20:04:34.977: D/Unity(11088):       highp vec4 tmpvar_54;
    236. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_54.zw = vec2(0.0, 0.0);
    237. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_54.xy = (tmpvar_53.xy + (vec2(-1.0, 0.0) * _Metrics.xy));
    238. 05-27 20:04:34.977: D/Unity(11088):       lowp float tmpvar_55;
    239. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_55 = impl_texture2DLodEXT (_MainTex, tmpvar_54.xy, 0.0).y;
    240. 05-27 20:04:34.977: D/Unity(11088):       c_1_51.x = tmpvar_55;
    241. 05-27 20:04:34.977: D/Unity(11088):       highp vec4 tmpvar_56;
    242. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_56.zw = vec2(0.0, 0.0);
    243. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_56.xy = (tmpvar_53.xy + (vec2(0.0, -1.0) * _Metrics.xy));
    244. 05-27 20:04:34.977: D/Unity(11088):       lowp float tmpvar_57;
    245. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_57 = impl_texture2DLodEXT (_MainTex, tmpvar_56.xy, 0.0).x;
    246. 05-27 20:04:34.977: D/Unity(11088):       c_1_51.y = tmpvar_57;
    247. 05-27 20:04:34.977: D/Unity(11088):       highp vec4 tmpvar_58;
    248. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_58.zw = vec2(0.0, 0.0);
    249. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_58.xy = (tmpvar_53.zw + (vec2(1.0, 0.0) * _Metrics.xy));
    250. 05-27 20:04:34.977: D/Unity(11088):       lowp vec2 tmpvar_59;
    251. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_59 = impl_texture2DLodEXT (_MainTex, tmpvar_58.xy, 0.0).yx;
    252. 05-27 20:04:34.977: D/Unity(11088):       c_1_51.zw = tmpvar_59;
    253. 05-27 20:04:34.977: D/Unity(11088):       bvec2 tmpvar_60;
    254. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_60 = bool(float((coord_34.w >= 0.9))).xx;
    255. 05-27 20:04:34.977: D/Unity(11088):       highp vec2 variable_61;
    256. 05-27 20:04:34.977: D/Unity(11088):       variable_61 = ((vec2(2.0, 2.0) * c_1_51.xz) + c_1_51.yw);
    257. 05-27 20:04:34.977: D/Unity(11088):       if (tmpvar_60.x) {
    258. 05-27 20:04:34.977: D/Unity(11088):         variable_61.x = 0.0;
    259. 05-27 20:04:34.977: D/Unity(11088):       };
    260. 05-27 20:04:34.977: D/Unity(11088):       if (tmpvar_60.y) {
    261. 05-27 20:04:34.977: D/Unity(11088):         variable_61.y = 0.0;
    262. 05-27 20:04:34.977: D/Unity(11088):       };
    263. 05-27 20:04:34.977: D/Unity(11088):       highp vec2 tmpvar_62;
    264. 05-27 20:04:34.977: D/Unity(11088):       highp vec2 texcoord_63;
    265. 05-27 20:04:34.977: D/Unity(11088):       highp vec2 tmpvar_64;
    266. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_64 = ((vec2(0.00625, 0.001785714) * (
    267. 05-27 20:04:34.977: D/Unity(11088):         (vec2(20.0, 20.0) * variable_61)
    268. 05-27 20:04:34.977: D/Unity(11088):        + d_4.xy)) + vec2(0.003125, 0.0008928571));
    269. 05-27 20:04:34.977: D/Unity(11088):       texcoord_63.x = (tmpvar_64.x + 0.5);
    270. 05-27 20:04:34.977: D/Unity(11088):       texcoord_63.y = tmpvar_64.y;
    271. 05-27 20:04:34.977: D/Unity(11088):       lowp vec4 tmpvar_65;
    272. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_65 = impl_texture2DLodEXT (_AreaTex, texcoord_63, 0.0);
    273. 05-27 20:04:34.977: D/Unity(11088):       tmpvar_62 = tmpvar_65.xy;
    274. 05-27 20:04:34.977: D/Unity(11088):       weights_5 = (weights_5 + tmpvar_62.yx);
    275. 05-27 20:04:34.977: D/Unity(11088):     };
    276. 05-27 20:04:34.977: D/Unity(11088):     weights_2.xy = weights_5;
    277. 05-27 20:04:34.977: D/Unity(11088):     if ((weights_5.x == -(weights_5.y))) {
    278. 05-27 20:04:34.977: D/Unity(11088):       highp vec3 coords_66;
    279. 05-27 20:04:34.977: D/Unity(11088):       highp vec2 d_67;
    280. 05-27 20:04:34.977: D/Unity(11088):       highp vec2 texcoord_68;
    281. 05-27 20:04:34.977: D/Unity(11088):       texcoord_68 = xlv_TEXCOORD2.xy;
    282. 05-27 20:04:34.977: D/Unity(11088):       highp float end_69;
    283. 05-27 20:04:34.978: D/Unity(11088):       end_69 = xlv_TEXCOORD2_2.x;
    284. 05-27 20:04:34.978: D/Unity(11088):       highp vec2 e_70;
    285. 05-27 20:04:34.978: D/Unity(11088):       e_70 = vec2(0.0, 1.0);
    286. 05-27 20:04:34.978: D/Unity(11088):       while (true) {
    287. 05-27 20:04:34.978: D/Unity(11088):         if (!(((
    288. 05-27 20:04:34.978: D/Unity(11088):           (texcoord_68.x > end_69)
    289. 05-27 20:04:34.978: D/Unity(11088):          &&
    290. 05-27 20:04:34.978: D/Unity(11088):           (e_70.y > 0.8281)
    291. 05-27 20:04:34.978: D/Unity(11088):         ) && (e_70.x == 0.0)))) {
    292. 05-27 20:04:34.978: D/Unity(11088):           break;
    293. 05-27 20:04:34.978: D/Unity(11088):         };
    294. 05-27 20:04:34.978: D/Unity(11088):         lowp vec4 tmpvar_71;
    295. 05-27 20:04:34.978: D/Unity(11088):         tmpvar_71 = impl_texture2DLodEXT (_MainTex, texcoord_68, 0.0);
    296. 05-27 20:04:34.978: D/Unity(11088):         highp vec2 tmpvar_72;
    297. 05-27 20:04:34.978: D/Unity(11088):         tmpvar_72 = tmpvar_71.xy;
    298. 05-27 20:04:34.978: D/Unity(11088):         e_70 = tmpvar_72;
    299. 05-27 20:04:34.978: D/Unity(11088):         texcoord_68 = ((vec2(-2.0, -0.0) * _Metrics.xy) + texcoord_68);
    300. 05-27 20:04:34.978: D/Unity(11088):       };
    301. 05-27 20:04:34.978: D/Unity(11088):       highp float tmpvar_73;
    302. 05-27 20:04:34.978: D/Unity(11088):       highp vec4 tmpvar_74;
    303. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_74.zw = vec2(0.0, 0.0);
    304. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_74.xy = ((vec2(0.5, -2.0) * e_70) + vec2(0.0078125, 2.03125));
    305. 05-27 20:04:34.978: D/Unity(11088):       lowp vec4 tmpvar_75;
    306. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_75 = impl_texture2DLodEXT (_SearchTex, tmpvar_74.xy, 0.0);
    307. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_73 = tmpvar_75.w;
    308. 05-27 20:04:34.978: D/Unity(11088):       coords_66.x = ((_Metrics.x * (
    309. 05-27 20:04:34.978: D/Unity(11088):         (-2.007874 * tmpvar_73)
    310. 05-27 20:04:34.978: D/Unity(11088):        + 3.25)) + texcoord_68.x);
    311. 05-27 20:04:34.978: D/Unity(11088):       coords_66.y = xlv_TEXCOORD2_1.y;
    312. 05-27 20:04:34.978: D/Unity(11088):       d_67.x = coords_66.x;
    313. 05-27 20:04:34.978: D/Unity(11088):       lowp vec4 tmpvar_76;
    314. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_76 = impl_texture2DLodEXT (_MainTex, coords_66.xy, 0.0);
    315. 05-27 20:04:34.978: D/Unity(11088):       highp float tmpvar_77;
    316. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_77 = tmpvar_76.x;
    317. 05-27 20:04:34.978: D/Unity(11088):       highp vec2 texcoord_78;
    318. 05-27 20:04:34.978: D/Unity(11088):       texcoord_78 = xlv_TEXCOORD2.zw;
    319. 05-27 20:04:34.978: D/Unity(11088):       highp float end_79;
    320. 05-27 20:04:34.978: D/Unity(11088):       end_79 = xlv_TEXCOORD2_2.y;
    321. 05-27 20:04:34.978: D/Unity(11088):       highp vec2 e_80;
    322. 05-27 20:04:34.978: D/Unity(11088):       e_80 = vec2(0.0, 1.0);
    323. 05-27 20:04:34.978: D/Unity(11088):       while (true) {
    324. 05-27 20:04:34.978: D/Unity(11088):         if (!(((
    325. 05-27 20:04:34.978: D/Unity(11088):           (texcoord_78.x < end_79)
    326. 05-27 20:04:34.978: D/Unity(11088):          &&
    327. 05-27 20:04:34.978: D/Unity(11088):           (e_80.y > 0.8281)
    328. 05-27 20:04:34.978: D/Unity(11088):         ) && (e_80.x == 0.0)))) {
    329. 05-27 20:04:34.978: D/Unity(11088):           break;
    330. 05-27 20:04:34.978: D/Unity(11088):         };
    331. 05-27 20:04:34.978: D/Unity(11088):         lowp vec4 tmpvar_81;
    332. 05-27 20:04:34.978: D/Unity(11088):         tmpvar_81 = impl_texture2DLodEXT (_MainTex, texcoord_78, 0.0);
    333. 05-27 20:04:34.978: D/Unity(11088):         highp vec2 tmpvar_82;
    334. 05-27 20:04:34.978: D/Unity(11088):         tmpvar_82 = tmpvar_81.xy;
    335. 05-27 20:04:34.978: D/Unity(11088):         e_80 = tmpvar_82;
    336. 05-27 20:04:34.978: D/Unity(11088):         texcoord_78 = ((vec2(2.0, 0.0) * _Metrics.xy) + texcoord_78);
    337. 05-27 20:04:34.978: D/Unity(11088):       };
    338. 05-27 20:04:34.978: D/Unity(11088):       highp float tmpvar_83;
    339. 05-27 20:04:34.978: D/Unity(11088):       highp vec4 tmpvar_84;
    340. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_84.zw = vec2(0.0, 0.0);
    341. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_84.xy = ((vec2(0.5, -2.0) * e_80) + vec2(0.5234375, 2.03125));
    342. 05-27 20:04:34.978: D/Unity(11088):       lowp vec4 tmpvar_85;
    343. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_85 = impl_texture2DLodEXT (_SearchTex, tmpvar_84.xy, 0.0);
    344. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_83 = tmpvar_85.w;
    345. 05-27 20:04:34.978: D/Unity(11088):       coords_66.z = ((-(_Metrics.x) * (
    346. 05-27 20:04:34.978: D/Unity(11088):         (-2.007874 * tmpvar_83)
    347. 05-27 20:04:34.978: D/Unity(11088):        + 3.25)) + texcoord_78.x);
    348. 05-27 20:04:34.978: D/Unity(11088):       d_67.y = coords_66.z;
    349. 05-27 20:04:34.978: D/Unity(11088):       highp vec2 tmpvar_86;
    350. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_86 = abs(floor((
    351. 05-27 20:04:34.978: D/Unity(11088):         ((_Metrics.zz * d_67) - xlv_TEXCOORD1.xx)
    352. 05-27 20:04:34.978: D/Unity(11088):        + vec2(0.5, 0.5))));
    353. 05-27 20:04:34.978: D/Unity(11088):       d_67 = tmpvar_86;
    354. 05-27 20:04:34.978: D/Unity(11088):       highp vec4 tmpvar_87;
    355. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_87.zw = vec2(0.0, 0.0);
    356. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_87.xy = (coords_66.zy + (vec2(1.0, 0.0) * _Metrics.xy));
    357. 05-27 20:04:34.978: D/Unity(11088):       lowp vec4 tmpvar_88;
    358. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_88 = impl_texture2DLodEXT (_MainTex, tmpvar_87.xy, 0.0);
    359. 05-27 20:04:34.978: D/Unity(11088):       highp float tmpvar_89;
    360. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_89 = tmpvar_88.x;
    361. 05-27 20:04:34.978: D/Unity(11088):       highp vec2 tmpvar_90;
    362. 05-27 20:04:34.978: D/Unity(11088):       highp vec2 texcoord_91;
    363. 05-27 20:04:34.978: D/Unity(11088):       highp vec2 tmpvar_92;
    364. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_92.x = tmpvar_77;
    365. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_92.y = tmpvar_89;
    366. 05-27 20:04:34.978: D/Unity(11088):       texcoord_91 = ((vec2(0.00625, 0.001785714) * (
    367. 05-27 20:04:34.978: D/Unity(11088):         (vec2(16.0, 16.0) * floor(((4.0 * tmpvar_92) + vec2(0.5, 0.5))))
    368. 05-27 20:04:34.978: D/Unity(11088):        +
    369. 05-27 20:04:34.978: D/Unity(11088):         sqrt(tmpvar_86)
    370. 05-27 20:04:34.978: D/Unity(11088):       )) + vec2(0.003125, 0.0008928571));
    371. 05-27 20:04:34.978: D/Unity(11088):       lowp vec4 tmpvar_93;
    372. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_93 = impl_texture2DLodEXT (_AreaTex, texcoord_91, 0.0);
    373. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_90 = tmpvar_93.xy;
    374. 05-27 20:04:34.978: D/Unity(11088):       coords_66.y = xlv_TEXCOORD0.y;
    375. 05-27 20:04:34.978: D/Unity(11088):       highp vec2 factor_94;
    376. 05-27 20:04:34.978: D/Unity(11088):       highp vec2 tmpvar_95;
    377. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_95.x = float((tmpvar_86.y >= tmpvar_86.x));
    378. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_95.y = float((tmpvar_86.x >= tmpvar_86.y));
    379. 05-27 20:04:34.978: D/Unity(11088):       highp vec2 tmpvar_96;
    380. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_96 = (((1.0 -
    381. 05-27 20:04:34.978: D/Unity(11088):         (_Params2.x / 100.0)
    382. 05-27 20:04:34.978: D/Unity(11088):       ) * tmpvar_95) / (tmpvar_95.x + tmpvar_95.y));
    383. 05-27 20:04:34.978: D/Unity(11088):       factor_94.y = 1.0;
    384. 05-27 20:04:34.978: D/Unity(11088):       highp vec4 tmpvar_97;
    385. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_97.zw = vec2(0.0, 0.0);
    386. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_97.xy = (coords_66.xy + (vec2(0.0, 1.0) * _Metrics.xy));
    387. 05-27 20:04:34.978: D/Unity(11088):       lowp vec4 tmpvar_98;
    388. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_98 = impl_texture2DLodEXT (_MainTex, tmpvar_97.xy, 0.0);
    389. 05-27 20:04:34.978: D/Unity(11088):       factor_94.x = (1.0 - (tmpvar_96.x * tmpvar_98.x));
    390. 05-27 20:04:34.978: D/Unity(11088):       highp vec4 tmpvar_99;
    391. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_99.zw = vec2(0.0, 0.0);
    392. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_99.xy = (coords_66.zy + _Metrics.xy);
    393. 05-27 20:04:34.978: D/Unity(11088):       lowp vec4 tmpvar_100;
    394. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_100 = impl_texture2DLodEXT (_MainTex, tmpvar_99.xy, 0.0);
    395. 05-27 20:04:34.978: D/Unity(11088):       factor_94.x = (factor_94.x - (tmpvar_96.y * tmpvar_100.x));
    396. 05-27 20:04:34.978: D/Unity(11088):       highp vec4 tmpvar_101;
    397. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_101.zw = vec2(0.0, 0.0);
    398. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_101.xy = (coords_66.xy + (vec2(0.0, -2.0) * _Metrics.xy));
    399. 05-27 20:04:34.978: D/Unity(11088):       lowp vec4 tmpvar_102;
    400. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_102 = impl_texture2DLodEXT (_MainTex, tmpvar_101.xy, 0.0);
    401. 05-27 20:04:34.978: D/Unity(11088):       factor_94.y = (1.0 - (tmpvar_96.x * tmpvar_102.x));
    402. 05-27 20:04:34.978: D/Unity(11088):       highp vec4 tmpvar_103;
    403. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_103.zw = vec2(0.0, 0.0);
    404. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_103.xy = (coords_66.zy + (vec2(1.0, -2.0) * _Metrics.xy));
    405. 05-27 20:04:34.978: D/Unity(11088):       lowp vec4 tmpvar_104;
    406. 05-27 20:04:34.978: D/Unity(11088):       tmpvar_104 = impl_texture2DLodEXT (_MainTex, tmpvar_103.xy, 0.0);
    407. 05-27 20:04:34.978: D/Unity(11088):       factor_94.y = (factor_94.y - (tmpvar_96.y * tmpvar_104.x));
    408. 05-27 20:04:34.978: D/Unity(11088):       weights_2.xy = (tmpvar_90 * clamp (factor_94, 0.0, 1.0));
    409. 05-27 20:04:34.978: D/Unity(11088):     } else {
    410. 05-27 20:04:34.978: D/Unity(11088):       e_1.x = 0.0;
    411. 05-27 20:04:34.978: D/Unity(11088):     };
    412. 05-27 20:04:34.978: D/Unity(11088):   };
    413. 05-27 20:04:34.979: D/Unity(11088):   if ((e_1.x > 0.0)) {
    414. 05-27 20:04:34.979: D/Unity(11088):     highp vec3 coords_1_105;
    415. 05-27 20:04:34.979: D/Unity(11088):     highp vec2 d_1_106;
    416. 05-27 20:04:34.979: D/Unity(11088):     texcoord_107 = xlv_TEXCOORD2_1.xy;
    417. 05-27 20:04:34.979: D/Unity(11088):     e_109 = vec2(1.0, 0.0);
    418. 05-27 20:04:34.979: D/Unity(11088):        &&
    419. 05-27 20:04:34.979: D/Unity(11088):       };
    420. 05-27 20:04:34.979: D/Unity(11088):       e_109 = tmpvar_111;
    421. 05-27 20:04:34.979: D/Unity(11088):     highp vec4 tmpvar_113;
    422. 05-27 20:04:34.979: D/Unity(11088):     tmpvar_114 = impl_texture2DLodEXT (_SearchTex, tmpvar_113.xy, 0.0);
    423. 05-27 20:04:34.979: D/Unity(11088):      + 3.25)) + texcoord_107.y);
    424. 05-27 20:04:34.979: D/Unity(11088):     lowp vec4 tmpvar_115;
    425. 05-27 20:04:34.979: D/Unity(11088):     highp vec2 texcoord_117;
    426. 05-27 20:04:34.979: D/Unity(11088):     highp vec2 e_119;
    427. 05-27 20:04:34.979: D/Unity(11088):         (texcoord_117.y < end_118)
    428. 05-27 20:04:34.979: D/Unity(11088):         break;
    429. 05-27 20:04:34.979: D/Unity(11088):       tmpvar_121 = tmpvar_120.xy;
    430. 05-27 20:04:34.979: D/Unity(11088):     highp float tmpvar_122;
    431. 05-27 20:04:34.979: D/Unity(11088):     tmpvar_123.xy = ((vec2(0.5, -2.0) * e_119.yx) + vec2(0.5234375, 2.03125));
    432. 05-27 20:04:34.979: D/Unity(11088):     coords_1_105.z = ((-(_Metrics.y) * (
    433. 05-27 20:04:34.979: D/Unity(11088):     highp vec2 tmpvar_125;
    434. 05-27 20:04:34.979: D/Unity(11088):     d_1_106 = tmpvar_125;
    435. 05-27 20:04:34.979: D/Unity(11088):     lowp vec4 tmpvar_127;
    436. 05-27 20:04:34.979: D/Unity(11088):     highp vec2 tmpvar_129;
    437. 05-27 20:04:34.979: D/Unity(11088):     tmpvar_131.y = tmpvar_128;
    438. 05-27 20:04:34.979: D/Unity(11088):     )) + vec2(0.003125, 0.0008928571));
    439. 05-27 20:04:34.979: D/Unity(11088):     tmpvar_140.xy = (coords_1_105.xy + (vec2(-2.0, 0.0) * _Metrics.xy));
    440. 05-27 20:04:34.979: D/Unity(11088):     highp vec4 tmpvar_142;
    441. 05-27 20:04:34.979: D/Unity(11088):     tmpvar_143 = impl_texture2DLodEXT (_MainTex, tmpvar_142.xy, 0.0);
    442. 05-27 20:04:34.979: D/Unity(11088):   };
    443. 05-27 20:04:35.692: I/art(771): Explicit concurrent mark sweep GC freed 26725(1373KB) AllocSpace objects, 1(16KB) LOS objects, 25% free, 46MB/62MB, paused 2.592ms total 143.383ms
    444.  
    445.  
     
    Last edited: May 27, 2015
  2. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    I'm not too surprised to be honest, I didn't expect it to work out of the box.

    Thanks for the logcat output, although it seems incomplete. Is there anything more than the shader dump ? I was expecting to see some error message after the shader code...
     
  3. exitsimulation

    exitsimulation

    Joined:
    Feb 10, 2014
    Posts:
    82
    I only included the Unity Tag logcat output which is why it was incomplete. Updated the logcat above!
    There is nothing relevant after the shader dump as far as I can tell. However at the top of the dump there are some Adreno and EGL lines.
     
  4. Becoming

    Becoming

    Joined:
    May 19, 2013
    Posts:
    781
    Huge thanks from my side! Few days ago i was whining about the lack of proper AA methods for unity... thanks for making it free too. Free is way too cheap but at least you have my support as a customer of colorful and SSAO Pro.

    I could not agree more to what was said in posts 5 to 8 on this thread, hopefully some clever head at unity will take a look and share his thoughts.
     
  5. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Yep, unfortunately this log isn't helpful (except for the permission error but it's probably not related) unless I missed something :( I'm not sure where to look. Oh well.
    Keep an eye on the store, SSAO Pro is about to get a nice update (probably tomorrow) :)
     
    nxrighthere, boysenberry and SAOTA like this.
  6. Rirath

    Rirath

    Joined:
    Dec 5, 2013
    Posts:
    30
    Just wanted to join in saying "Thank you!" for releasing this. I'd already planned to pick up SSAO Pro soon, but after this I'll be doing so ASAP to show support. (That it's getting a nice update is icing on the cake. :))
     
    Last edited: May 28, 2015
    Deleted User likes this.
  7. SAOTA

    SAOTA

    Joined:
    Feb 9, 2015
    Posts:
    220
    Doesn't seem to be any issues on ios. Compiles and runs fine. It does throw out a couple of blit itssues in the editor though.
     
  8. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Hmm interesting. I wonder... Are the blit errors on SSAOPro.cs / line 266 ?
     
  9. SAOTA

    SAOTA

    Joined:
    Feb 9, 2015
    Posts:
    220
    SMAA.cs : 237
     
  10. xenius

    xenius

    Joined:
    Sep 30, 2010
    Posts:
    523
    Just found this thread today. So very excited to do an edge torture test and see what this can handle. Thank you so very much @Chman for putting this together!!
     
  11. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    This line pops an error and yet it works ? What's the error exactly ?
    Let me know how it goes :)
     
  12. rebit

    rebit

    Joined:
    Nov 13, 2014
    Posts:
    133
    I wanna say thank you again Chman. I used the SMAA on my last 3D study movie.

     
    Last edited: May 31, 2015
    AdamGoodrich likes this.
  13. Trigve

    Trigve

    Joined:
    Mar 17, 2013
    Posts:
    139
    Hi,
    I just found this thread and want to try your stuff.

    If I use it on the camera, which only clears the depth buffer, the camera render is upside down.

    Do you know where could be the problem?

    Thanks
     
  14. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Yep, I think I forgot to add support for the good old directx screen flipping thing. I'll fix it soon, thanks for the report.
     
    xpack3 likes this.
  15. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Fixed in the latest commit ! Let me know if it works better.

    While testing I also found a slight loss of AA quality in OpenGL compared to DirectX 11 in some extreme cases, I'll have to investigate.
     
    Last edited: Jun 2, 2015
  16. Trigve

    Trigve

    Joined:
    Mar 17, 2013
    Posts:
    139
    Ok it is working now, thanks ;)
     
    Chman likes this.
  17. khos85

    khos85

    Joined:
    Jul 21, 2013
    Posts:
    541
    Hi, will this work in Unity free V4.6?
     
  18. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    No, sorry.
     
  19. Jefemcownage

    Jefemcownage

    Joined:
    May 29, 2012
    Posts:
    8
    How do you enable super sampling?
     
  20. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    You don't. It's SMAA, not Supersampling :)
     
  21. eskovas

    eskovas

    Joined:
    Dec 2, 2009
    Posts:
    1,373
    Hello :)
    I finally tried this SMAA and i have to say it's a huge improvement over FXAA. No more blurry textures :D

    Here's a few comparison screenshots i made using this SMAA:

    smaa1.png smaa2.png

    (Most impressive :p )
    smaa3.png

    Awesome job on this AA :)

    Edit: Be sure to see the screenshots with their real size and not de-scaled
     
    chelnok, Deleted User and Chman like this.
  22. chasepettit

    chasepettit

    Joined:
    Oct 23, 2012
    Posts:
    42
    Really nice work on this. Looks great in comparison to the standard asset FXAA.
     
  23. Baldinoboy

    Baldinoboy

    Joined:
    Apr 14, 2012
    Posts:
    1,526
    Thank you so much @Chman. This is an amazing improvement. Really helps with the nature scenes.
     
  24. Zeblote

    Zeblote

    Joined:
    Feb 8, 2013
    Posts:
    1,102
    Amazing!

    Any chance you'll get to the temporal version soon?
     
  25. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    No, not until Unity implements a way to get the previous modelview matrix, which is needed to create a velocity buffer.

    Right now if you want access to the modelview matrix from the last frame you need to implement it yourself. It's quite easy but it means that you'll have to add a component to every dynamic object in your scene. And I don't want that, it's painful for the user. A proper AA solution should be as simple as dropping a single component on your camera, not manually adding tiny components all over the place (which comes with a speed malus and you can easily forget game objects).

    So unless there's a massive demand and people are ready to pollute their scene with components, I won't implement the temporal variant until there's a better way to do it :)
     
    xpack3 likes this.
  26. Zeblote

    Zeblote

    Joined:
    Feb 8, 2013
    Posts:
    1,102
    By dynamic objects you mean stuff that moves in the world? I think most scenes have few of those... so it could be a temp solution until unity adds the needed things which is going to take forever :D

    You could have an editor script to automagically add the support components to all objects not marked as static or something to make it easy :)
     
    xpack3 likes this.
  27. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Yeah, stuff that moves (via scripts, physics, animations, bones, trees, grass, anything not visually static) :)

    I thought about automatically adding the component to non-static objects but it's not a viable solution. Too many edge cases and that would result in unnecessary computations.

    It's fun to hack things just so "they work okay-ish", but my free time isn't unlimited (unfortunately) and I'd rather use it to build something clean and stable instead.
     
    xpack3, Zeblote and xenius like this.
  28. Zeblote

    Zeblote

    Joined:
    Feb 8, 2013
    Posts:
    1,102
    :(

    Am I understanding it correctly that the t2x version would get rid of these artifacts on the unity labs demo?



    The white dots on the edges and the line where the doors meet flash/change every frame when the camera moves and it's horribly distracting to me
     
  29. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    No, you'll still see aliasing in this cases. It's called "specular aliasing" and it's quite annoying. As far as I know, to this day the only AA technique good enough to handle this is... Supersampling (higher than 2x, massive performance hit). Nvidia's TXAA has the same issue although it's a bit less visible because it's a bit more blurry.

    So... No. Temporal AA isn't a miracle solution :p Supersampling x2 on top of SMAA 1x is almost perfect IMO but it's not cheap (at least it's cheaper than Supersampling x4 and up).

    Or if you're looking for a quick and dirty solution... Blur the whole screen and be done with it :D
     
    xpack3 likes this.
  30. Zeblote

    Zeblote

    Joined:
    Feb 8, 2013
    Posts:
    1,102
    Why doesn't unreal engine have this problem? At least I've never seen it on their demo scenes
     
  31. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Because of their temporal AA implementation. It smears most of the details and is quite frankly blurry in the distance (mid / far). Do a search on the UE4 forums, you'll find plenty of topics on the subject and people looking for alternatives :)

    It also comes down to your material setup. If you put reflections and high-specularity on everything, you're looking for troubles...
     
    xpack3 likes this.
  32. DennG

    DennG

    Joined:
    Dec 5, 2013
    Posts:
    158
    Someone just released Supersampling on the Asset Store:
    http://forum.unity3d.com/threads/re...ling-ssaa-visually-best-anti-aliasing.332628/
    Are you still going the share yours?

    About the specular aliasing.. that's one annoying problem.
    Im facing it in my current scene.
    Too bad that there is no proper way to solve it.
     
    Last edited: Jun 16, 2015
  33. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
  34. xenius

    xenius

    Joined:
    Sep 30, 2010
    Posts:
    523
    Wow.. wrapped behind a dll and everything. Probably to hide the fact that it's like... 10 lines of code. :p
     
    twobob and ZJP like this.
  35. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Yep, that's the plan. Right now it's tightly integrated into a sample scene so I need to isolate it and clean/document the code. It's actually a bit more than a simple Supersampling system as it makes working with multi-camera setups easier and serves as a workaround for this Unity bug and this one as well.

    But I have a lot to do these days so I can't give an ETA.

    Quick screenshot :
    2015_06_17_00_03_15.png

    It looks glorious but comes with a performance hit... Although SSAA 2x + SMAA 1x works great and is "cheap" enough on mid to high-end systems :)
     
    Deleted User, overthere and DennG like this.
  36. xenius

    xenius

    Joined:
    Sep 30, 2010
    Posts:
    523
    O man.. that's so gorgeous. Question: where in the 'post effects stack' would this effect be placed (once completed).
     
  37. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Where you want it to be applied, it's your choice. Any post-fx before it will be supersampled, whereas effects placed after it will be applied to the downscaled image. So if you have an expensive image effect that wouldn't really benefit from supersampling, put it after the downsampling pass to save a lot of GPU cycles.
     
    overthere likes this.
  38. Zeblote

    Zeblote

    Joined:
    Feb 8, 2013
    Posts:
    1,102
    Supersampling 2x means 2x the total pixels or 2x resolution?
     
  39. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Depends on your definition... For some people it means twice the number of pixels, for others 2x is the width/height multiplier (so 4 times the number of pixels). And others speak in %, i.e. 150% would be 1.5x multiplier on width and height.

    It would probably be easier to use a WxH terminology (width & height multipliers).
     
    Baldinoboy likes this.
  40. jcarpay

    jcarpay

    Joined:
    Aug 15, 2008
    Posts:
    561
    Gorgeous indeed!
     
  41. xenius

    xenius

    Joined:
    Sep 30, 2010
    Posts:
    523
    Awesome. I imagine in most cases, simply supersampling the base image would be enough, considering one wouldn't want to say.. do super-sampled SSAO most likely, and that should generally be the next effect (or SSR) on the stack.
     
  42. Stormbreaker

    Stormbreaker

    Joined:
    Aug 15, 2012
    Posts:
    161
    Can't wait for this! Looks great.
     
  43. Stormbreaker

    Stormbreaker

    Joined:
    Aug 15, 2012
    Posts:
    161
    Chman, any updates on this asset? Working on a trailer at the moment and would be great to have it properly anti-aliased.
     
    DennG likes this.
  44. RockSPb

    RockSPb

    Joined:
    Feb 6, 2015
    Posts:
    112
  45. Charkes

    Charkes

    Joined:
    Apr 17, 2013
    Posts:
    228
    Just tested your SMAA, results are really great so far, can't wait your supersampling solution!

     
    SAOTA, minhdaubu2 and DennG like this.
  46. carmine

    carmine

    Joined:
    Jan 4, 2012
    Posts:
    394
    Tried on Mac. Unity v4.6.x

    - There is a spot in your code where it complains about converting float to int (I fixed that myself).
    - When I try to use it, I get this error:
    Invalid pass number for Graphics.Blit
    UnityEngine.Graphics:Blit(Texture, RenderTexture, Material, Int32)
    Smaa.SMAA:OnRenderImage(RenderTexture, RenderTexture) (at Assets/SMAA-Unity-master/SMAA/Scripts/SMAA.cs:236)
     
  47. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Hey @carmine !

    The error you're getting is because the shader won't compile on Unity 4.x. This asset is for Unity 5.x only and I don't really plan on porting it to Unity 4, sorry :oops:
     
  48. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,467
    Hey Chman... just added SMAA to my project... it's LOVELY :). And I just put the SMAA on the very top of the stack... man, if you are taking requests, I would love to see you attempt an optimised vignette effect...

    EDIT: Sorry not vignetting... Chromatic Aberration... the Unity version is too heavy
     
    Last edited: Jul 12, 2015
    Stormbreaker likes this.
  49. srmojuze

    srmojuze

    Joined:
    Mar 18, 2013
    Posts:
    127
    Testing now on OSX as well as DirectX. Very nice SMAA.

    Question: Can you explain (briefly) the difference between Luma and Chroma SMAA?

    Thanks much.
     
  50. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    The "Simple" aberration mode is quite fast already (on desktop at least). What's slowing it down is probably the fact that it comes with the vignetting effect (+ blur) and it requires two passes. If you don't need vignetting you could extract the chromatic aberration code and do it in a single pass.

    Or, if you want even more speed at the expense of realism, something like a RGB split effect would do the trick even though it's not a "true" chromatic aberration. See the Colorful asset in my signature ;)
    Luma & Color are used for the first pass, edge detection.

    Luma is a generally a bit faster than Color, it works on pixel luminosity (think of it as working on a grey-scaled version of the render). It can miss a few edges because it only takes in account luminosity, not color.

    Color, on the other hand, should detect more edges as it works on color instead of luminosity but it's a tiny bit slower than Luma.

    I almost always use Color unless I work with a black & white render. The speed difference is negligible and it leads to better results in most cases.
     
    twobob, xpack3, overthere and 3 others like this.