Message #2587968 - Error in shader compilation: info: %s %s %s

Kind #970: Error in shader compilation: info: %s %s %s

Game: Grand Theft Auto®: Chinatown Wars™ (ULUS10490_1.01)

Error in shader compilation: info: 0:1: F0002: Mali-400 GP register allocation failed for vertex shader.
            Please contact [email protected] with the shader causing
            the problem, along with this error message.
            Mali online shader compiler r10p0-00rel0 [Revision 96995].

01f31191:00000b19 HWX C T N LM Tex Light: 0: c:1 t:0 1: c:1 t:2 2: c:1 t:0 3: c:1 t:0 MatUp:3 
#version 100
precision highp float;
attribute vec3 position;
attribute mediump vec3 normal;
attribute vec2 texcoord;
attribute lowp vec4 color0;
uniform mat4 u_proj;
uniform mat4 u_world;
uniform mat4 u_view;
uniform vec4 u_uvscaleoffset;
uniform vec3 u_lightpos0;
uniform lowp vec3 u_lightambient0;
uniform lowp vec3 u_lightdiffuse0;
uniform lowp vec3 u_lightspecular0;
uniform vec3 u_lightpos1;
uniform mediump vec3 u_lightatt1;
uniform mediump vec3 u_lightdir1;
uniform mediump vec2 u_lightangle_spotCoef1;
uniform lowp vec3 u_lightambient1;
uniform lowp vec3 u_lightdiffuse1;
uniform lowp vec3 u_lightspecular1;
uniform vec3 u_lightpos2;
uniform lowp vec3 u_lightambient2;
uniform lowp vec3 u_lightdiffuse2;
uniform lowp vec3 u_lightspecular2;
uniform vec3 u_lightpos3;
uniform lowp vec3 u_lightambient3;
uniform lowp vec3 u_lightdiffuse3;
uniform lowp vec3 u_lightspecular3;
uniform lowp vec4 u_ambient;
uniform lowp vec4 u_matspecular;
uniform lowp vec3 u_matemissive;
uniform lowp vec4 u_matambientalpha;
uniform highp vec4 u_cullRangeMin;
uniform highp vec4 u_cullRangeMax;
varying lowp vec4 v_color0;
varying lowp vec3 v_color1;
varying mediump vec3 v_texcoord;
void main() {
  vec3 worldpos = (u_world * vec4(position.xyz, 1.0)).xyz;
  mediump vec3 worldnormal = normalize((u_world * vec4(normal, 0.0)).xyz);
  vec4 viewPos = u_view * vec4(worldpos, 1.0);
  vec4 outPos = u_proj * viewPos;
  lowp vec4 lightSum0 = u_ambient * color0 + vec4(u_matemissive, 0.0);
  lowp vec3 lightSum1 = vec3(0.0);
  vec3 toLight;
  lowp vec3 diffuse;
  float distance;
  lowp float lightScale;
  mediump float ldot;
  lowp float angle;
  toLight = u_lightpos0;
  ldot = dot(toLight, worldnormal);
  diffuse = (u_lightdiffuse0 * color0.rgb) * max(ldot, 0.0);
  if (ldot >= 0.0) {
    ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);
    if (u_matspecular.a == 0.0) {
      ldot = 1.0;
    } else {
      ldot = pow(max(ldot, 0.0), u_matspecular.a);
    }
    if (ldot > 0.0)
      lightSum1 += u_lightspecular0 * u_matspecular.rgb * ldot ;
  }
  lightSum0.rgb += (u_lightambient0 * color0.rgb + diffuse);
  toLight = u_lightpos1 - worldpos;
  distance = length(toLight);
  toLight /= distance;
  ldot = dot(toLight, worldnormal);
  angle = length(u_lightdir1) == 0.0 ? 0.0 : dot(normalize(u_lightdir1), toLight);
  if (angle >= u_lightangle_spotCoef1.x) {
    lightScale = clamp(1.0 / dot(u_lightatt1, vec3(1.0, distance, distance*distance)), 0.0, 1.0) * (u_lightangle_spotCoef1.y == 0.0 ? 1.0 : pow(angle, u_lightangle_spotCoef1.y));
  } else {
    lightScale = 0.0;
  }
  diffuse = (u_lightdiffuse1 * color0.rgb) * max(ldot, 0.0);
  if (ldot >= 0.0) {
    ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);
    if (u_matspecular.a == 0.0) {
      ldot = 1.0;
    } else {
      ldot = pow(max(ldot, 0.0), u_matspecular.a);
    }
    if (ldot > 0.0)
      lightSum1 += u_lightspecular1 * u_matspecular.rgb * ldot  * lightScale;
  }
  lightSum0.rgb += (u_lightambient1 * color0.rgb + diffuse) * lightScale;
  toLight = u_lightpos2;
  ldot = dot(toLight, worldnormal);
  diffuse = (u_lightdiffuse2 * color0.rgb) * max(ldot, 0.0);
  if (ldot >= 0.0) {
    ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);
    if (u_matspecular.a == 0.0) {
      ldot = 1.0;
    } else {
      ldot = pow(max(ldot, 0.0), u_matspecular.a);
    }
    if (ldot > 0.0)
      lightSum1 += u_lightspecular2 * u_matspecular.rgb * ldot ;
  }
  lightSum0.rgb += (u_lightambient2 * color0.rgb + diffuse);
  toLight = u_lightpos3;
  ldot = dot(toLight, worldnormal);
  diffuse = (u_lightdiffuse3 * color0.rgb) * max(ldot, 0.0);
  if (ldot >= 0.0) {
    ldot = dot(normalize(toLight 

Status: new. 3 hits from 2024-12-08 16:37:15 to 2025-12-03 18:32:35 UTC. Message #2587968.

Individual reports are stored since 2026-11-12, the newest 100 per message; none for this message yet. Older hits only exist as the counters above. Hover a cell for details.