I'm on 2 gb of ram with a shitty video card so it should run. CPU and RAM are more important than GPU. I'd say RAM is more important than CPU because the CPU is what assigns and reassigns the RAM, so if you have a 2.60ghz processor, and 1 gb of ram, you're going to be a lot slower than you should be.
This does not make much sense at all. The CPU allocating memory to a process has nothing to do with RAM anymore since the development of Virtual Memory. Virtual memory is allocated in pages to processes and kept track of by the operating system. For efficiency it usually does places these pages into memory when allocated but any free page of memory will suffice (the memory is only broken into pages of a standard size). When a process reads from an address in its virtual memory space, it resolves it into a page identifier and eventually into a physical location in memory. It is completly possible that page boundries which are treated by the code of a process as being next to each other are physically mapped to addresses separated by many pages of other processes inbetween them. It depends entirly on which pages are free at the time the page is resolved into memory. Less used pages can be offloaded from memory into backing storage such as a hard disk to free memory page space for new or more needed pages (page faults) from any process. The working set is the actual quantity of data a process has loaded into memory. Almost all applications have a much larger virtual memory size compared to their working set. It is easilly possible for a program that has a 2GB virtual memory size to run flawlessly on a system with only 1 GB of memory if the program only needs a 512MB working set to function efficiently. Performance problems occur only when all a system's memory has been filled with pages that are being used often resulting in a lot of page faults. A page fault is when pages belonging to a process's virtual memory have been offloaded to backing storage yet are suddenly required by a thread so need to be resolved back into memory. Page faults occur all the time even with insane quantities of memory but these are very minor and often within memory entirly. Once a system runs out of memory due to the quantity being used by process's as their working set then critical page faults occur which not only require the unloading of page to backing storage but also the recall of a page from backing storage. For exceeding the memory a little it can often be resolved by the OS automatically adjusting the working set of programs (if memory is readilly available pages that are virtually never used can remain in memory). If you overshoot your memory by a large margine then page thrashing will occur which will bottlekneck performance back to that of a system from the 1990s.
Increasing the quantity of memory will have no effect on performance unless you are fully utalizing all the memory you currently have. The exception is extra memory can improve opperating system performance by allowing more data to be cached but this should have no effect on process performance outside of initial startup and during file I/O. Increasing memory clock on the other hand can improve system performance as it reduces the clock cycle wastage of a processor in the case of an internal cache miss or fault but larger caches and better pipelining reduces the gain from this.
Most likely it's because I don't have a vertex shader.
You will need more than 1 in any case. Performance cards come with 100s of geometry shaders (capable of functioning as vertex shaders).
I advise trying to find the source of the bottlekneck since you seem so good with computers. In windows systems you can use the performance monitor tool to get various quantities and rates of internal opperations. Your graphic solutions provider should allow some way of diagnosing performance which should help identify bottleknecks. Remember that graphic drivers also allow you to set various render qualities which have an effect on performance (eg you should not be trying to use AA and AF on your system as both those are very demanding and configurable in most graphic drivers).
The type of performance problem can also help with a diagnosis. If it is stuttering from time to time (such as locking up for 5 seconds) and then performing fine it is likly I/O related such as for file I/O which can be the process loading a file or a page fault.
If it is continious persistant but poor performance (low frame rate) it is likly a bottlekneck in how computationally powerful the system is (like CPU is not working fast enough for the load or a bus has too much traffic running through it).
Do remember that antivirus programs do add overhead so it is possible that a system without an antivirus will run a game better than a system with one.