Yes, but not quite.
Here are all the possible sets of endings for masculine adjectives:
╔════╦══════════╦══════════╦════════╦══════════╦══════════╦═════════╦══════════╦════════╗
║ ║ Hard ║ Hard ║ Soft ║ Sibilant ║ Sibilant ║ Glottal ║ Glottal ║ Ц ║
║ ║ ║ Stressed ║ ║ ║ Stressed ║ ║ Stressed ║ ║
╠════╬══════════╬══════════╬════════╬══════════╬══════════╬═════════╬══════════╬════════╣
║ N. ║ кра́сный ║ родно́й ║ си́ний ║ све́жий ║ большо́й ║ я́ркий ║ сухо́й ║ ку́цый ║
╠════╬══════════╬══════════╬════════╬══════════╬══════════╬═════════╬══════════╬════════╣
║ G. ║ кра́сного ║ родно́го ║ си́него ║ све́жего ║ большо́го ║ я́ркого ║ сухо́го ║ ку́цего ║
╠════╬══════════╬══════════╬════════╬══════════╬══════════╬═════════╬══════════╬════════╣
║ D. ║ кра́сному ║ родно́му ║ си́нему ║ све́жему ║ большо́му ║ я́ркому ║ сухо́му ║ ку́цему ║
╠════╬══════════╬══════════╬════════╬══════════╬══════════╬═════════╬══════════╬════════╣
║ I. ║ кра́сным ║ родны́м ║ си́ним ║ све́жим ║ больши́м ║ я́рким ║ сухи́м ║ ку́цым ║
╠════╬══════════╬══════════╬════════╬══════════╬══════════╬═════════╬══════════╬════════╣
║ P. ║ кра́сном ║ родно́м ║ си́нем ║ све́жем ║ большо́м ║ я́рком ║ сухо́м ║ ку́цем ║
╚════╩══════════╩══════════╩════════╩══════════╩══════════╩═════════╩══════════╩════════╝
As you correctly noted, the declension depends on the last consonant of the stem which can be either:
- Hard (кра́сный, родно́й)
- Soft (си́ний, ка́рий)
- Glottal: г, к, х
- Sibilant: ж, ш, щ, ч
- or ц.
And when it comes to endings starting with -о (-ого, -ом), the position of the stress: the -о will change into -е in unstressed positions after soft and sibilant consonants as well as ц.
If you want to be all the way analytical about this, just memorise the endings in the Hard
column (-ого, -ому, -ым, -ем), and then apply these replacements to the first vowel of the ending depending on the stem type and the stress:
╔═══════════╦═══════════╗
║ Hard or Ц ║ Otherwise ║
║ Either ║ Either ║
╠═══════════╬═══════════╣
║ -а ║ -я ║
╠═══════════╬═══════════╣
║ -у ║ -ю ║
╠═══════════╬═══════════╣
║ -ы ║ -и ║
╚═══════════╩═══════════╝
╔════════╦══════╦══════════╦══════════╦═════════════╦═════════╦════════╦══════════╗
║ Hard ║ Soft ║ Soft ║ Sibilant ║ Sibilant ║ Glottal ║ Ц ║ Ц ║
║ Either ║ Uns. ║ Stressed ║ Unstr. ║ Stressed ║ Either ║ Unstr. ║ Stressed ║
╠════════╬══════╬══════════╬══════════╬═════════════╬═════════╬════════╬══════════╣
║ -о ║ -е ║ -ё ║ -е ║ -о ║ -о ║ -е ║ -о ║
║ ║ ║ ║ ║ -ё in verbs ║ ║ ║ ║
╚════════╩══════╩══════════╩══════════╩═════════════╩═════════╩════════╩══════════╝
(This only works in oblique cases but usually we already know the nominative, right?)
To go from masculine to neuter/feminine/plural, change the ending to -ое/-ая/-ые and apply the above replacements to the first vowel of the ending.
The good news is these replacements are quite universal across the language and work for other parts of speech and as well as other parts of the word (suffixes):
ма́мой - ня́ней - ка́шей - лапшо́й - му́хой - землёй (feminine instrumental endings)
танцева́ть - пританцо́вывать, тушева́ть - затушёвывать (verbal suffix)
лило́вый - вишнёвый - бе́жевый - со́евый (adjectival suffix)
мо́ем - че́шем - печём - поём (3rd person plural verbal endings)
I know this could be a bit too much to take in one bite. In case you get lost there's software tools to help you out: