Project

General

Profile

Activity

From 2013-11-16 to 2013-11-29

2013-11-29

21:21 Revision 636a390d (github): Cleanup
skyjake
20:44 Revision c7f5e3e8 (github): Refactor|Stereo 3D: Use a depth/stencil texture for Oculus Rift
This allows lens flare occlusion to work in VR mode 9. skyjake
17:02 Revision ac0c06ea (github): Renderer|FX|libgui: Apply target’s active rectangle when accessing depth values
The shader has no visibility to the used GL viewport, so we must
do the transformation manually.
skyjake
16:32 Revision 6b523f73 (github): Refactor|libgui|GLTarget: Allow querying the attached depth texture
The view may be rendered to any target, so there must be a way to
access the currently used depth texture.
skyjake
13:56 Revision 9ae5d689 (github): Refactor|libgui|GLTexture: Use GLPixelFormat
skyjake
13:55 Revision af04668e (github): Refactor|libgui|Image: Use GLPixelFormat
skyjake
13:54 Revision 4696bf0f (github): libgui: Added GLPixelFormat (replaces Image::GLFormat)
skyjake
12:36 Revision 2553dc27 (github): Renderer|FX: Check 5 depth points for partial occlusion of a light
Could be improved further with resolution independence, and/or
taking into account the radius of the light source.
skyjake
12:01 Revision 4969d46c (github): Renderer|FX: Use depth buffer to occlude lens flares
Work in progress… skyjake
12:00 Revision cb6fd6cb (github): libgui|Canvas: Working on manual frame buffer mode
Canvas needs to support rendering depth values to a texture.
To accomplish this, the FBO must be configured with suit...
skyjake
11:57 Revision 896208ef (github): libgui|GLState|GLUniform: Prepare for deletion of assets
GLState must be aware that a render target might be deleted while
it is the current target.
GLUniform must be aware ...
skyjake
11:56 Revision 70ac79b0 (github): libgui|GLTexture: Setting up a depth+stencil texture
skyjake
11:55 Revision 46dbad40 (github): libgui|GLTarget: Reconfiguring an existing GLTarget instance
skyjake
09:09 Revision bf6f5e16 (github): Merge branch 'master' into resourcesystem
danij
09:03 Revision 60a8fa24 (github): Fixed|Renderer: BspLeaf::MissingClusterError drawing a particle model
Particle models are drawn from the interpolated origin, which, may
lie in a degenerate BSP leaf even though the actua...
danij

2013-11-28

16:48 Revision 23a7552b (github): Renderer|FX|libgui: Working on accessing the depth buffer from a shader
skyjake
16:48 Revision 57f2860b (github): Fixed: Abnormal shutdown causes a crash when setting up busy mode
During an abnormal shutdown, we shouldn’t allow busy mode at all.
Also, if all windows are closed, it means GL needs ...
skyjake
08:46 Revision 8727a454 (github): Renderer|FX: Revised “star” flare iamge
skyjake

2013-11-27

21:01 Revision 899f7d37 (github): Renderer|FX: Revised the “burst” flare image, improved arrangement
skyjake
18:56 Revision 4c4e2cbf (github): Merge branch 'master' into resourcesystem
danij
18:54 Revision 4bd53340 (github): Merge branch 'master' of github.com:skyjake/Doomsday-Engine
danij
18:54 Revision dde557ba (github): Homepage|Style: Added support for high-DPI displays; improved forum font scaling
The homepage now rescales responsively for high-DPI and the margin
around the page is removed on smaller-display devi...
danij
18:50 Revision 1d37aa70 (github): Homepage|Style: Added support for high-DPI displays; improved forum font scaling
The homepage now rescales responsively for high-DPI and the margin
around the page is removed on smaller-display devi...
danij
12:41 Revision 4896f55d (github): Merge branch 'master' into low-latency-input
skyjake
12:39 Revision c8ea88ee (github): Merge branch 'master' into gl2-lensflare
skyjake
12:37 Revision 96531777 (github): Renderer|FX: Individual flare colors
skyjake
10:48 Revision 9d58223e (github): Renderer|FX: Using the “testlight” command to adjust test light params
skyjake

2013-11-26

20:42 Revision fe0393d2 (github): Cleanup
skyjake
20:38 Revision 545a5dfa (github): Renderer|FX: Working on lens flare arrangement; added angle condition
skyjake
19:02 Revision ceed0534 (github): Builder|Fixed: Handle error situation counting words in a log file
Also, the 'saucy' builder is now instructed to make a source package
for the PPA.
skyjake
12:37 Revision 13f1fcc1 (github): Refactor|Resources: ResourceSystem has direct ownership of material resource schemes
TODO: Cleanup danij
09:46 Revision d2e48841 (github): Refactor|Resources|Client: ResourceSystem has direct ownership of font resource schemes
TODO: Cleanup danij
07:34 Revision 5eaed479 (github): Refactor|Resources: ResourceSystem has direct ownership of texture resource schemes
TODO: Cleanup danij

2013-11-25

21:55 Revision 25cc46ef (github): Resources: Cleanup
danij
21:43 Revision 66a0adf2 (github): Refactor|Resources: ResourceSystem has ownership of texture variant specs
danij
21:18 Revision d6cef243 (github): Renderer|FX: Working on the arrangement of flares
Todo: Factor in the angle from the view center.
Todo: Add more flares.
skyjake
15:04 Revision 94bbf11f (github): Windows: Fix build (header inclusion order)
danij
14:53 Revision 08ebfa87 (github): Merge branch 'master' into resourcesystem
danij
14:52 Revision 89c3a228 (github): Homepage: Removed control panel from the engine feature summary; cleanup
danij
14:25 Revision 4a41a8fb (github): Homepage|Forums|Style: Use Open Sans for all text
danij
14:13 Revision a03e4d99 (github): Homepage|Style: Target DPI is device DPI
danij
13:57 Revision 3743991f (github): Homepage|Style: Use Open Sans for all text
danij
12:55 Revision 8301181d (github): Renderer|FX: Adding multiple flares, determining mirroring in shader
It is quite trivial to do flare mirroring after projection. skyjake
12:12 Revision cee903fd (github): Fixed: Benign compiler warning (init order)
skyjake
12:10 Revision 9346404e (github): Fixed|Updater: Downloading files from SourceForge
Apparently SourceForge now requires that the User-Agent is specified
in the GET request.
skyjake
12:10 Revision 7867443b (github): Fixed|Updater: Notification has an overly large shadow
skyjake
12:09 Revision 434c03fe (github): Fixed|Updater: Downloading files from SourceForge
Apparently SourceForge now requires that the User-Agent is specified
in the GET request.
skyjake
12:01 Revision d3371dd9 (github): Fixed|Updater: Notification has an overly large shadow
skyjake
09:54 Revision c78558d1 (github): UI|Client: Use kd-tree allocator in root widget’s atlas
skyjake
09:32 Revision 532bd753 (github): Fixed|Builder|Ubuntu: libncurses-dev is required for building
skyjake
08:59 Revision ad621c34 (github): Builder|Ubuntu: Create a separate source package for Saucy
The package version contains a distribution-specific part so
that they may coexist in the PPA.
skyjake

2013-11-24

20:40 Revision 8fc7743b (github): Renderer|FX: Use the KD-tree allocator for flare atlas
The more sophisticated algorithm allows the images to fit into a
smaller space.
skyjake
20:29 Revision 08626690 (github): libgui: Added KdTreeAtlasAllocator
KdTreeAtlasAllocator uses a 2D BSP tree to allocate space from an
atlas. Optimization is done by allocating the bigge...
skyjake

2013-11-23

18:14 Revision 78142e78 (github): Renderer|FX: Added a basic set of lens flare textures
skyjake
18:14 Revision 07f95ae6 (github): Client|LogWidget: Avoid a race condition in the log sink
It was possible that when entries are added into the MemoryLogSink,
there was a situation where an invalid index was ...
skyjake
11:10 Revision 3b94d3af (github): Merge branch 'master' into resourcesystem
Conflicts:
doomsday/client/src/clientapp.cpp
danij

2013-11-22

