forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Рендер с большим разрешением (http://forum.boolean.name/showthread.php?t=21041)

DonLeno 12.03.2025 23:18

Рендер с большим разрешением
 
Здравствуйте.
Подскажите пожалуйста, как мне сделать renderworld, но с разрешением экрана больше чем у меня фактически (такое вообще возможно?). То есть у меня ноутбук и разрешение экрана 1366*768, а можно отрендерить 2000*2000?

Уточнение: нужно для захвата большей области сцены для создания освещения. Может есть возможности при работе с камерой, или с каким нибудь буфером?

Arton 05.08.2025 22:49

Ответ: Рендер с большим разрешением
 
В самом Блице нельзя насколько я знаю, будет всё равно ужато до размера монитора.

Можно через панель настроек Nvidia выставить разрешение больше чем поддерживает монитор. Оно буде вписываться в экран, всё станет мелким, но захватываться буфер будет по разрешению окна.
Думаю таким образом можно запустить Блиц. Но надо учитывать что у ванильного ограничения что-то типо 2048x2048.

Не знаю можно ли такое провернуть через панель AMD.
Но возможно есть утилиты которые такое делают на любом железе.


Хотя, если нет необходимости видеть всё на экране. То запустить в оконном режиме (окно больше монитора уедет за границу), в самом Блице захватить буфер и сохранить.
SaveBuffer(FrontBuffer(), "screenshot.bmp")

leshiyru70 13.08.2025 22:29

Ответ: Рендер с большим разрешением
 
Привет DonLeno ( и где вы только такие псевдонимы берёте )) ). В чистом блице это некатит, дело в том что он берёт из памяти действительно то что туда помещается. Если быть точным, то да-же возможно захватить в оконном режиме больше определённого окна. Делал нечто подобное ещё на XP. Но не более вашего разрешения экрана. Тебе DonLeno если в чистом блице прийдётся всё-же программно это дло решать.

Randomize 14.08.2025 15:15

Ответ: Рендер с большим разрешением
 
Супер давно не открывал блиц, но что-то мне подсказывает, что задуманное возможно сделать через создание второй камеры и специального текстурного буфера, куда будем рендерить в более высоком разрешении, эту текстуру надо наложить на квад, который будет рисоваться основной камерой.
Код, примерно такой:
PHP код:

Graphics3D 800, 600, 32, 2

; ---------- Настройка ----------
Local screenW = 800
Local screenH 
= 600
Local scaleFactor 
= 2
Local highResW 
= screenW * scaleFactor
Local highResH 
= screenH * scaleFactor

; ---------- Текстура рендера ----------
Local renderTex = CreateTexture(highResW, highResH, 256)

; ---------- 
Камера сцены ----------
Local sceneCam = CreateCamera()
CameraViewport(sceneCam, 0, 0, highResW, highResH)

; ---------- 
Сцена ----------
Local light = CreateLight()
Local cube = CreateCube()
PositionEntity cube, 0, 0, 5

; ---------- Квад вручную через CreateMesh ----------
Local screenQuad = CreateScreenQuad(renderTex)

; ---------- 
Камера отображения ----------
Local screenCam = CreateCamera()
CameraProjMode screenCam, 0 ; ортографическая проекция
CameraClsMode screenCam
, False, False
PositionEntity screenCam
, 0, 0, 0
PositionEntity screenQuad
, 0, 0, 1

; ---------- Основной цикл ----------
While 
Not KeyDown(1)
    
TurnEntity cube, 0, 1, 0

    
; Рендерим сцену в текстуру
    SetBuffer TextureBuffer
(renderTex)
    
RenderWorld(sceneCam)
    
CameraToTex(sceneCam, renderTex)

    ; 
Отображаем quad с текстурой
    SetBuffer BackBuffer
()
    
Cls
    RenderWorld
(screenCam)

    
Flip
Wend
End

; ---------- Функция создания quad’а вручную ----------
Function 
CreateScreenQuad(tex)
    
mesh = CreateMesh()
    
surf = CreateSurface(mesh)

    ; 
Вершины
    v0 
= AddVertex(surf, -1,  1, 0, 0, 0)
    
v1 = AddVertex(surf, -1, -1, 0, 0, 1)
    
v2 = AddVertex(surf,  1, -1, 0, 1, 1)
    
v3 = AddVertex(surf,  1,  1, 0, 1, 0)

    ; 
Два треугольника
    AddTriangle
(surf, v0, v1, v2)
    
AddTriangle(surf, v0, v2, v3)

    ; 
Наложим текстуру
    EntityTexture
(mesh, tex)
    
EntityFX(mesh, 1) ; отключить culling
    ScaleEntity
(mesh, screenW / 2.0, screenH / 2.0, 1)
    Return 
mesh
End 
Function 

За работосопсобность не ручаюсь, но смысл способа понять можно. При должном желании это можно допилить. У меня есть сомнения по поводу того, позволяет ли CameraViewport сделать размер рисуемого прямоугольника больше размера окна, делегирую поск ответа на данный вопрос владельцам блица, проверяйте, господа

DonLeno 12.09.2025 22:06

Ответ: Рендер с большим разрешением
 
Arton, Randomize!!
Спасибо большое за ваши ответы. Захожу на форум ради поиска и долго ответов не было. Я думал что здесь уже никого))
Попробую протестить ваши идеи.

To Randomize - в функции Renderworld нельзя передавать камеру. Но можно свою функцию обернуть вокруг рендерворлд.

Thx! Теперь буду еще задавать вопросы


Часовой пояс GMT +4, время: 20:14.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot