Remilia Scarlet Posted January 24, 2021 I wasn't quite sure where to put this... CL-DoomView is a Doom level viewer I wrote in Common Lisp over the past few days. I've never really written OpenGL code before, nor have I ever really done any graphics programming save for the usual "draw a spinning triangle" sort of thing. But it's something I've wanted to do for a while now. This toy level viewer is the result ^_^ There's no binaries available because there's no command line interface yet (soon, though - you launch it via a REPL right now), and I'm not sure how I'd go about making a Windows binary with SBCL anyway. But the source code is all available here if you want to take a crack at building it. You'll need SBCL to build it - it might work with ClozureCL as well, but I haven't tested it. It also relies on a library I've been writing called Dwaddle, which is used to load Doom data into Common Lisp (it's also a set of command line tools I use to do stuff like make map images and remove unused textures from my pk3 files). It definitely isn't perfect yet. Two-sided/unpegged lines aren't aligned properly in the vertical direction yet, and neither sprites nor masked textures aren't drawn yet since I need to implement transparency properly in Dwaddle. But it does run smoothly! It technically support external maps and UDMF levels as well, but I have all of that disabled right now until I get the command line implemented. So just original IWAD viewing or maps with completely new TEXTURE1/2 lumps for now. Also, GL Nodes and GL_PVS data MUST BE PRESENT for any level you want to view, including the original IWAD levels. These can be built using AJBSP and glVis, respectively. .gwa files will be supported soon, too. Anyway, just something I built as a fun diversion and to learn a tiny bit of oldschool OpenGL over the past 5-6 days ^_^ 15 Quote Share this post Link to post
MFG38 Posted January 24, 2021 The pink void is a nice touch. Was the color a conscious decision or did it just sort of happen? An odd question, I know, but I'm just curious. :P 1 Quote Share this post Link to post
Doom-X-Machina Posted January 24, 2021 1 minute ago, MFG38 said: The pink void is a nice touch. Always did like a nice pink void... 0 Quote Share this post Link to post
Remilia Scarlet Posted January 24, 2021 1 minute ago, MFG38 said: The pink void is a nice touch. Was the color a conscious decision or did it just sort of happen? An odd question, I know, but I'm just curious. :P Conscious decision :-P I wanted something eye-searingly obvious so that I could easily see gaps earlier on when I was figuring out how to render the surfaces. 0 Quote Share this post Link to post
MFG38 Posted January 24, 2021 1 minute ago, Remilia Scarlet said: Conscious decision :-P I wanted something eye-searingly obvious so that I could easily see gaps earlier on when I was figuring out how to render the surfaces. Right, makes sense. 1 Quote Share this post Link to post
Zero the Red Posted January 24, 2021 (edited) Looks very nice! I guess it would extra-cool if the skies are rendered too, but no pressure, The viewer already appears to be doing a good job. About the pink void... it is quite interesting :p Edited January 24, 2021 by Zero the Red 1 Quote Share this post Link to post
Remilia Scarlet Posted January 24, 2021 1 minute ago, Zero the Red said: I guess it would extra-cool if the skies are rendered too, Ahh yeah, I forgot to mention I haven't implemented this yet. I have an idea on how to do it, though. 1 Quote Share this post Link to post
lakersforce Posted January 24, 2021 Can view Doom maps from Emacs - check :) 2 Quote Share this post Link to post
ketmar Posted January 24, 2021 4 hours ago, Remilia Scarlet said: I have an idea on how to do it, though. the easiest way is to simply collect all visible sky surfaces, render them in a separate pass with stencil increment, then set your view matrix as you need to, and render the skies masked by created stencil. you will also need to do something to make sky textures higher, to allow looking up/down. either create some more pixels by averaging and blurind away top/down edges, or create something like "sky sphere" (this is what Vavoom does, for example). separate pass is needed to have proper depth masking. of course, there are more ways to do that, but 2-pass rendering with stencils is the easiest one, i believe, because it will allow you to use any view matrix you want. 1 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.