Un poco de teoría sobre esto: Según he leido, a partir del Sim City Societies EA decidió cambiar el modo de redenderizado de las sombras en las tarjetas ATI, y desde ese momento se ven con un nivel de detalle peor, extendiendose el bulo de que era un bug de la propia tarjeta. Añado además, que las gráficas Intel usan el mismo redenderizado que las NVIDIA.
¡Pues no vamos a ser menos con nuestras gráficas de 150€ con la crisis que hay! Para arreglar esto vamos a cambiar el texto de un archivo. Aviso, haced una copia de seguridad por si las moscas, pero es efectivo.
Teneis que iros a la ruta:
S.O de 32 bits
Archivos de programa\Electronic Arts\Los Sims 3 o el últipo pack de expansión/accesorios instalado\Game\Bin\GraphicsRules.sgr
S.0 de 64 bits
Archivos de programa(x86)\Electronic Arts\Los Sims 3 o el últipo pack de expansión/accesorios instalado\Game\Bin\GraphicsRules.sgr
Abrid el archivo graphics rules con el bloc de notas o notepad, y buscad un apartado así:
elseif (match("${cardVendor}", "ATI"))
if (match("${cardName}", "*HD 29?0*") or match("${cardName}", "*HD 36?0*") or match("${cardName}", "*HD 38?0*") or match("${cardName}", "*HD 4??0*") or match("${cardName}", "*HD 5??0*") or match("${cardName}", "*V77?0*") or match("${cardName}", "*V87?0*"))
seti cardLevel $cardLevelUber
seti isCardMatched true
elseif (match("${cardName}", "*x18??*") or match("${cardName}", "*x19??*") or match("${cardName}", "*HD 31?0*") or match("${cardName}", "*V3600*") or match("${cardName}", "*V37?0*") or match("${cardName}", "*V5600*") or match("${cardName}", "*V5700*") or match("${cardName}", "*V7200*") or match("${cardName}", "*V73?0*") or match("${cardName}", "*V7400*") or match("${cardName}", "*V7600*") or match("${cardName}", "*V86?0*"))
seti cardLevel $cardLevelHigh
seti isCardMatched true
elseif (match("${cardName}", "*x14??*") or match("${cardName}", "*x850*") or match("${cardName}", "*x15??*") or match("${cardName}", "*HD 34??*") or match("${cardName}", "*x16??*") or match("${cardName}", "*HD 23?0*") or match("${cardName}", "*HD 24?0*") or match("${cardName}", "*HD 26?0*"))
seti cardLevel $cardLevelMedium
seti isCardMatched true
elseif (match("${cardName}", "*9800*") or match("${cardName}", "*x600*") or match("${cardName}", "*HD 32??*") or match("${cardName}", "*x7?0*") or match("${cardName}", "*x8?0*") or match("${cardName}", "*FireGL X2*") or match("${cardName}", "*FireGL X3*") or match("${cardName}", "*V3200*") or match("${cardName}", "*V33?0*") or match("${cardName}", "*V3400*") or match("${cardName}", "*V5000*") or match("${cardName}", "*V5100*") or match("${cardName}", "*V5200*") or match("${cardName}", "*V7100*"))
seti cardLevel $cardLevelLowmedium
seti isCardMatched true
elseif (match("${cardName}", "*Rage*") or match("${cardName}", "*XPress*") or match("${cardName}", "*7?00*") or match("${cardName}", "*8?00*") or match("${cardName}", "*95?0*") or match("${cardName}", "*96?0*") or match("${cardName}", "*97?0*") or match("${cardName}", "*x200*") or match("${cardName}", "*x300*") or match("${cardName}", "*x5?0*") or match("${cardName}", "*x10?0*") or match("${cardName}", "*x11?0*") or match("${cardName}", "*x12?0*") or match("${cardName}", "*x13??*") or match("${cardName}", "*FireGL T2*") or match("${cardName}", "*FireGL Z1*") or match("${cardName}", "*FireGL X1*") or match("${cardName}", "*V3100*"))
seti cardLevel $cardLevelLow
seti isCardMatched true
else
seti cardLevel $cardLevelUber
seti isCardMatched false
endif
setProp $ConfigGroup RenderShadowMode 1
setProp $ConfigGroup ShadowMapForceDF16Available 0
if ($osMajorVersion >= 6 and versionLessThan("7.14.0010.0630", "${driverVersion}") and not versionLessThan("7.14.0010.0636", "${driverVersion}"))
setProp $ConfigGroup ReportOldGraphicsDriver 1
endif
if ($disableMacAA)
if (match("${cardName}", "*X16??*") or match("${cardName}", "*X19??*"))
setProp $ConfigGroup DisallowEdgeSmoothing 1
endif
endif
Bien, una vez localizado, usad enter para separarlo del resto del texto tanto por encima como por debajo. Ahora, sustituid eso por esto:
elseif (match("${cardVendor}", "ATI"))
if (match("${cardName}", "*HD 29?0*") or match("${cardName}", "*HD 36?0*") or match("${cardName}", "*HD 38?0*") or match("${cardName}", "*HD 4??0*") or match("${cardName}", "*HD 5??0*") or match("${cardName}", "*V77?0*") or match("${cardName}", "*V87?0*"))
seti cardLevel $cardLevelUber
seti isCardMatched true
elseif (match("${cardName}", "*x18??*") or match("${cardName}", "*x19??*") or match("${cardName}", "*HD 31?0*") or match("${cardName}", "*V3600*") or match("${cardName}", "*V37?0*") or match("${cardName}", "*V5600*") or match("${cardName}", "*V5700*") or match("${cardName}", "*V7200*") or match("${cardName}", "*V73?0*") or match("${cardName}", "*V7400*") or match("${cardName}", "*V7600*") or match("${cardName}", "*V86?0*"))
seti cardLevel $cardLevelHigh
seti isCardMatched true
elseif (match("${cardName}", "*x14??*") or match("${cardName}", "*x850*") or match("${cardName}", "*x15??*") or match("${cardName}", "*HD 34??*") or match("${cardName}", "*x16??*") or match("${cardName}", "*HD 23?0*") or match("${cardName}", "*HD 24?0*") or match("${cardName}", "*HD 26?0*"))
seti cardLevel $cardLevelMedium
seti isCardMatched true
elseif (match("${cardName}", "*9800*") or match("${cardName}", "*x600*") or match("${cardName}", "*HD 32??*") or match("${cardName}", "*x7?0*") or match("${cardName}", "*x8?0*") or match("${cardName}", "*FireGL X2*") or match("${cardName}", "*FireGL X3*") or match("${cardName}", "*V3200*") or match("${cardName}", "*V33?0*") or match("${cardName}", "*V3400*") or match("${cardName}", "*V5000*") or match("${cardName}", "*V5100*") or match("${cardName}", "*V5200*") or match("${cardName}", "*V7100*"))
seti cardLevel $cardLevelLowmedium
seti isCardMatched true
elseif (match("${cardName}", "*Rage*") or match("${cardName}", "*XPress*") or match("${cardName}", "*7?00*") or match("${cardName}", "*8?00*") or match("${cardName}", "*95?0*") or match("${cardName}", "*96?0*") or match("${cardName}", "*97?0*") or match("${cardName}", "*x200*") or match("${cardName}", "*x300*") or match("${cardName}", "*x5?0*") or match("${cardName}", "*x10?0*") or match("${cardName}", "*x11?0*") or match("${cardName}", "*x12?0*") or match("${cardName}", "*x13??*") or match("${cardName}", "*FireGL T2*") or match("${cardName}", "*FireGL Z1*") or match("${cardName}", "*FireGL X1*") or match("${cardName}", "*V3100*"))
seti cardLevel $cardLevelLow
seti isCardMatched true
else
seti cardLevel $cardLevelUber
seti isCardMatched false
endif
setProp $ConfigGroup RenderShadowMode 2
setProp $ConfigGroup ShadowMapAllowNullColor 1
if ($osMajorVersion >= 6 and versionLessThan("7.14.0010.0630", "${driverVersion}") and not versionLessThan("7.14.0010.0636", "${driverVersion}"))
setProp $ConfigGroup ReportOldGraphicsDriver 1
endif
if ($disableMacAA)
if (match("${cardName}", "*X16??*") or match("${cardName}", "*X19??*"))
setProp $ConfigGroup DisallowEdgeSmoothing 1
endif
endif
Y al final volved a unir el texto como antes, para que no queden espacios entre el nuevo texto y el resto.
Guardais, cargais el juego y...

La alegría invade mi cuerpo. ¡Derrotamos al servicio técnico de AMD y al de EA! Ya no nos dará depresión cuando venga Skell con sus supergráficos y su legacy, si no que todos reiremos y seremos felices en comunidad y armonía!

Quiero agradecer a todos vuestra ayuda y paciencia con esto.

Fuente: http://forum.thesims3.com/jforum/posts/list/300915.page
PD: Digo solución temporal, aunque el resultado es inmejorable, hasta que EA saque un parche que lo arregle oficialmente.