18:56 Revision 6d623c0b (github): libdeng2|Bank: Print a wait time only if item had to be waited on
skyjake
17:57 Revision 34b52038 (github): Merge branch 'master' into gl2-lensflare
skyjake
17:50 Revision 28980a04 (github): Fixed|ClientApp: Subsystem deletion order
When the appearance editor is open, the window system is dependent
on the settings in the render subsystem (ClientWin...
skyjake
17:41 Revision 26c07243 (github): UI|Client: Black background until app startup is complete
Allows for a cleaner launch experience when the DE background is not
showing.
skyjake
17:23 Revision f9de783d (github): UI|Client: Draw post-busy transition in BusyWidget
This commit fixes the issue where the transition was not drawn
correctly when the sidebar is open. Previously the dra...
skyjake
14:18 Revision 46958aa0 (github): Cleanup
skyjake
13:42 Revision 04d2777f (github): Cleanup
skyjake
13:41 Revision 46270152 (github): libdeng2|Bank: Adjusted log levels of messages from Bank
Even at debug level it is not that helpful to output more than one
message per object load.
skyjake
13:40 Revision bb0af825 (github): libdeng2|Widgets: Added method for querying RuleRectangle’s size in integer
skyjake
09:49 Revision 73d1db24 (github): UI|Client: Further adjusted shadow of ProgressWidget text
Better results could be produced using a shadow shader. skyjake
09:48 Revision d3c33e14 (github): Debug|libdeng2|Log: Added assert for possible out-of-range list access
skyjake
08:57 Revision cea76872 (github): Fixed|Builder: Unicode in commit author fields
skyjake
01:46 Revision f04871d4 (github): Windows: Fixed build (windows.h include order)
danij

2013-11-21

23:08 Revision 9f20a092 (github): Merge branch 'master' into resourcesystem
Conflicts:
doomsday/client/src/gl/gl_draw.cpp
doomsday/client/src/render/rend_main.cpp
danij
20:45 Revision eba29697 (github): Merge branch 'master' into gl2-lensflare
skyjake
20:39 Revision c9da4dbc (github): Refactor|Client: Renamed ContentTransform to WindowTransform
skyjake
18:28 Revision 0d221e5d (github): Merge branch 'master' into low-latency-input
skyjake
18:25 Revision 7ab8002d (github): Merge branch 'master' into gl2-lensflare
skyjake
18:17 Revision e0b19b08 (github): Merge branch 'oculus-rift'
skyjake
18:06 Revision 6f1c6eb2 (github): UI|Client: Don’t recreate canvas during busy mode
It appears to be a little risky to recreate the Canvas during busy
mode’s secondary event loop (crashes in OS X somet...
skyjake
18:04 Revision 1e739771 (github): UI|Client: Adjusted shadow of ProgressWidget text
skyjake
17:35 Revision 198854a2 (github): Refactor|Resources: Continued remodeling texture variant specifications
Renamed as TextureVariantSpec and removed an unnecessary internal
abstraction.
danij
16:33 Revision 941bd26e (github): Refactor|Resources: Began remodeling texture variant specification management
Completed initial C++ translation. danij
14:43 Revision fbb29888 (github): Refactor|GL: Cleanup
danij
14:04 Revision 6b421108 (github): Refactor|GL: Moved cvars and ccmds from gl_texmanager to rend_main
Todo for later: Find a better home for these. Most are presently only
used by resources loaded for the map renderer, ...
danij
12:59 Revision 25043b81 (github): Refactor|GL: Continued splitting up gl_texmanager.h/cpp
danij
12:27 Revision 443217c5 (github): Refactor|GL: Moved texturecontent_t related uploads to texturecontent.cpp
gl_texmanager.h/cpp now contains the following:
- texture variant spec management
- misc legacy resource management l...
danij
12:03 Revision 7dcdc50c (github): Refactor|GL: gl_texmanager.h no longer depends on sys_opengl.h
danij
11:46 Revision ec70eba8 (github): Refactor|Client: Continued splitting up gl_texmanager.h/cpp
danij
11:04 Revision 5b82e143 (github): Refactor: Moved all GL_*ForVariantSpec functions to texturevariantspec.h
danij
11:02 Revision 237f13b8 (github): Merge branch 'oculus-rift' into gl2-lensflare
skyjake
10:53 Revision 3a9bb66c (github): Unix|qmake: Using ccache with gcc
The previous options were only suitable for clang. skyjake
10:52 Revision 8f05c541 (github): Unix|qmake: Using ccache with gcc
The previous options were only suitable for clang. skyjake
10:05 Revision 2f894c5a (github): Refactor: Moved most image loading logics to image.h/cpp
danij
09:40 Revision e32c841d (github): Began unraveling gl/gl_texmanager.h dependencies
danij
09:14 Revision 9d374c7b (github): libdeng2|Log: Use (v) to identify verbose messages
skyjake
09:02 Revision 2ac6c21b (github): UI|Client: Added shadow behind ProgressWidget’s text
Make it more readable on light backgrounds. skyjake
09:01 Revision 8bf0a1fd (github): Renderer: Cleanup
danij
08:48 Revision 4079b953 (github): Merge branch 'master' into resourcesystem
danij
08:46 Revision 5766fae0 (github): Merge branch 'master' into oculus-rift
skyjake
08:46 Revision d96c7dbc (github): Merge branch 'oculus-rift' into low-latency-input
skyjake
08:45 Revision 50adc0f5 (github): Merge branch 'oculus-rift' into gl2-lensflare
Conflicts:
doomsday/libgui/include/de/gui/opengl.h
skyjake
08:43 Revision 94f58d57 (github): Unix|qmake: Added build option for using ccache
“deng_ccache” now makes the build use ccache for faster compilation. skyjake
08:43 Revision af748260 (github): Unix|qmake: Added build option for using ccache
“deng_ccache” now makes the build use ccache for faster compilation. skyjake
08:35 Revision d316c7af (github): Renderer|Billboard: Cleanup
danij
08:14 Revision 53a82af4 (github): Refactor|Renderer: Moved billboard drawing parameter structs to billboard.h
danij
08:06 Revision 2a120a35 (github): UI|Client: Tweaked appearance of ProgressWidget
skyjake
08:06 Revision c3551c93 (github): Refactor|Client: Renamed GuiWidget::deleteLater()
Avoiding potential conflict with QObject::deleteLater(). skyjake
07:50 Revision 1b9c8220 (github): Renderer: Cleanup
danij
07:40 Revision 76425173 (github): Renderer|Billboard: Cleanup
danij
07:15 Revision 4a89ad15 (github): Refactor|Renderer: Relocated all code which doesn't belong in billboard.cpp/h
danij
06:32 Revision 94148dc7 (github): ResourceSystem: Cleanup
danij
06:08 Revision 4487b091 (github): Refactor: Moved logics for releasing GL textures into ResourceSystem
danij
04:44 Revision bffe4dd3 (github): Refactor|Resources: Moved Rend_CacheForMap() into ResourceSystem
danij
03:46 Revision 4cb513cc (github): Sprite|Resources: To-do comments re future Sprite improvements
danij
03:06 Revision 30adfdaf (github): Sprite|Resources: Cleanup
danij
02:37 Revision da25c636 (github): Refactor|Sprite: Provide readonly access to the Sprite view angle set
danij
02:11 Revision 51e7f8d2 (github): ResourceSystem: Ensure sprite sets are accessed in const mode
Only the ResourceSystem should have write access to the sprite sets.
Creating a new set should happen through the pub...
danij
01:56 Revision 63864cd0 (github): Refactor|ResourceSystem: Use spritenum_t where applicable
danij
01:22 Revision fe57c623 (github): ResourceSystem: Cleanup
danij
01:07 Revision e34613b7 (github): Refactor|ResourceSystem: Cleaned up access to Sprite resources
danij

2013-11-20

23:43 Revision bdebb038 (github): Sprite|Resources: Cleanup
danij
23:21 Revision 68e133d2 (github): Refactor|Sprite|Resources: Cleaned up Sprite representation somewhat
danij
21:44 Revision fd393680 (github): Refactor|Resources: Continued cleaning up Sprite resource initialization
danij
20:07 Revision b5d030d8 (github): Client|UI: Minor improvements for robustness
It is a little bit safer not to immediately delete a widget; better
to always use deleteLater(). Also make sure the c...
skyjake
20:05 Revision 6ebf2840 (github): Fixed|libdeng2|Widget: Crash when notifying a tree
If a widget tree was modified while it was being notified, a crash
could occur because the widget list used for itera...
skyjake
13:41 Revision fb6d16d9 (github): libdeng2|Widget: Ensure containers are accessed in const mode
When there is no need to modify the containers, make sure they aren’t
implicitly copied unnecessarily.
skyjake
12:16 Revision 704c9425 (github): Stereo 3D: Only use a stereo GL format if necessary
Whenever the VR mode changes, the canvas GL format is checked for
possible changes.
skyjake
11:57 Revision d5bd255c (github): Cleanup
skyjake
08:39 Revision f3aa4aaa (github): Fixed|Stereo 3D|qmake: Debug/release build settings
qmake’s own “debug” and “release” CONFIG values don’t work as one
would expect. Always use “deng_debug” instead.
skyjake
08:34 Revision 2a396b45 (github): Merge branch 'oculus-rift' of ssh://github.com/skyjake/Doomsday-Engine into oculus-rift
skyjake
08:33 Revision 84f3b664 (github): Busy Mode|API|libcommon: Busy transition frame is rendered rather than grabbed
This commit changes how the “screen capture” is done for busy mode.
Instead of taking a screen shot of everything in ...
skyjake
08:24 Revision ac066db1 (github): Merge pull request #9 from cmbruns/oculus-rift
Oculus rift skyjake
03:59 Revision 493b5405 (github): Rift working on Linux (but it segfaults when leaving rift mode)
cmbruns
00:49 Revision 411ce5a7 (github): Merge branch 'oculus-rift' of https://github.com/skyjake/Doomsday-Engine into oculus-rift
cmbruns
00:46 Revision 5b38f52a (github): Better comment
cmbruns

2013-11-19

23:36 Revision e846b9b2 (github): Refactor|Resources: Renamed resource/sprites.h; cleanup
danij
21:56 Revision e32f4be2 (github): Refactor|Resources: Moved sprites to ResourceSystem
danij
18:40 Revision e00f4f16 (github): Merge branch 'oculus-rift' of ssh://github.com/skyjake/Doomsday-Engine into oculus-rift
skyjake
18:35 Revision 841c23bb (github): Fixed|libgui|Windows: Missing exports
skyjake
17:57 Revision 88bacf61 (github): Merge branch 'oculus-rift' of ssh://Architecture.local/Users/jaakko/Projects/deng into oculus-rift
skyjake
11:49 Revision a0a3c517 (github): Fixed|Windows|Client|GL: Order of includes
skyjake
10:52 Revision 8d66a20a (github): Merge branch 'oculus-rift' of github.com:skyjake/Doomsday-Engine into oculus-rift
skyjake
10:46 Revision 1d7f146a (github): Cleanup: SDL is no longer needed (except for joystick and SDL_mixer)
skyjake
10:43 Revision 1b7834b9 (github): Fixed|Unix|GL: Fetching GL entrypoints
When linking against libGL, only OpenGL 1.x functionality is available.
Later versions of the API (as well as extensi...
skyjake
08:02 Revision e2b65aea (github): Fixed|qmake: Warning about missing header files
The convenience headers DrawList(s) were not using the correct case. skyjake
04:24 Revision 88e221ee (github): Avoid confusing segfault in Ubuntu linux
cmbruns
03:34 Revision e604bb1d (github): Merge branch 'master' of https://github.com/skyjake/Doomsday-Engine into oculus-rift
cmbruns

2013-11-18

21:06 Revision 97cca147 (github): UI|Busy Mode|Client: Removed additional UI root for busy mode
Busy mode now uses the same widget tree as the normal UI, meaning
that the task bar, notifications, and other game-un...
skyjake
21:04 Revision b090591d (github): UI|Client: Buttons and line editors can be disabled
skyjake
21:03 Revision a0559b5f (github): Refactor|libdeng2|Widgets: Checking for behavior flags in ancestors
Both the ‘Hidden’ and ‘Disabled’ flags are inherited from parents. skyjake
20:03 Revision c58a798d (github): Busy Mode: Drawing game widgets to texture for busy transition
Instead of grabbing a screenshot, which unavoidably is already
affected by VR transforms, we will now render the game...
skyjake
18:23 Revision 45e1ae85 (github): Merge branch 'oculus-rift' of github.com:skyjake/Doomsday-Engine into low-latency-input
skyjake
18:17 Revision 2c0c73c5 (github): Merge branch 'master' into oculus-rift
skyjake
18:16 Revision e2b089ea (github): Renderer|FX|LensFlares: Drawing a white quad
Next: texturing. skyjake
17:50 Revision 5528f3d1 (github): Refactor|RenderSystem: Moved the shader bank to RenderSystem, added renderer.pack
Shaders, appearance profiles, and other rendering-related files will
now be collected into “renderer.pack”.
The GLSh...
skyjake
17:10 Revision 8d7b84cb (github): Renderer|FX|LensFlares: Aspect correction in view space
Calculate the appropriate view unit vector. This is dependent on the
GL viewport.
skyjake
15:59 Revision 314e57a2 (github): Renderer|FX: Added missing model-view transformation in fx::LensFlares
Duh, the projection alone isn’t enough… skyjake
15:55 Revision d8c8b73b (github): Merge branch 'oculus-rift' of github.com:skyjake/Doomsday-Engine into oculus-rift
skyjake
14:07 Revision 12441fc2 (github): Refactor|Resources: Cleaned up Sprite resource building
danij
04:01 Revision 9176ccf2 (github): Refactor|Resources: Continued remodeling sprite resource management
danij
02:56 Revision 22cb9836 (github): Refactor|Resources: Began remodeling Sprite resource management
danij

2013-11-17

22:25 Revision d00ca4d3 (github): Renderer|FX: Working on basic lens flare shader rendering
Trying to get a simple white quad to appear on screen. This is not
quite working yet.
skyjake
22:23 Revision 15de061b (github): Renderer|FX: Added a convenience method for accessing GLShaderBank
skyjake
22:22 Revision 9f99a1a0 (github): Refactor|GL: Moved 3D projection matrix to its own function
skyjake
22:21 Revision 9fb12ad5 (github): libdeng2|Vector: Added a method for xzy swapping
skyjake
15:10 Revision 8e402596 (github): Console|Resources|Client: Applied rich formatting to "listmaterials" output; cleanup
danij
13:57 Revision 20a5b2ac (github): Refactor|Resources: Hide internal resource collection mechanics at API level
danij
12:36 Revision 67b00b7c (github): Console|Resources|Client: Applied rich formatting to "listtextures" output; cleanup
danij
10:33 Revision 310a45de (github): Console|Resources|Client: Applied rich formatting to "inspecttexture" output
danij
09:16 Revision 9a21921a (github): Server: Fix build (no qtgui, thus no QColor)
danij
08:54 Revision f2b01e43 (github): Console|Resources|Client: Applied rich formatting to "listfonts" output
danij
06:54 Revision 9cf72abb (github): ColorPalette: Cleanup
Also added a convenient method to convert a color from the palette
to a QColor instance.
danij
06:23 Revision be776c42 (github): Refactor|ColorPalette: Extracted ColorTableReader from ColorPalette
danij
03:35 Revision 0fd493a3 (github): Typos
danij
03:08 Revision e351b4fd (github): ResourceSystem|Client: Observe ColorPalette::ColorTableChange
When the color table changes we need to schedule texture updates. danij
02:50 Revision d8cfa8dc (github): Refactor|Resources: ResourceSystem has ownership of color palettes
danij

2013-11-16

22:26 Revision fe74d700 (github): Refactor|Resources: Began remodeling ColorPalette management
danij
09:53 Revision ed5af01d (github): Refactor|ColorPalette|Resources: Translated ColorPalette to C++
danij
09:41 Revision 1265ad8e (github): Client|libdeng2: Replaced use of glFrustum with Matrix4::frustum()
In the long run, we must stop using OpenGL matrix functions as they
are not present in GLES.
skyjake
06:11 Revision dffd3728 (github): Refactor|Resources: Removed 's' suffix from animgroups.cpp/h
danij
06:01 Revision 5d9c3ffd (github): ResourceSystem: Cleanup
danij
05:37 Revision ac652618 (github): Refactor|Resources: ResourceSystem has ownership of animation groups
danij
03:27 Revision ffeee152 (github): Refactor|Resources: Moved rest of r_data.cpp to api_resource.cpp; cleanup
danij
02:18 Revision 595957d4 (github): Refactor: ResourceSystem has ownership of the Materials collection
TODO: Clear the necessary resource schemes on engine reset/game load. danij
00:54 Revision c15c6b0a (github): BitmapFont|Client: Cleanup
danij
00:27 Revision 0f552c3f (github): BitmapFont|Client: Fixed inverted glyph geometry
danij
00:09 Revision aa658567 (github): Documentation|Fonts|Textures: Minor apidoc cleanup
danij
 

Also available in: Atom