I think it’s sculpted : in comparison to the low poly there are additional geometry (the horns on the head by example) that can’t be the result of a normal/bump map.
Displacement, it’s possible, but for displacement to produce any result you would need to subdivide the low poly a lot to produce the mesh density required for a displacement map to produce very detailled result like on the screenshot.
Probably used Zbrush to be able to paint on a high poly sculpt, as i don’t think Blender viewport performance can allow to paint with your system slowing so much it will be unworkable.
Using Blender what i would do is :
-
make a low poly model.
-
unwrap it
-
go to sculpt mode and sculpt using Multires modifier.
-
when satisfied with the sculpt, bake the normal and ambient occlusion of the higher multires level to the lowest one so you obtain a normal map (that will use the light to trick the eyes into having your low poly being detailled) and an ambient oclusion map (that would serve as a nice texture basis/overlay)
-
go to Texture Paint mode and paint, save your painted texture.
-
use GIMP/PS/whatever image editor and load your painted texture, and add the ambient occlusion one as an overlay.
-
as an alternative to Blender sculpt mode, you can export your low poly model to OBJ format (be sure there’s no non-manifold part before) and import the OBJ into Sculptris by example.
Then once finished with the sculpting , export the result into OBJ and import in Blender so you can either retopo or use a shrinkwrap modifier to have your original low poly trying to fit the high poly sculpt space.
Then bake normal and ambient occlusion.