sheik: enable translucency
This commit is contained in:
parent
1c75f3bc9f
commit
04785a23a3
@ -31,7 +31,7 @@
|
|||||||
void transfer_scene(float theta)
|
void transfer_scene(float theta)
|
||||||
{
|
{
|
||||||
const uint32_t parameter_control_word = para_control::para_type::polygon_or_modifier_volume
|
const uint32_t parameter_control_word = para_control::para_type::polygon_or_modifier_volume
|
||||||
| para_control::list_type::opaque
|
| para_control::list_type::translucent
|
||||||
| obj_control::col_type::intensity_mode_1
|
| obj_control::col_type::intensity_mode_1
|
||||||
| obj_control::texture
|
| obj_control::texture
|
||||||
| obj_control::gouraud;
|
| obj_control::gouraud;
|
||||||
@ -44,8 +44,8 @@ void transfer_scene(float theta)
|
|||||||
struct object * object = sheik_model.object[j];
|
struct object * object = sheik_model.object[j];
|
||||||
struct material_descriptor * mat = &material[object->material];
|
struct material_descriptor * mat = &material[object->material];
|
||||||
|
|
||||||
const uint32_t tsp_instruction_word = tsp_instruction_word::src_alpha_instr::one
|
const uint32_t tsp_instruction_word = tsp_instruction_word::src_alpha_instr::src_alpha
|
||||||
| tsp_instruction_word::dst_alpha_instr::zero
|
| tsp_instruction_word::dst_alpha_instr::inverse_src_alpha
|
||||||
| tsp_instruction_word::fog_control::no_fog
|
| tsp_instruction_word::fog_control::no_fog
|
||||||
| tsp_instruction_word::texture_shading_instruction::modulate
|
| tsp_instruction_word::texture_shading_instruction::modulate
|
||||||
| tsp_instruction_word::texture_u_size::from_int(mat->pixel.width)
|
| tsp_instruction_word::texture_u_size::from_int(mat->pixel.width)
|
||||||
@ -166,16 +166,16 @@ void main()
|
|||||||
serial::init(4);
|
serial::init(4);
|
||||||
constexpr uint32_t ta_alloc = ta_alloc_ctrl::pt_opb::no_list
|
constexpr uint32_t ta_alloc = ta_alloc_ctrl::pt_opb::no_list
|
||||||
| ta_alloc_ctrl::tm_opb::no_list
|
| ta_alloc_ctrl::tm_opb::no_list
|
||||||
| ta_alloc_ctrl::t_opb::no_list
|
| ta_alloc_ctrl::t_opb::_32x4byte
|
||||||
| ta_alloc_ctrl::om_opb::no_list
|
| ta_alloc_ctrl::om_opb::no_list
|
||||||
| ta_alloc_ctrl::o_opb::_32x4byte;
|
| ta_alloc_ctrl::o_opb::no_list;
|
||||||
|
|
||||||
constexpr int render_passes = 1;
|
constexpr int render_passes = 1;
|
||||||
constexpr struct opb_size opb_size[render_passes] = {
|
constexpr struct opb_size opb_size[render_passes] = {
|
||||||
{
|
{
|
||||||
.opaque = 32 * 4,
|
.opaque = 0,
|
||||||
.opaque_modifier = 0,
|
.opaque_modifier = 0,
|
||||||
.translucent = 0,
|
.translucent = 32 * 4,
|
||||||
.translucent_modifier = 0,
|
.translucent_modifier = 0,
|
||||||
.punch_through = 0
|
.punch_through = 0
|
||||||
}
|
}
|
||||||
@ -240,10 +240,7 @@ void main()
|
|||||||
if (core >= 0) {
|
if (core >= 0) {
|
||||||
// core = 1 ; core = 0
|
// core = 1 ; core = 0
|
||||||
// ta = 0 ; ta = 1
|
// ta = 0 ; ta = 1
|
||||||
ta_wait_opaque_list();
|
ta_wait_translucent_list();
|
||||||
system.ISTNRM = istnrm::end_of_render_tsp
|
|
||||||
| istnrm::end_of_render_isp
|
|
||||||
| istnrm::end_of_render_video;
|
|
||||||
|
|
||||||
core_start_render2(texture_memory_alloc::region_array[core].start,
|
core_start_render2(texture_memory_alloc::region_array[core].start,
|
||||||
texture_memory_alloc::isp_tsp_parameters[core].start,
|
texture_memory_alloc::isp_tsp_parameters[core].start,
|
||||||
@ -255,7 +252,6 @@ void main()
|
|||||||
|
|
||||||
// core = -1 ; core = 1 ; core = 0
|
// core = -1 ; core = 1 ; core = 0
|
||||||
// ta = 0 ; ta = 0 ; ta = 1
|
// ta = 0 ; ta = 0 ; ta = 1
|
||||||
system.ISTNRM = istnrm::end_of_transferring_opaque_list;
|
|
||||||
ta_polygon_converter_init2(texture_memory_alloc::isp_tsp_parameters[ta].start,
|
ta_polygon_converter_init2(texture_memory_alloc::isp_tsp_parameters[ta].start,
|
||||||
texture_memory_alloc::isp_tsp_parameters[ta].end,
|
texture_memory_alloc::isp_tsp_parameters[ta].end,
|
||||||
texture_memory_alloc::object_list[ta].start,
|
texture_memory_alloc::object_list[ta].start,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user